forked from tangled.org/core
Monorepo for Tangled

rbac: use standard casbin keymatcher

path.Match does not work as expected; but our ACLs currently do not make
use of these anyway. glob/wildcard matching can be implemented in the
future.

Changed files
+1 -17
rbac
+1 -17
rbac/rbac.go
··· 3 import ( 4 "database/sql" 5 "fmt" 6 - "path" 7 "strings" 8 9 adapter "github.com/Blank-Xu/sql-adapter" ··· 26 e = some(where (p.eft == allow)) 27 28 [matchers] 29 - m = r.act == p.act && r.dom == p.dom && keyMatch2(r.obj, p.obj) && g(r.sub, p.sub, r.dom) 30 ` 31 ) 32 ··· 34 E *casbin.Enforcer 35 } 36 37 - func keyMatch2(key1 string, key2 string) bool { 38 - matched, _ := path.Match(key2, key1) 39 - return matched 40 - } 41 - 42 func NewEnforcer(path string) (*Enforcer, error) { 43 m, err := model.NewModelFromString(Model) 44 if err != nil { ··· 61 } 62 63 e.EnableAutoSave(false) 64 - 65 - e.AddFunction("keyMatch2", keyMatch2Func) 66 67 return &Enforcer{e}, nil 68 } ··· 209 } 210 211 return permissions 212 - } 213 - 214 - // keyMatch2Func is a wrapper for keyMatch2 to make it compatible with Casbin 215 - func keyMatch2Func(args ...interface{}) (interface{}, error) { 216 - name1 := args[0].(string) 217 - name2 := args[1].(string) 218 - 219 - return keyMatch2(name1, name2), nil 220 } 221 222 func checkRepoFormat(repo string) error {
··· 3 import ( 4 "database/sql" 5 "fmt" 6 "strings" 7 8 adapter "github.com/Blank-Xu/sql-adapter" ··· 25 e = some(where (p.eft == allow)) 26 27 [matchers] 28 + m = r.act == p.act && r.dom == p.dom && r.obj == p.obj && g(r.sub, p.sub, r.dom) 29 ` 30 ) 31 ··· 33 E *casbin.Enforcer 34 } 35 36 func NewEnforcer(path string) (*Enforcer, error) { 37 m, err := model.NewModelFromString(Model) 38 if err != nil { ··· 55 } 56 57 e.EnableAutoSave(false) 58 59 return &Enforcer{e}, nil 60 } ··· 201 } 202 203 return permissions 204 } 205 206 func checkRepoFormat(repo string) error {