Documentation
¶
Index ¶
- type AccessControl
- func (ac *AccessControl) AddEntities(entities ...*Entity)
- func (ac *AccessControl) AddEntity(entity *Entity) *AccessControl
- func (ac *AccessControl) AddResource(resource *Resource) *AccessControl
- func (ac *AccessControl) AddResources(resources ...*Resource)
- func (ac *AccessControl) Allow(entity *Entity, resource *Resource, permission Permission) *AccessControl
- func (ac *AccessControl) Can(entity *Entity, resource *Resource, permission Permission) bool
- func (ac *AccessControl) CanCreate(entity *Entity, resource *Resource) bool
- func (ac *AccessControl) CanDelete(entity *Entity, resource *Resource) bool
- func (ac *AccessControl) CanRead(entity *Entity, resource *Resource) bool
- func (ac *AccessControl) CanUpdate(entity *Entity, resource *Resource) bool
- func (ac *AccessControl) CreateEntity(id string) *Entity
- func (ac *AccessControl) CreateResource(id string) *Resource
- func (ac *AccessControl) Deny(entity *Entity, resource *Resource, permission Permission) *AccessControl
- func (ac *AccessControl) HasPermission(entity *Entity, resource *Resource, permission Permission) bool
- type Entity
- func (e *Entity) AddChildren(children ...*Entity)
- func (e *Entity) AddParents(parents ...*Entity)
- func (e *Entity) AddPerm(permission Permission, resource *Resource, enabled bool)
- func (e *Entity) AddPermAll(resource *Resource, enabled bool)
- func (e *Entity) AddPermCreate(resource *Resource, enabled bool)
- func (e *Entity) AddPermDelete(resource *Resource, enabled bool)
- func (e *Entity) AddPermRead(resource *Resource, enabled bool)
- func (e *Entity) AddPermUpdate(resource *Resource, enabled bool)
- func (e *Entity) Allow(resource *Resource, permissions ...Permission)
- func (e *Entity) CreateChild(id string) *Entity
- func (e *Entity) Deny(resource *Resource, permissions ...Permission)
- type Permission
- type Resource
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AccessControl ¶
AccessControl manages entities and resources, allowing permission assignment.
func NewAccessControl ¶
func NewAccessControl() *AccessControl
NewAccessControl initializes a new AccessControl instance.
Example:
ac := permission.NewAccessControl() fmt.Println(len(ac.Entities)) // Output: 0
func (*AccessControl) AddEntities ¶
func (ac *AccessControl) AddEntities(entities ...*Entity)
AddEntities adds multiple entities at once
Example:
ac := permission.NewAccessControl()
user1 := permission.NewEntity("user1")
user2 := permission.NewEntity("user1")
ac.AddEntities(user1, user2)
func (*AccessControl) AddEntity ¶
func (ac *AccessControl) AddEntity(entity *Entity) *AccessControl
AddEntity manually adds an entity to the access control system.
Example:
ac := permission.NewAccessControl()
user := permission.NewEntity("user1")
ac.AddEntity(user)
func (*AccessControl) AddResource ¶
func (ac *AccessControl) AddResource(resource *Resource) *AccessControl
AddResource manually adds a resource to the access control system.
Example:
ac := permission.NewAccessControl()
doc := permission.NewResource("document")
ac.AddResource(doc)
func (*AccessControl) AddResources ¶
func (ac *AccessControl) AddResources(resources ...*Resource)
AddResources adds multiple resources at once.
Example:
ac := permission.NewAccessControl()
res1 := permission.NewResource("res1")
res2 := permission.NewResource("res2")
ac.AddResources(res1, res2)
func (*AccessControl) Allow ¶
func (ac *AccessControl) Allow(entity *Entity, resource *Resource, permission Permission) *AccessControl
Allow grants a specific permission to an entity for a given resource.
Example:
ac := permission.NewAccessControl()
user := ac.CreateEntity("user1")
doc := ac.CreateResource("document")
ac.Allow(user, doc, pe
func (*AccessControl) Can ¶
func (ac *AccessControl) Can(entity *Entity, resource *Resource, permission Permission) bool
Can checks if an entity has a specific permission for a resource.
Example:
ac := permission.NewAccessControl()
user := ac.CreateEntity("user1")
doc := ac.CreateResource("document")
ac.Allow(user, doc, permission.Read)
fmt.Println(ac.Can(user, doc, permission.Read)) // Output: true
func (*AccessControl) CanCreate ¶
func (ac *AccessControl) CanCreate(entity *Entity, resource *Resource) bool
CanCreate checks if an entity has permission to create a resource.
Example:
ac := permission.NewAccessControl()
user := ac.CreateEntity("user1")
doc := ac.CreateResource("document")
ac.Allow(user, doc, permission.Create)
fmt.Println(ac.CanCreate(user, doc)) // Output: true
func (*AccessControl) CanDelete ¶
func (ac *AccessControl) CanDelete(entity *Entity, resource *Resource) bool
CanDelete checks if an entity has permission to delete a resource.
Example:
ac := permission.NewAccessControl()
user := ac.CreateEntity("user1")
doc := ac.CreateResource("document")
ac.Allow(user, doc, permission.DELETE)
fmt.Println(ac.CanDelete(user, doc)) // Output: true
func (*AccessControl) CanRead ¶
func (ac *AccessControl) CanRead(entity *Entity, resource *Resource) bool
CanRead checks if an entity has permission to read a resource.
Example:
ac := permission.NewAccessControl()
user := ac.CreateEntity("user1")
doc := ac.CreateResource("document")
ac.Allow(user, doc, permission.READ)
fmt.Println(ac.CanRead(user, doc)) // Output: true
func (*AccessControl) CanUpdate ¶
func (ac *AccessControl) CanUpdate(entity *Entity, resource *Resource) bool
CanUpdate checks if an entity has permission to update a resource.
Example:
ac := permission.NewAccessControl()
user := ac.CreateEntity("user1")
doc := ac.CreateResource("document")
ac.Allow(user, doc, permission.Update)
fmt.Println(ac.CanUpdate(user, doc)) // Output: true
func (*AccessControl) CreateEntity ¶
func (ac *AccessControl) CreateEntity(id string) *Entity
CreateEntity creates a new entity and adds it to the system.
Example:
ac := permission.NewAccessControl()
user := ac.CreateEntity("user1")
fmt.Println(user.ID) // Output: user1
func (*AccessControl) CreateResource ¶
func (ac *AccessControl) CreateResource(id string) *Resource
CreateResource creates a new resource and adds it to the system.
Example:
ac := permission.NewAccessControl()
res := ac.CreateResource("document")
fmt.Println(res.ID) // Output: document
func (*AccessControl) Deny ¶
func (ac *AccessControl) Deny(entity *Entity, resource *Resource, permission Permission) *AccessControl
Deny revokes a specific permission from an entity for a given resource.
Example:
ac := permission.NewAccessControl()
user := ac.CreateEntity("user1")
doc := ac.CreateResource("document")
ac.Deny(user, doc, permission.Read)
func (*AccessControl) HasPermission ¶
func (ac *AccessControl) HasPermission(entity *Entity, resource *Resource, permission Permission) bool
HasPermission verifies if an entity has permission for a resource.
Example:
ac := permission.NewAccessControl()
user := ac.CreateEntity("user1")
doc := ac.CreateResource("document")
ac.Allow(user, doc, permission.Read)
fmt.Println(ac.HasPermission(user, doc, permission.Read)) // Output: true
type Entity ¶
type Entity struct {
ID string
Parents []*Entity
Children []*Entity
Permission map[Permission]map[*Resource]bool
}
Entity represents a user, group, role (or what you want) with specific permissions.
func NewEntity ¶
NewEntity creates a new entity with default permission sets.
Example:
user := permission.NewEntity("user1")
fmt.Println(user.ID) // Output: user1
func (*Entity) AddChildren ¶
AddChildren associates child entities with the current entity.
Example:
admin := permission.NewEntity("admin")
user := permission.NewEntity("user")
admin.AddChildren(user)
func (*Entity) AddParents ¶
AddParents associates parent entities with the current entity.
Example:
admin := permission.NewEntity("admin")
user := permission.NewEntity("user")
user.AddParents(admin)
func (*Entity) AddPerm ¶
func (e *Entity) AddPerm(permission Permission, resource *Resource, enabled bool)
AddPerm sets or removes a specific permission for a resource.
func (*Entity) AddPermAll ¶
func (*Entity) AddPermCreate ¶
func (*Entity) AddPermDelete ¶
func (*Entity) AddPermRead ¶
func (*Entity) AddPermUpdate ¶
func (*Entity) Allow ¶
func (e *Entity) Allow(resource *Resource, permissions ...Permission)
Allow grants specified permissions for a resource to the entity.
Example:
user := permission.NewEntity("user")
res := permission.NewResource("file")
user.Allow(res, permission.Read, permission.Write)
func (*Entity) CreateChild ¶
CreateChild creates a child entity and assigns it as a descendant.
Example:
parent := permission.NewEntity("admin")
child := parent.CreateChild("user")
fmt.Println(child.ID) // Output: user
func (*Entity) Deny ¶
func (e *Entity) Deny(resource *Resource, permissions ...Permission)
Deny revokes specified permissions for a resource from the entity.
Example:
user := permission.NewEntity("user")
res := permission.NewResource("file")
user.Deny(res, permission.Read, permission.Write)
type Permission ¶
type Permission string
Permission represents different levels of access control.
const ( // Create allows an entity to create a resource. Create Permission = "CREATE" // Read allows an entity to read a resource. Read Permission = "READ" // Update allows an entity to modify a resource. Update Permission = "UPDATE" // Delete allows an entity to remove a resource. Delete Permission = "DELETE" // All grants full access to a resource. All Permission = "ALL" )
type Resource ¶
type Resource struct {
ID string
Parent *Resource
SubResources map[string]*Resource // Podresource podle názvu
Owners []*Entity // Vlastníci resource
}
Resource represents an entity that can be assigned permissions.
func NewResource ¶
NewResource initializes a new resource with the given ID.
Example:
doc := permission.NewResource("document")
fmt.Println(doc.ID) // Output: document
func (*Resource) AddOwners ¶
AddOwners assigns ownership of the resource to specific entities.
Example:
user := permission.NewEntity("user")
doc := permission.NewResource("document")
doc.AddOwners(user)
func (*Resource) CreateSub ¶
CreateSub generates a new sub-resource under the current resource.
Example:
website := permission.NewResource("website")
news := website.CreateSub("news")
fmt.Println(news.ID) // Output: news
func (*Resource) CreateSubs ¶
CreateSubs generates multiple sub-resources.
Example:
website := permission.NewResource("website")
website.CreateSub("news", "comments", "reviews")