mirror of
https://github.com/kataras/iris.git
synced 2026-01-11 05:55:57 +00:00
New basic auth middleware and GetRaw on User (godocs missing)
This commit is contained in:
@@ -33,6 +33,8 @@ var ErrNotSupported = errors.New("not supported")
|
||||
// - UserMap (a wrapper by SetUser)
|
||||
// - UserPartial (a wrapper by SetUser)
|
||||
type User interface {
|
||||
// GetRaw should return the raw instance of the user, if supported.
|
||||
GetRaw() (interface{}, error)
|
||||
// GetAuthorization should return the authorization method,
|
||||
// e.g. Basic Authentication.
|
||||
GetAuthorization() (string, error)
|
||||
@@ -92,6 +94,11 @@ type SimpleUser struct {
|
||||
|
||||
var _ User = (*SimpleUser)(nil)
|
||||
|
||||
// GetRaw returns itself.
|
||||
func (u *SimpleUser) GetRaw() (interface{}, error) {
|
||||
return u, nil
|
||||
}
|
||||
|
||||
// GetAuthorization returns the authorization method,
|
||||
// e.g. Basic Authentication.
|
||||
func (u *SimpleUser) GetAuthorization() (string, error) {
|
||||
@@ -179,6 +186,11 @@ type UserMap Map
|
||||
|
||||
var _ User = UserMap{}
|
||||
|
||||
// GetRaw returns the underline map.
|
||||
func (u UserMap) GetRaw() (interface{}, error) {
|
||||
return Map(u), nil
|
||||
}
|
||||
|
||||
// GetAuthorization returns the authorization or Authorization value of the map.
|
||||
func (u UserMap) GetAuthorization() (string, error) {
|
||||
return u.str("authorization")
|
||||
@@ -292,11 +304,17 @@ type (
|
||||
GetID() string
|
||||
}
|
||||
|
||||
userGetUsername interface {
|
||||
// UserGetUsername interface which
|
||||
// requires a single method to complete
|
||||
// a User on Context.SetUser.
|
||||
UserGetUsername interface {
|
||||
GetUsername() string
|
||||
}
|
||||
|
||||
userGetPassword interface {
|
||||
// UserGetPassword interface which
|
||||
// requires a single method to complete
|
||||
// a User on Context.SetUser.
|
||||
UserGetPassword interface {
|
||||
GetPassword() string
|
||||
}
|
||||
|
||||
@@ -319,13 +337,14 @@ type (
|
||||
// UserPartial is a User.
|
||||
// It's a helper which wraps a struct value that
|
||||
// may or may not complete the whole User interface.
|
||||
// See Context.SetUser.
|
||||
UserPartial struct {
|
||||
Raw interface{}
|
||||
userGetAuthorization
|
||||
userGetAuthorizedAt
|
||||
userGetID
|
||||
userGetUsername
|
||||
userGetPassword
|
||||
UserGetUsername
|
||||
UserGetPassword
|
||||
userGetEmail
|
||||
userGetRoles
|
||||
userGetToken
|
||||
@@ -336,61 +355,64 @@ type (
|
||||
var _ User = (*UserPartial)(nil)
|
||||
|
||||
func newUserPartial(i interface{}) *UserPartial {
|
||||
containsAtLeastOneMethod := false
|
||||
if i == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
p := &UserPartial{Raw: i}
|
||||
|
||||
if u, ok := i.(userGetAuthorization); ok {
|
||||
p.userGetAuthorization = u
|
||||
containsAtLeastOneMethod = true
|
||||
}
|
||||
|
||||
if u, ok := i.(userGetAuthorizedAt); ok {
|
||||
p.userGetAuthorizedAt = u
|
||||
containsAtLeastOneMethod = true
|
||||
}
|
||||
|
||||
if u, ok := i.(userGetID); ok {
|
||||
p.userGetID = u
|
||||
containsAtLeastOneMethod = true
|
||||
}
|
||||
|
||||
if u, ok := i.(userGetUsername); ok {
|
||||
p.userGetUsername = u
|
||||
containsAtLeastOneMethod = true
|
||||
if u, ok := i.(UserGetUsername); ok {
|
||||
p.UserGetUsername = u
|
||||
}
|
||||
|
||||
if u, ok := i.(userGetPassword); ok {
|
||||
p.userGetPassword = u
|
||||
containsAtLeastOneMethod = true
|
||||
if u, ok := i.(UserGetPassword); ok {
|
||||
p.UserGetPassword = u
|
||||
}
|
||||
|
||||
if u, ok := i.(userGetEmail); ok {
|
||||
p.userGetEmail = u
|
||||
containsAtLeastOneMethod = true
|
||||
}
|
||||
|
||||
if u, ok := i.(userGetRoles); ok {
|
||||
p.userGetRoles = u
|
||||
containsAtLeastOneMethod = true
|
||||
}
|
||||
|
||||
if u, ok := i.(userGetToken); ok {
|
||||
p.userGetToken = u
|
||||
containsAtLeastOneMethod = true
|
||||
}
|
||||
|
||||
if u, ok := i.(userGetField); ok {
|
||||
p.userGetField = u
|
||||
containsAtLeastOneMethod = true
|
||||
}
|
||||
|
||||
if !containsAtLeastOneMethod {
|
||||
return nil
|
||||
}
|
||||
// if !containsAtLeastOneMethod {
|
||||
// return nil
|
||||
// }
|
||||
|
||||
return p
|
||||
}
|
||||
|
||||
// GetRaw returns the original raw instance of the user.
|
||||
func (u *UserPartial) GetRaw() (interface{}, error) {
|
||||
if u == nil {
|
||||
return nil, ErrNotSupported
|
||||
}
|
||||
|
||||
return u.Raw, nil
|
||||
}
|
||||
|
||||
// GetAuthorization should return the authorization method,
|
||||
// e.g. Basic Authentication.
|
||||
func (u *UserPartial) GetAuthorization() (string, error) {
|
||||
@@ -422,7 +444,7 @@ func (u *UserPartial) GetID() (string, error) {
|
||||
|
||||
// GetUsername should return the name of the User.
|
||||
func (u *UserPartial) GetUsername() (string, error) {
|
||||
if v := u.userGetUsername; v != nil {
|
||||
if v := u.UserGetUsername; v != nil {
|
||||
return v.GetUsername(), nil
|
||||
}
|
||||
|
||||
@@ -432,7 +454,7 @@ func (u *UserPartial) GetUsername() (string, error) {
|
||||
// GetPassword should return the encoded or raw password
|
||||
// (depends on the implementation) of the User.
|
||||
func (u *UserPartial) GetPassword() (string, error) {
|
||||
if v := u.userGetPassword; v != nil {
|
||||
if v := u.UserGetPassword; v != nil {
|
||||
return v.GetPassword(), nil
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user