mirror of
https://github.com/casdoor/casdoor.git
synced 2025-07-08 00:50:28 +08:00
fix: support enforcerId parameter in Enforce API (#2164)
This commit is contained in:
@ -33,11 +33,12 @@ func InitApi() {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
Enforcer, err = e.InitEnforcer()
|
err = e.InitEnforcer()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Enforcer = e.Enforcer
|
||||||
Enforcer.ClearPolicy()
|
Enforcer.ClearPolicy()
|
||||||
|
|
||||||
// if len(Enforcer.GetPolicy()) == 0 {
|
// if len(Enforcer.GetPolicy()) == 0 {
|
||||||
|
@ -35,6 +35,7 @@ func (c *ApiController) Enforce() {
|
|||||||
permissionId := c.Input().Get("permissionId")
|
permissionId := c.Input().Get("permissionId")
|
||||||
modelId := c.Input().Get("modelId")
|
modelId := c.Input().Get("modelId")
|
||||||
resourceId := c.Input().Get("resourceId")
|
resourceId := c.Input().Get("resourceId")
|
||||||
|
enforcerId := c.Input().Get("enforcerId")
|
||||||
|
|
||||||
var request object.CasbinRequest
|
var request object.CasbinRequest
|
||||||
err := json.Unmarshal(c.Ctx.Input.RequestBody, &request)
|
err := json.Unmarshal(c.Ctx.Input.RequestBody, &request)
|
||||||
@ -43,6 +44,29 @@ func (c *ApiController) Enforce() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if enforcerId != "" {
|
||||||
|
enforcer, err := object.GetEnforcer(enforcerId)
|
||||||
|
if err != nil {
|
||||||
|
c.ResponseError(err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
err = enforcer.InitEnforcer()
|
||||||
|
if err != nil {
|
||||||
|
c.ResponseError(err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
res, err := enforcer.Enforce(request...)
|
||||||
|
if err != nil {
|
||||||
|
c.ResponseError(err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
c.ResponseOk(res)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
if permissionId != "" {
|
if permissionId != "" {
|
||||||
permission, err := object.GetPermission(permissionId)
|
permission, err := object.GetPermission(permissionId)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -121,6 +145,7 @@ func (c *ApiController) Enforce() {
|
|||||||
func (c *ApiController) BatchEnforce() {
|
func (c *ApiController) BatchEnforce() {
|
||||||
permissionId := c.Input().Get("permissionId")
|
permissionId := c.Input().Get("permissionId")
|
||||||
modelId := c.Input().Get("modelId")
|
modelId := c.Input().Get("modelId")
|
||||||
|
enforcerId := c.Input().Get("enforcerId")
|
||||||
|
|
||||||
var requests []object.CasbinRequest
|
var requests []object.CasbinRequest
|
||||||
err := json.Unmarshal(c.Ctx.Input.RequestBody, &requests)
|
err := json.Unmarshal(c.Ctx.Input.RequestBody, &requests)
|
||||||
@ -129,6 +154,29 @@ func (c *ApiController) BatchEnforce() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if enforcerId != "" {
|
||||||
|
enforcer, err := object.GetEnforcer(enforcerId)
|
||||||
|
if err != nil {
|
||||||
|
c.ResponseError(err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
err = enforcer.InitEnforcer()
|
||||||
|
if err != nil {
|
||||||
|
c.ResponseError(err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
res, err := enforcer.BatchEnforce(requests)
|
||||||
|
if err != nil {
|
||||||
|
c.ResponseError(err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
c.ResponseOk(res)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
if permissionId != "" {
|
if permissionId != "" {
|
||||||
permission, err := object.GetPermission(permissionId)
|
permission, err := object.GetPermission(permissionId)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -120,44 +120,45 @@ func DeleteEnforcer(enforcer *Enforcer) (bool, error) {
|
|||||||
return affected != 0, nil
|
return affected != 0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (enforcer *Enforcer) InitEnforcer() (*casbin.Enforcer, error) {
|
func (enforcer *Enforcer) InitEnforcer() error {
|
||||||
if enforcer == nil {
|
if enforcer.Enforcer == nil {
|
||||||
return nil, errors.New("enforcer is nil")
|
if enforcer == nil {
|
||||||
}
|
return errors.New("enforcer is nil")
|
||||||
if enforcer.Model == "" || enforcer.Adapter == "" {
|
}
|
||||||
return nil, errors.New("missing model or adapter")
|
if enforcer.Model == "" || enforcer.Adapter == "" {
|
||||||
|
return errors.New("missing model or adapter")
|
||||||
|
}
|
||||||
|
|
||||||
|
var err error
|
||||||
|
var m *Model
|
||||||
|
var a *Adapter
|
||||||
|
|
||||||
|
if m, err = GetModel(enforcer.Model); err != nil {
|
||||||
|
return err
|
||||||
|
} else if m == nil {
|
||||||
|
return errors.New("model not found")
|
||||||
|
}
|
||||||
|
if a, err = GetAdapter(enforcer.Adapter); err != nil {
|
||||||
|
return err
|
||||||
|
} else if a == nil {
|
||||||
|
return errors.New("adapter not found")
|
||||||
|
}
|
||||||
|
|
||||||
|
err = m.initModel()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
err = a.initAdapter()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
casbinEnforcer, err := casbin.NewEnforcer(m.Model, a.Adapter)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
enforcer.Enforcer = casbinEnforcer
|
||||||
}
|
}
|
||||||
|
|
||||||
var err error
|
return nil
|
||||||
var m *Model
|
|
||||||
var a *Adapter
|
|
||||||
|
|
||||||
if m, err = GetModel(enforcer.Model); err != nil {
|
|
||||||
return nil, err
|
|
||||||
} else if m == nil {
|
|
||||||
return nil, errors.New("model not found")
|
|
||||||
}
|
|
||||||
|
|
||||||
if a, err = GetAdapter(enforcer.Adapter); err != nil {
|
|
||||||
return nil, err
|
|
||||||
} else if a == nil {
|
|
||||||
return nil, errors.New("adapter not found")
|
|
||||||
}
|
|
||||||
|
|
||||||
err = m.initModel()
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
err = a.initAdapter()
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
e, err := casbin.NewEnforcer(m.Model, a.Adapter)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return e, nil
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user