From 9a2800e3b3be7606bf616a196158829e6a8c6e7d Mon Sep 17 00:00:00 2001 From: Yang Luo Date: Sun, 4 Jun 2023 17:29:34 +0800 Subject: [PATCH] Add error to Enforce() --- controllers/enforcer.go | 36 +++++++++++++++++++++++++++++++---- object/permission_enforcer.go | 26 +++++++++++-------------- 2 files changed, 43 insertions(+), 19 deletions(-) diff --git a/controllers/enforcer.go b/controllers/enforcer.go index bb12bb98..b9cfd3cc 100644 --- a/controllers/enforcer.go +++ b/controllers/enforcer.go @@ -44,7 +44,15 @@ func (c *ApiController) Enforce() { } if permissionId != "" { - c.ResponseOk(object.Enforce(permissionId, &request)) + enforceResult, err := object.Enforce(permissionId, &request) + if err != nil { + c.ResponseError(err.Error()) + return + } + + res := []bool{} + res = append(res, enforceResult) + c.ResponseOk(res) return } @@ -69,7 +77,13 @@ func (c *ApiController) Enforce() { res := []bool{} for _, permission := range permissions { - res = append(res, object.Enforce(permission.GetId(), &request)) + enforceResult, err := object.Enforce(permission.GetId(), &request) + if err != nil { + c.ResponseError(err.Error()) + return + } + + res = append(res, enforceResult) } c.ResponseOk(res) } @@ -95,7 +109,15 @@ func (c *ApiController) BatchEnforce() { } if permissionId != "" { - c.ResponseOk(object.BatchEnforce(permissionId, &requests)) + enforceResult, err := object.BatchEnforce(permissionId, &requests) + if err != nil { + c.ResponseError(err.Error()) + return + } + + res := [][]bool{} + res = append(res, enforceResult) + c.ResponseOk(res) return } @@ -114,7 +136,13 @@ func (c *ApiController) BatchEnforce() { res := [][]bool{} for _, permission := range permissions { - res = append(res, object.BatchEnforce(permission.GetId(), &requests)) + enforceResult, err := object.BatchEnforce(permission.GetId(), &requests) + if err != nil { + c.ResponseError(err.Error()) + return + } + + res = append(res, enforceResult) } c.ResponseOk(res) } diff --git a/object/permission_enforcer.go b/object/permission_enforcer.go index 7f7e5af5..41558719 100644 --- a/object/permission_enforcer.go +++ b/object/permission_enforcer.go @@ -241,33 +241,29 @@ func removePolicies(permission *Permission) { type CasbinRequest = []interface{} -func Enforce(permissionId string, request *CasbinRequest) bool { +func Enforce(permissionId string, request *CasbinRequest) (bool, error) { permission, err := GetPermission(permissionId) if err != nil { - panic(err) + return false, err } enforcer := getEnforcer(permission) - - allow, err := enforcer.Enforce(*request...) - if err != nil { - panic(err) - } - return allow + return enforcer.Enforce(*request...) } -func BatchEnforce(permissionId string, requests *[]CasbinRequest) []bool { +func BatchEnforce(permissionId string, requests *[]CasbinRequest) ([]bool, error) { permission, err := GetPermission(permissionId) if err != nil { - panic(err) + res := []bool{} + for i := 0; i < len(*requests); i++ { + res = append(res, false) + } + + return res, err } enforcer := getEnforcer(permission) - allow, err := enforcer.BatchEnforce(*requests) - if err != nil { - panic(err) - } - return allow + return enforcer.BatchEnforce(*requests) } func getAllValues(userId string, fn func(enforcer *casbin.Enforcer) []string) []string {