acl
acl copied to clipboard
Setup conditional checks
POC
package acl
type Condition struct {
parent *Condition
}
func NewCondition() *Condition {
return &Condition{}
}
func (condition *Condition) Require(rights... string) *Condition {
return condition
}
func (condition *Condition) Disallow(rights... string) *Condition {
return condition
}
func (condition *Condition) And(connection *Condition) *Condition {
return condition
}
func (condition *Condition) Or(connection *Condition) *Condition {
return connection
}
func (condition *Condition) IsAllowed(rights ...string) *Condition {
return condition
}
func (condition *Condition) End() *Condition {
return condition.parent
}
Usage
func main() {
condition := NewCondition().IsAllowed("right.a").Or(NewCondition().IsAllowed("right.b"))
if manager.IsAllowedByCondition(condition) {
// ...
}
}
awsome!