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 != "" {
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)
}

View File

@ -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 {