Add error to Enforce()

This commit is contained in:
Yang Luo
2023-06-04 17:29:34 +08:00
parent fdaad2b608
commit 9a2800e3b3
2 changed files with 43 additions and 19 deletions

View File

@@ -44,7 +44,15 @@ func (c *ApiController) Enforce() {
} }
if permissionId != "" { 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 return
} }
@@ -69,7 +77,13 @@ func (c *ApiController) Enforce() {
res := []bool{} res := []bool{}
for _, permission := range permissions { 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) c.ResponseOk(res)
} }
@@ -95,7 +109,15 @@ func (c *ApiController) BatchEnforce() {
} }
if permissionId != "" { 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 return
} }
@@ -114,7 +136,13 @@ func (c *ApiController) BatchEnforce() {
res := [][]bool{} res := [][]bool{}
for _, permission := range permissions { 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) c.ResponseOk(res)
} }

View File

@@ -241,33 +241,29 @@ func removePolicies(permission *Permission) {
type CasbinRequest = []interface{} type CasbinRequest = []interface{}
func Enforce(permissionId string, request *CasbinRequest) bool { func Enforce(permissionId string, request *CasbinRequest) (bool, error) {
permission, err := GetPermission(permissionId) permission, err := GetPermission(permissionId)
if err != nil { if err != nil {
panic(err) return false, err
} }
enforcer := getEnforcer(permission) enforcer := getEnforcer(permission)
return enforcer.Enforce(*request...)
allow, err := enforcer.Enforce(*request...)
if err != nil {
panic(err)
}
return allow
} }
func BatchEnforce(permissionId string, requests *[]CasbinRequest) []bool { func BatchEnforce(permissionId string, requests *[]CasbinRequest) ([]bool, error) {
permission, err := GetPermission(permissionId) permission, err := GetPermission(permissionId)
if err != nil { if err != nil {
panic(err) res := []bool{}
for i := 0; i < len(*requests); i++ {
res = append(res, false)
}
return res, err
} }
enforcer := getEnforcer(permission) enforcer := getEnforcer(permission)
allow, err := enforcer.BatchEnforce(*requests) return enforcer.BatchEnforce(*requests)
if err != nil {
panic(err)
}
return allow
} }
func getAllValues(userId string, fn func(enforcer *casbin.Enforcer) []string) []string { func getAllValues(userId string, fn func(enforcer *casbin.Enforcer) []string) []string {