mirror of
https://github.com/casdoor/casdoor.git
synced 2025-07-03 04:10:20 +08:00
feat: handle error when permission not found (#2012)
This commit is contained in:
@ -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
|
||||||
|
@ -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)
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user