Documentation ¶
Index ¶
Constants ¶
View Source
const ( MatchAll string = "*" MatchWildcard = "#" )
View Source
const ( PermissionAuthUserSelfWrite Permission = "auth.user.self.write" PermissionAuthUserCompanyWrite = "auth.user.company.write" PermissionAuthUserSelfRead = "auth.user.self.read" PermissionAuthUserCompanyRead = "auth.user.company.read" PermissionAuthRoleSelfWrite = "auth.role.self.write" PermissionAuthRoleCompanyWrite = "auth.role.company.write" PermissionAuthRoleSelfRead = "auth.role.self.read" PermissionAuthRoleCompanyRead = "auth.role.company.read" PermissionAuthUserInfoSelfWrite = "auth.user-info.self.write" PermissionAuthUserInfoCompanyWrite = "auth.user-info.company.write" PermissionAuthUserInfoSelfRead = "auth.user-info.self.read" PermissionAuthUserInfoCompanyRead = "auth.user-info.company.read" )
Variables ¶
View Source
var ( ErrCredentialNotMatched = errors.New("credential not matched") ErrIncompatibleHashVersion = errors.New("incompatible hash version") )
View Source
var (
ErrPermissionDenied = errors.New("permission denied")
)
View Source
var (
ErrUserDoesNotHaveAnyPermission = errors.New("user does not have any permission")
)
Functions ¶
This section is empty.
Types ¶
type Credentials ¶
func NewPasswordCredentials ¶
func NewPasswordCredentials(password string) (Credentials, error)
func (Credentials) ValidatePassword ¶
func (c Credentials) ValidatePassword(password string) error
type Permission ¶
type Permission = string
type Role ¶
type Role struct { ID string `json:"id"` Name string `json:"name"` Description string `json:"description"` Accesses []string `json:"accesses"` }
func (Role) IsAllowed ¶
func (r Role) IsAllowed(perm Permission) error
IsAllowed if Role's permissions matched the given permission return nil, otherwise ErrPermissionDenied time-complex = O(n*m) n = Accesses length m = permission's depth e.g. "auth.user.self.write" depth = 4
type User ¶
type User struct { Username string `json:"username"` Credentials *Credentials `json:"-"` Roles []Role `json:"roles"` IsActivated bool `json:"is_activated"` CreatedAt time.Time `json:"created_at"` }
func NewUser ¶
func NewUser(username string, cred Credentials) User
func (User) IsAllowed ¶
func (u User) IsAllowed(perm Permission) error
Click to show internal directories.
Click to hide internal directories.