Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions frontend.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,12 @@ import (
"encoding/json"
)

// CasbinJsGetPermissionForUser 生成 casbin.js 前端所需的数据载荷。
// 返回内容包含:
// - m: 模型的文本表示(model.ToText())
// - p: 所有策略规则,格式为 [ptype, ...params]
// - g: 所有分组/角色继承规则,格式为 [ptype, ...params]
// 说明:参数 user 仅为兼容保留,不在服务端用于过滤,前端可结合 casbin.js 进行用户态判定。
func CasbinJsGetPermissionForUser(e IEnforcer, user string) (string, error) {
model := e.GetModel()
m := map[string]interface{}{}
Expand Down
33 changes: 22 additions & 11 deletions frontend_old.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,26 @@

import "encoding/json"

func CasbinJsGetPermissionForUserOld(e IEnforcer, user string) ([]byte, error) {
policy, err := e.GetImplicitPermissionsForUser(user)
if err != nil {
return nil, err
}
permission := make(map[string][]string)
for i := 0; i < len(policy); i++ {
permission[policy[i][2]] = append(permission[policy[i][2]], policy[i][1])
}
b, _ := json.Marshal(permission)
return b, nil
func (e *Enforcer) GetImplicitPermissionsForUserWithDomain(user string, domain string) ([]byte, error) {
policy, err := e.GetImplicitPermissionsForUser(user, domain)
if err != nil {
return nil, err
}

permission := make(map[string][]string)
for _, p := range policy {

if len(p) < 3 {
return nil, fmt.Errorf("invalid policy entry: insufficient elements %v", p)

Check failure on line 29 in frontend_old.go

View workflow job for this annotation

GitHub Actions / test (1.19)

undefined: fmt

Check failure on line 29 in frontend_old.go

View workflow job for this annotation

GitHub Actions / test (1.19)

undefined: fmt

Check failure on line 29 in frontend_old.go

View workflow job for this annotation

GitHub Actions / benchmark (1.20)

undefined: fmt

Check failure on line 29 in frontend_old.go

View workflow job for this annotation

GitHub Actions / benchmark (1.21)

undefined: fmt

Check failure on line 29 in frontend_old.go

View workflow job for this annotation

GitHub Actions / benchmark (1.19)

undefined: fmt

Check failure on line 29 in frontend_old.go

View workflow job for this annotation

GitHub Actions / test (1.21)

undefined: fmt

Check failure on line 29 in frontend_old.go

View workflow job for this annotation

GitHub Actions / test (1.21)

undefined: fmt

Check failure on line 29 in frontend_old.go

View workflow job for this annotation

GitHub Actions / test (1.20)

undefined: fmt

Check failure on line 29 in frontend_old.go

View workflow job for this annotation

GitHub Actions / test (1.20)

undefined: fmt

Check failure on line 29 in frontend_old.go

View workflow job for this annotation

GitHub Actions / golangci

undefined: fmt) (typecheck)

Check failure on line 29 in frontend_old.go

View workflow job for this annotation

GitHub Actions / golangci

undefined: fmt) (typecheck)

Check failure on line 29 in frontend_old.go

View workflow job for this annotation

GitHub Actions / golangci

undefined: fmt
}
permission[p[2]] = append(permission[p[2]], p[1])
}

b, jsonErr := json.Marshal(permission)
if jsonErr != nil {
return nil, jsonErr
}

return b, nil
}

Loading