mirror of
https://github.com/casdoor/casdoor.git
synced 2025-05-23 02:35:49 +08:00
fix: support RBAC With Domains/Tenants (#1333)
* feat: support RBAC With Domains/Tenants * fix: add verify for `UpdatePermission` * Update permission.go Co-authored-by: hsluoyz <hsluoyz@qq.com>
This commit is contained in:
parent
0856977b92
commit
78e45d07cf
@ -111,7 +111,27 @@ func GetPermission(id string) *Permission {
|
||||
return getPermission(owner, name)
|
||||
}
|
||||
|
||||
// checkPermissionValid verifies if the permission is valid
|
||||
func checkPermissionValid(permission *Permission) {
|
||||
enforcer := getEnforcer(permission)
|
||||
enforcer.EnableAutoSave(false)
|
||||
policies, groupingPolicies := getPolicies(permission)
|
||||
|
||||
if len(groupingPolicies) > 0 {
|
||||
_, err := enforcer.AddGroupingPolicies(groupingPolicies)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
_, err := enforcer.AddPolicies(policies)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
func UpdatePermission(id string, permission *Permission) bool {
|
||||
checkPermissionValid(permission)
|
||||
owner, name := util.GetOwnerAndNameFromId(id)
|
||||
oldPermission := getPermission(owner, name)
|
||||
if oldPermission == nil {
|
||||
|
@ -157,7 +157,12 @@ func removePolicies(permission *Permission) {
|
||||
func Enforce(permissionRule *PermissionRule) bool {
|
||||
permission := GetPermission(permissionRule.Id)
|
||||
enforcer := getEnforcer(permission)
|
||||
allow, err := enforcer.Enforce(permissionRule.V0, permissionRule.V1, permissionRule.V2)
|
||||
|
||||
request := []interface{}{permissionRule.V0, permissionRule.V1, permissionRule.V2}
|
||||
if permissionRule.V3 != "" {
|
||||
request = append(request, permissionRule.V3)
|
||||
}
|
||||
allow, err := enforcer.Enforce(request...)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
@ -167,7 +172,11 @@ func Enforce(permissionRule *PermissionRule) bool {
|
||||
func BatchEnforce(permissionRules []PermissionRule) []bool {
|
||||
var requests [][]interface{}
|
||||
for _, permissionRule := range permissionRules {
|
||||
requests = append(requests, []interface{}{permissionRule.V0, permissionRule.V1, permissionRule.V2})
|
||||
if permissionRule.V3 != "" {
|
||||
requests = append(requests, []interface{}{permissionRule.V0, permissionRule.V1, permissionRule.V2, permissionRule.V3})
|
||||
} else {
|
||||
requests = append(requests, []interface{}{permissionRule.V0, permissionRule.V1, permissionRule.V2})
|
||||
}
|
||||
}
|
||||
permission := GetPermission(permissionRules[0].Id)
|
||||
enforcer := getEnforcer(permission)
|
||||
|
Loading…
x
Reference in New Issue
Block a user