3
0

Small pkg/rbac changes in exposed methods

This commit is contained in:
Tomaž Jerman
2020-11-17 16:00:52 +01:00
parent 651c93fecb
commit 3333394165
4 changed files with 17 additions and 16 deletions
+2 -2
View File
@@ -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 {
+5 -5
View File
@@ -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
+4 -4
View File
@@ -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
View File
@@ -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)),