forked from tangled.org/core
this repo has no description

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
···
import (
"database/sql"
"fmt"
-
"path"
"strings"
adapter "github.com/Blank-Xu/sql-adapter"
···
e = some(where (p.eft == allow))
[matchers]
-
m = r.act == p.act && r.dom == p.dom && keyMatch2(r.obj, p.obj) && g(r.sub, p.sub, r.dom)
`
)
···
E *casbin.Enforcer
}
-
func keyMatch2(key1 string, key2 string) bool {
-
matched, _ := path.Match(key2, key1)
-
return matched
-
}
-
func NewEnforcer(path string) (*Enforcer, error) {
m, err := model.NewModelFromString(Model)
if err != nil {
···
}
e.EnableAutoSave(false)
-
-
e.AddFunction("keyMatch2", keyMatch2Func)
return &Enforcer{e}, nil
}
···
}
return permissions
-
}
-
-
// keyMatch2Func is a wrapper for keyMatch2 to make it compatible with Casbin
-
func keyMatch2Func(args ...interface{}) (interface{}, error) {
-
name1 := args[0].(string)
-
name2 := args[1].(string)
-
-
return keyMatch2(name1, name2), nil
}
func checkRepoFormat(repo string) error {
···
import (
"database/sql"
"fmt"
"strings"
adapter "github.com/Blank-Xu/sql-adapter"
···
e = some(where (p.eft == allow))
[matchers]
+
m = r.act == p.act && r.dom == p.dom && r.obj == p.obj && g(r.sub, p.sub, r.dom)
`
)
···
E *casbin.Enforcer
}
func NewEnforcer(path string) (*Enforcer, error) {
m, err := model.NewModelFromString(Model)
if err != nil {
···
}
e.EnableAutoSave(false)
return &Enforcer{e}, nil
}
···
}
return permissions
}
func checkRepoFormat(repo string) error {