acl icon indicating copy to clipboard operation
acl copied to clipboard

Setup conditional checks

Open m19c opened this issue 6 years ago • 1 comments

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) {
		// ...
	}
}

m19c avatar Oct 29 '18 14:10 m19c

awsome!

skovtunenko avatar Nov 01 '18 20:11 skovtunenko