fix and optimize casbin (#1121)
* - 删除rabac_model.conf, 改为字符串代码, 方便部署 - 删除casbin相关配置文件 * fix: delete api时只传id导致casbin_rules表清空bug
This commit is contained in:
@@ -35,9 +35,17 @@ func (apiService *ApiService) CreateApi(api system.SysApi) (err error) {
|
||||
//@return: err error
|
||||
|
||||
func (apiService *ApiService) DeleteApi(api system.SysApi) (err error) {
|
||||
err = global.GVA_DB.Delete(&api).Error
|
||||
CasbinServiceApp.ClearCasbin(1, api.Path, api.Method)
|
||||
return err
|
||||
var entity system.SysApi
|
||||
err = global.GVA_DB.Where("id = ?", api.ID).First(&entity).Error // 根据id查询api记录
|
||||
if errors.Is(err, gorm.ErrRecordNotFound) { // api记录不存在
|
||||
return err
|
||||
}
|
||||
err = global.GVA_DB.Delete(&entity).Error
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
CasbinServiceApp.ClearCasbin(1, entity.Path, entity.Method)
|
||||
return nil
|
||||
}
|
||||
|
||||
//@author: [piexlmax](https://github.com/piexlmax)
|
||||
|
||||
@@ -2,6 +2,8 @@ package system
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"github.com/casbin/casbin/v2/model"
|
||||
"go.uber.org/zap"
|
||||
"sync"
|
||||
|
||||
"github.com/casbin/casbin/v2"
|
||||
@@ -92,7 +94,28 @@ var (
|
||||
func (casbinService *CasbinService) Casbin() *casbin.SyncedEnforcer {
|
||||
once.Do(func() {
|
||||
a, _ := gormadapter.NewAdapterByDB(global.GVA_DB)
|
||||
syncedEnforcer, _ = casbin.NewSyncedEnforcer(global.GVA_CONFIG.Casbin.ModelPath, a)
|
||||
text := `
|
||||
[request_definition]
|
||||
r = sub, obj, act
|
||||
|
||||
[policy_definition]
|
||||
p = sub, obj, act
|
||||
|
||||
[role_definition]
|
||||
g = _, _
|
||||
|
||||
[policy_effect]
|
||||
e = some(where (p.eft == allow))
|
||||
|
||||
[matchers]
|
||||
m = r.sub == p.sub && keyMatch2(r.obj,p.obj) && r.act == p.act
|
||||
`
|
||||
m, err := model.NewModelFromString(text)
|
||||
if err != nil {
|
||||
zap.L().Error("字符串加载模型失败!", zap.Error(err))
|
||||
return
|
||||
}
|
||||
syncedEnforcer, _ = casbin.NewSyncedEnforcer(m, a)
|
||||
})
|
||||
_ = syncedEnforcer.LoadPolicy()
|
||||
return syncedEnforcer
|
||||
|
||||
Reference in New Issue
Block a user