feat: handle error when permission not found (#2012)

This commit is contained in:
June
2023-06-23 23:30:43 +07:00
committed by GitHub
parent 5c968ed1ce
commit 1780620ef4
2 changed files with 50 additions and 23 deletions

View File

@ -44,14 +44,26 @@ func (c *ApiController) Enforce() {
} }
if permissionId != "" { if permissionId != "" {
enforceResult, err := object.Enforce(permissionId, &request) permission, err := object.GetPermission(permissionId)
if err != nil { if err != nil {
c.ResponseError(err.Error()) c.ResponseError(err.Error())
return return
} }
res := []bool{} res := []bool{}
res = append(res, enforceResult)
if permission == nil {
res = append(res, false)
} else {
enforceResult, err := object.Enforce(permission, &request)
if err != nil {
c.ResponseError(err.Error())
return
}
res = append(res, enforceResult)
}
c.ResponseOk(res) c.ResponseOk(res)
return return
} }
@ -79,7 +91,13 @@ func (c *ApiController) Enforce() {
listPermissionIdMap := object.GroupPermissionsByModelAdapter(permissions) listPermissionIdMap := object.GroupPermissionsByModelAdapter(permissions)
for _, permissionIds := range listPermissionIdMap { for _, permissionIds := range listPermissionIdMap {
enforceResult, err := object.Enforce(permissionIds[0], &request, permissionIds...) firstPermission, err := object.GetPermission(permissionIds[0])
if err != nil {
c.ResponseError(err.Error())
return
}
enforceResult, err := object.Enforce(firstPermission, &request, permissionIds...)
if err != nil { if err != nil {
c.ResponseError(err.Error()) c.ResponseError(err.Error())
return return
@ -112,14 +130,32 @@ func (c *ApiController) BatchEnforce() {
} }
if permissionId != "" { if permissionId != "" {
enforceResult, err := object.BatchEnforce(permissionId, &requests) permission, err := object.GetPermission(permissionId)
if err != nil { if err != nil {
c.ResponseError(err.Error()) c.ResponseError(err.Error())
return return
} }
res := [][]bool{} res := [][]bool{}
res = append(res, enforceResult)
if permission == nil {
l := len(requests)
resRequest := make([]bool, l)
for i := 0; i < l; i++ {
resRequest[i] = false
}
res = append(res, resRequest)
} else {
enforceResult, err := object.BatchEnforce(permission, &requests)
if err != nil {
c.ResponseError(err.Error())
return
}
res = append(res, enforceResult)
}
c.ResponseOk(res) c.ResponseOk(res)
return return
} }
@ -141,7 +177,13 @@ func (c *ApiController) BatchEnforce() {
listPermissionIdMap := object.GroupPermissionsByModelAdapter(permissions) listPermissionIdMap := object.GroupPermissionsByModelAdapter(permissions)
for _, permissionIds := range listPermissionIdMap { for _, permissionIds := range listPermissionIdMap {
enforceResult, err := object.BatchEnforce(permissionIds[0], &requests, permissionIds...) firstPermission, err := object.GetPermission(permissionIds[0])
if err != nil {
c.ResponseError(err.Error())
return
}
enforceResult, err := object.BatchEnforce(firstPermission, &requests, permissionIds...)
if err != nil { if err != nil {
c.ResponseError(err.Error()) c.ResponseError(err.Error())
return return

View File

@ -246,27 +246,12 @@ func removePolicies(permission *Permission) {
type CasbinRequest = []interface{} type CasbinRequest = []interface{}
func Enforce(permissionId string, request *CasbinRequest, permissionIds ...string) (bool, error) { func Enforce(permission *Permission, request *CasbinRequest, permissionIds ...string) (bool, error) {
permission, err := GetPermission(permissionId)
if err != nil {
return false, err
}
enforcer := getEnforcer(permission, permissionIds...) enforcer := getEnforcer(permission, permissionIds...)
return enforcer.Enforce(*request...) return enforcer.Enforce(*request...)
} }
func BatchEnforce(permissionId string, requests *[]CasbinRequest, permissionIds ...string) ([]bool, error) { func BatchEnforce(permission *Permission, requests *[]CasbinRequest, permissionIds ...string) ([]bool, error) {
permission, err := GetPermission(permissionId)
if err != nil {
res := []bool{}
for i := 0; i < len(*requests); i++ {
res = append(res, false)
}
return res, err
}
enforcer := getEnforcer(permission, permissionIds...) enforcer := getEnforcer(permission, permissionIds...)
return enforcer.BatchEnforce(*requests) return enforcer.BatchEnforce(*requests)
} }