Support modelId arg in Enforce() API

This commit is contained in:
Yang Luo 2023-05-12 21:39:57 +08:00
parent 776a682fae
commit 6f0b7f3f24

View File

@ -18,10 +18,12 @@ import (
"encoding/json" "encoding/json"
"github.com/casdoor/casdoor/object" "github.com/casdoor/casdoor/object"
"github.com/casdoor/casdoor/util"
) )
func (c *ApiController) Enforce() { func (c *ApiController) Enforce() {
permissionId := c.Input().Get("permissionId") permissionId := c.Input().Get("permissionId")
modelId := c.Input().Get("modelId")
var request object.CasbinRequest var request object.CasbinRequest
err := json.Unmarshal(c.Ctx.Input.RequestBody, &request) err := json.Unmarshal(c.Ctx.Input.RequestBody, &request)
@ -30,12 +32,25 @@ func (c *ApiController) Enforce() {
return return
} }
if permissionId != "" {
c.Data["json"] = object.Enforce(permissionId, &request) c.Data["json"] = object.Enforce(permissionId, &request)
c.ServeJSON() c.ServeJSON()
} else {
owner, modelName := util.GetOwnerAndNameFromId(modelId)
permissions := object.GetPermissionsByModel(owner, modelName)
res := []bool{}
for _, permission := range permissions {
res = append(res, object.Enforce(permission.GetId(), &request))
}
c.Data["json"] = res
c.ServeJSON()
}
} }
func (c *ApiController) BatchEnforce() { func (c *ApiController) BatchEnforce() {
permissionId := c.Input().Get("permissionId") permissionId := c.Input().Get("permissionId")
modelId := c.Input().Get("modelId")
var requests []object.CasbinRequest var requests []object.CasbinRequest
err := json.Unmarshal(c.Ctx.Input.RequestBody, &requests) err := json.Unmarshal(c.Ctx.Input.RequestBody, &requests)
@ -44,8 +59,20 @@ func (c *ApiController) BatchEnforce() {
return return
} }
if permissionId != "" {
c.Data["json"] = object.BatchEnforce(permissionId, &requests) c.Data["json"] = object.BatchEnforce(permissionId, &requests)
c.ServeJSON() c.ServeJSON()
} else {
owner, modelName := util.GetOwnerAndNameFromId(modelId)
permissions := object.GetPermissionsByModel(owner, modelName)
res := [][]bool{}
for _, permission := range permissions {
res = append(res, object.BatchEnforce(permission.GetId(), &requests))
}
c.Data["json"] = res
c.ServeJSON()
}
} }
func (c *ApiController) GetAllObjects() { func (c *ApiController) GetAllObjects() {