From 0b575ccf84e6fe9e7ab6365e7d54b06137937c9b Mon Sep 17 00:00:00 2001 From: Yang Luo Date: Sat, 13 Jan 2024 09:58:55 +0800 Subject: [PATCH] Refactor getAllValues() --- object/permission_enforcer.go | 43 ++++++++++++++++++++++++----------- 1 file changed, 30 insertions(+), 13 deletions(-) diff --git a/object/permission_enforcer.go b/object/permission_enforcer.go index 2b5c33cb..628f9829 100644 --- a/object/permission_enforcer.go +++ b/object/permission_enforcer.go @@ -308,7 +308,7 @@ func BatchEnforce(permission *Permission, requests [][]string, permissionIds ... return enforcer.BatchEnforce(interfaceRequests) } -func getAllValues(userId string, fn func(enforcer *casbin.Enforcer) []string) ([]string, error) { +func getEnforcers(userId string) ([]*casbin.Enforcer, error) { permissions, _, err := getPermissionsAndRolesByUser(userId) if err != nil { return nil, err @@ -320,7 +320,8 @@ func getAllValues(userId string, fn func(enforcer *casbin.Enforcer) []string) ([ } for _, role := range allRoles { - permissionsByRole, err := GetPermissionsByRole(role) + var permissionsByRole []*Permission + permissionsByRole, err = GetPermissionsByRole(role) if err != nil { return nil, err } @@ -328,29 +329,45 @@ func getAllValues(userId string, fn func(enforcer *casbin.Enforcer) []string) ([ permissions = append(permissions, permissionsByRole...) } - var values []string + var enforcers []*casbin.Enforcer for _, permission := range permissions { - enforcer, err := getPermissionEnforcer(permission) + var enforcer *casbin.Enforcer + enforcer, err = getPermissionEnforcer(permission) if err != nil { return nil, err } - values = append(values, fn(enforcer)...) + enforcers = append(enforcers, enforcer) } - - return values, nil + return enforcers, nil } func GetAllObjects(userId string) ([]string, error) { - return getAllValues(userId, func(enforcer *casbin.Enforcer) []string { - return enforcer.GetAllObjects() - }) + enforcers, err := getEnforcers(userId) + if err != nil { + return nil, err + } + + res := []string{} + for _, enforcer := range enforcers { + items := enforcer.GetAllObjects() + res = append(res, items...) + } + return res, nil } func GetAllActions(userId string) ([]string, error) { - return getAllValues(userId, func(enforcer *casbin.Enforcer) []string { - return enforcer.GetAllActions() - }) + enforcers, err := getEnforcers(userId) + if err != nil { + return nil, err + } + + res := []string{} + for _, enforcer := range enforcers { + items := enforcer.GetAllObjects() + res = append(res, items...) + } + return res, nil } func GetAllRoles(userId string) ([]string, error) {