fix casbin Adapter -> BatchAdapter

This commit is contained in:
yxh 2023-09-22 21:46:56 +08:00
parent 23bc361bb8
commit 8929a0ccf7
2 changed files with 26 additions and 3 deletions

View File

@ -118,6 +118,27 @@ func (a *adapterCasbin) RemovePolicy(sec string, ptype string, rule []string) er
return err
}
func (a *adapterCasbin) AddPolicies(sec string, ptype string, rules [][]string) error {
lines := make([]*entity.CasbinRule, len(rules))
for k, rule := range rules {
lines[k] = savePolicyLine(ptype, rule)
}
_, err := dao.CasbinRule.Ctx(a.ctx).Data(lines).Insert()
return err
}
// RemovePolicies removes policy rules from the storage.
// This is part of the Auto-Save feature.
func (a *adapterCasbin) RemovePolicies(sec string, ptype string, rules [][]string) error {
for _, rule := range rules {
err := a.RemovePolicy(sec, ptype, rule)
if err != nil {
return err
}
}
return nil
}
// RemoveFilteredPolicy removes policy rules that match the filter from the storage.
func (a *adapterCasbin) RemoveFilteredPolicy(sec string, ptype string,
fieldIndex int, fieldValues ...string) error {

View File

@ -105,10 +105,12 @@ func (s *sSysRole) AddRoleRule(ctx context.Context, ruleIds []uint, roleId int64
enforcer, e := commonService.CasbinEnforcer(ctx)
liberr.ErrIsNil(ctx, e)
ruleIdsStr := gconv.Strings(ruleIds)
for _, v := range ruleIdsStr {
_, err = enforcer.AddPolicy(gconv.String(roleId), v, "All")
liberr.ErrIsNil(ctx, err)
rules := make([][]string, len(ruleIdsStr))
for k, v := range ruleIdsStr {
rules[k] = []string{gconv.String(roleId), v, "All"}
}
_, err = enforcer.AddPolicies(rules)
liberr.ErrIsNil(ctx, err)
})
return
}