Skip to content

Commit 5948971

Browse files
committed
feat(casbin): add support to build upon multi role links
Signed-off-by: Kevin <kevin.dsouza@apica.io>
1 parent 133cffd commit 5948971

File tree

3 files changed

+14
-1
lines changed

3 files changed

+14
-1
lines changed

enforcer.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,9 @@ func (e *Enforcer) InitWithAdapter(modelPath string, adapter persist.Adapter) er
175175
func (e *Enforcer) InitWithModelAndAdapter(m model.Model, adapter persist.Adapter) error {
176176
e.adapter = adapter
177177

178+
// Global g* asserter
179+
m.AddDef("g", "*", "_, _")
180+
178181
e.model = m
179182
m.SetLogger(e.logger)
180183
e.model.PrintModel()

model/policy.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,16 @@ func (model Model) AddPolicy(sec string, ptype string, rule []string) error {
228228
assertion.Policy = append(assertion.Policy, rule)
229229
assertion.PolicyMap[strings.Join(rule, DefaultSep)] = len(model[sec][ptype].Policy) - 1
230230

231+
if sec == "g" {
232+
assertion, err := model.GetAssertion(sec, "*")
233+
if err != nil {
234+
return err
235+
} else {
236+
assertion.Policy = append(assertion.Policy, rule)
237+
assertion.PolicyMap[strings.Join(rule, DefaultSep)] = len(model[sec]["*"].Policy) - 1
238+
}
239+
}
240+
231241
hasPriority := false
232242
if _, ok := assertion.FieldIndexMap[constant.PriorityIndex]; ok {
233243
hasPriority = true

rbac_api.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -324,7 +324,7 @@ func (e *Enforcer) GetImplicitUsersForRole(name string, domain ...string) ([]str
324324
// GetPermissionsForUser("alice") can only get: [["alice", "data2", "read"]].
325325
// But GetImplicitPermissionsForUser("alice") will get: [["admin", "data1", "read"], ["alice", "data2", "read"]].
326326
func (e *Enforcer) GetImplicitPermissionsForUser(user string, domain ...string) ([][]string, error) {
327-
return e.GetNamedImplicitPermissionsForUser("p", "g", user, domain...)
327+
return e.GetNamedImplicitPermissionsForUser("p", "*", user, domain...)
328328
}
329329

330330
// GetNamedImplicitPermissionsForUser gets implicit permissions for a user or role by named policy.

0 commit comments

Comments
 (0)