Versions in this module Expand all Collapse all v0 v0.4.1 Jul 9, 2021 v0.4.0 Nov 7, 2020 Changes in this version + const Exec + const None + const Read + const ReadExec + const ReadWrite + const ReadWriteExec + const Write + var AllActions = ReadWriteExec + var ErrAlreadyExists = errors.New("already exists") + var ErrInvalidEntity = errors.New("invlid entity, it should be one of user, role, article, and catetory") + var ErrInvalidGroup = errors.New("invalid group, it should be a role or a catetory") + var ErrInvalidMember = errors.New("invalid member, it should be a user or an article") + var ErrInvlaidObject = errors.New("invalid object, it should be an Article or Category") + var ErrInvlaidSubject = errors.New("invalid subject, it should be a User or Role") + var ErrNoObjectGrouping = errors.New("object grouping is not used") + var ErrNoSubjectGrouping = errors.New("subject grouping is not configured") + var ErrNotFound = errors.New("not found") + var ErrUnknownAction = errors.New("unknown action") + var ErrUnsupportedChange = errors.New("persister changes in a way unsupported") + type Action uint32 + func ParseAction(name string) (Action, error) + func ResetActions(names ...string) []Action + func (a Action) Difference(b Action) Action + func (a Action) Includes(b Action) bool + func (a Action) IsIn(b Action) bool + func (a Action) Split() []Action + func (a Action) String() string + type Article string + func (a Article) String() string + type Authorizer interface + type Category string + func (c Category) String() string + type Entity interface + String func() string + func ParseEntity(s string) (Entity, error) + type Group interface + func ParseGroup(s string) (Group, error) + type Grouping interface + type GroupingPersister interface + Insert func(Entity, Group) error + List func() ([]GroupingPolicy, error) + Remove func(Entity, Group) error + Watch func(context.Context) (<-chan GroupingPolicyChange, error) + type GroupingPolicy struct + Entity Entity + Group Group + type GroupingPolicyChange struct + Method PersistMethod + type GroupingReader interface + AllGroups func() (map[Group]struct{}, error) + AllMembers func() (map[Member]struct{}, error) + GroupsOf func(Entity) (map[Group]struct{}, error) + IsIn func(Member, Group) (bool, error) + MembersIn func(Group) (map[Member]struct{}, error) + type GroupingWriter interface + Join func(Entity, Group) error + Leave func(Entity, Group) error + RemoveGroup func(Group) error + RemoveMember func(Member) error + type Member interface + func ParseMember(s string) (Member, error) + type Object interface + func ParseObject(s string) (Object, error) + type Objector interface + ObjectJoin func(obj Object, cat Category) error + ObjectLeave func(obj Object, cat Category) error + Objects func() GroupingReader + RemoveArticle func(art Article) error + RemoveCategory func(cat Category) error + type Permission interface + PermissionsFor func(Subject) (map[Object]Action, error) + PermissionsOn func(Object) (map[Subject]Action, error) + Permit func(Subject, Object, Action) error + PermittedActions func(Subject, Object) (Action, error) + Revoke func(Subject, Object, Action) error + Shall func(Subject, Object, Action) (bool, error) + type PermissionPersister interface + Insert func(Subject, Object, Action) error + List func() ([]PermissionPolicy, error) + Remove func(Subject, Object) error + Update func(Subject, Object, Action) error + Watch func(context.Context) (<-chan PermissionPolicyChange, error) + type PermissionPolicy struct + Action Action + Object Object + Subject Subject + type PermissionPolicyChange struct + Method PersistMethod + type PersistMethod string + const PersistDelete + const PersistInsert + const PersistUpdate + type PresetPolicy func(Authorizer, Subject, Object, Action) bool + type Role string + func (r Role) String() string + type Subject interface + func ParseSubject(s string) (Subject, error) + type Subjector interface + RemoveRole func(role Role) error + RemoveUser func(user User) error + SubjectJoin func(sub Subject, role Role) error + SubjectLeave func(sub Subject, role Role) error + Subjects func() GroupingReader + type User string + func (u User) String() string