Small pkg/rbac changes in exposed methods
This commit is contained in:
+2
-2
@@ -21,10 +21,10 @@ const (
|
||||
Allow Access = 1
|
||||
|
||||
// Deny - Operation over a resource is denied
|
||||
Deny = 0
|
||||
Deny Access = 0
|
||||
|
||||
// Inherit - Operation over a resource is not defined, inherit
|
||||
Inherit = -1
|
||||
Inherit Access = -1
|
||||
)
|
||||
|
||||
func (r Rule) String() string {
|
||||
|
||||
@@ -2,8 +2,8 @@ package rbac
|
||||
|
||||
import "github.com/cortezaproject/corteza-server/pkg/slice"
|
||||
|
||||
// merge applies new rules (changes) to existing set and mark all changes as dirty
|
||||
func (set RuleSet) merge(rules ...*Rule) (out RuleSet) {
|
||||
// Merge applies new rules (changes) to existing set and mark all changes as dirty
|
||||
func (set RuleSet) Merge(rules ...*Rule) (out RuleSet) {
|
||||
var (
|
||||
o int
|
||||
olen = len(set)
|
||||
@@ -44,8 +44,8 @@ func (set RuleSet) merge(rules ...*Rule) (out RuleSet) {
|
||||
return
|
||||
}
|
||||
|
||||
// dirty returns list of changed (dirty==true) and deleted (Access==Inherit) rules
|
||||
func (set RuleSet) dirty() (inherited, rest RuleSet) {
|
||||
// Dirty returns list of changed (Dirty==true) and deleted (Access==Inherit) rules
|
||||
func (set RuleSet) Dirty() (inherited, rest RuleSet) {
|
||||
inherited, rest = RuleSet{}, RuleSet{}
|
||||
|
||||
for _, r := range set {
|
||||
@@ -61,7 +61,7 @@ func (set RuleSet) dirty() (inherited, rest RuleSet) {
|
||||
}
|
||||
|
||||
// reset dirty flag
|
||||
func (set RuleSet) clear() {
|
||||
func (set RuleSet) Clear() {
|
||||
_ = set.Walk(func(rule *Rule) error {
|
||||
rule.dirty = false
|
||||
return nil
|
||||
|
||||
@@ -72,12 +72,12 @@ func TestRuleSet_merge(t *testing.T) {
|
||||
|
||||
for _, sc := range sCases {
|
||||
// Apply changed and get update candidates
|
||||
mrg := sc.old.merge(sc.new...)
|
||||
del, upd := mrg.dirty()
|
||||
mrg := sc.old.Merge(sc.new...)
|
||||
del, upd := mrg.Dirty()
|
||||
|
||||
// Clear dirty flag so that we do not confuse DeepEqual
|
||||
del.clear()
|
||||
upd.clear()
|
||||
del.Clear()
|
||||
upd.Clear()
|
||||
|
||||
req.Equal(len(sc.del), len(del))
|
||||
req.Equal(len(sc.upd), len(upd))
|
||||
|
||||
+6
-5
@@ -2,11 +2,12 @@ package rbac
|
||||
|
||||
import (
|
||||
"context"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/cortezaproject/corteza-server/pkg/sentry"
|
||||
"github.com/pkg/errors"
|
||||
"go.uber.org/zap"
|
||||
"sync"
|
||||
"time"
|
||||
)
|
||||
|
||||
type (
|
||||
@@ -145,7 +146,7 @@ func (svc service) checkRules(wl Whitelist, rules ...*Rule) error {
|
||||
}
|
||||
|
||||
func (svc *service) grant(rules ...*Rule) {
|
||||
svc.rules = svc.rules.merge(rules...)
|
||||
svc.rules = svc.rules.Merge(rules...)
|
||||
}
|
||||
|
||||
// Watches for changes
|
||||
@@ -205,7 +206,7 @@ func (svc *service) Reload(ctx context.Context) {
|
||||
}
|
||||
|
||||
func (svc service) flush(ctx context.Context) (err error) {
|
||||
d, u := svc.rules.dirty()
|
||||
d, u := svc.rules.Dirty()
|
||||
|
||||
err = svc.store.DeleteRbacRule(ctx, d...)
|
||||
if err != nil {
|
||||
@@ -217,7 +218,7 @@ func (svc service) flush(ctx context.Context) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
u.clear()
|
||||
u.Clear()
|
||||
svc.rules = u
|
||||
svc.logger.Debug("flushed rules",
|
||||
zap.Int("updated", len(u)),
|
||||
|
||||
Reference in New Issue
Block a user