Skip to content

Commit 3ec886d

Browse files
authored
fix and optimize casbin (flipped-aurora#1121)
* - 删除rabac_model.conf, 改为字符串代码, 方便部署 - 删除casbin相关配置文件 * fix: delete api时只传id导致casbin_rules表清空bug
1 parent 899c0fa commit 3ec886d

File tree

8 files changed

+35
-39
lines changed

8 files changed

+35
-39
lines changed

server/config.docker.yaml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,6 @@ email:
3535
secret: 'xxx'
3636
nickname: 'test'
3737

38-
# casbin configuration
39-
casbin:
40-
model-path: './resource/rbac_model.conf'
41-
4238
# system configuration
4339
system:
4440
env: 'public' # Change to "develop" to skip authentication for development mode

server/config.yaml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,6 @@ email:
3535
secret: 'xxx'
3636
nickname: 'test'
3737

38-
# casbin configuration
39-
casbin:
40-
model-path: './resource/rbac_model.conf'
41-
4238
# system configuration
4339
system:
4440
env: 'public' # Change to "develop" to skip authentication for development mode

server/config/casbin.go

Lines changed: 0 additions & 5 deletions
This file was deleted.

server/config/config.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ type Server struct {
55
Zap Zap `mapstructure:"zap" json:"zap" yaml:"zap"`
66
Redis Redis `mapstructure:"redis" json:"redis" yaml:"redis"`
77
Email Email `mapstructure:"email" json:"email" yaml:"email"`
8-
Casbin Casbin `mapstructure:"casbin" json:"casbin" yaml:"casbin"`
98
System System `mapstructure:"system" json:"system" yaml:"system"`
109
Captcha Captcha `mapstructure:"captcha" json:"captcha" yaml:"captcha"`
1110
// auto

server/resource/rbac_model.conf

Lines changed: 0 additions & 14 deletions
This file was deleted.

server/service/system/sys_api.go

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,17 @@ func (apiService *ApiService) CreateApi(api system.SysApi) (err error) {
3535
//@return: err error
3636

3737
func (apiService *ApiService) DeleteApi(api system.SysApi) (err error) {
38-
err = global.GVA_DB.Delete(&api).Error
39-
CasbinServiceApp.ClearCasbin(1, api.Path, api.Method)
40-
return err
38+
var entity system.SysApi
39+
err = global.GVA_DB.Where("id = ?", api.ID).First(&entity).Error // 根据id查询api记录
40+
if errors.Is(err, gorm.ErrRecordNotFound) { // api记录不存在
41+
return err
42+
}
43+
err = global.GVA_DB.Delete(&entity).Error
44+
if err != nil {
45+
return err
46+
}
47+
CasbinServiceApp.ClearCasbin(1, entity.Path, entity.Method)
48+
return nil
4149
}
4250

4351
//@author: [piexlmax](https://github.com/piexlmax)

server/service/system/sys_casbin.go

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ package system
22

33
import (
44
"errors"
5+
"github.com/casbin/casbin/v2/model"
6+
"go.uber.org/zap"
57
"sync"
68

79
"github.com/casbin/casbin/v2"
@@ -92,7 +94,28 @@ var (
9294
func (casbinService *CasbinService) Casbin() *casbin.SyncedEnforcer {
9395
once.Do(func() {
9496
a, _ := gormadapter.NewAdapterByDB(global.GVA_DB)
95-
syncedEnforcer, _ = casbin.NewSyncedEnforcer(global.GVA_CONFIG.Casbin.ModelPath, a)
97+
text := `
98+
[request_definition]
99+
r = sub, obj, act
100+
101+
[policy_definition]
102+
p = sub, obj, act
103+
104+
[role_definition]
105+
g = _, _
106+
107+
[policy_effect]
108+
e = some(where (p.eft == allow))
109+
110+
[matchers]
111+
m = r.sub == p.sub && keyMatch2(r.obj,p.obj) && r.act == p.act
112+
`
113+
m, err := model.NewModelFromString(text)
114+
if err != nil {
115+
zap.L().Error("字符串加载模型失败!", zap.Error(err))
116+
return
117+
}
118+
syncedEnforcer, _ = casbin.NewSyncedEnforcer(m, a)
96119
})
97120
_ = syncedEnforcer.LoadPolicy()
98121
return syncedEnforcer

web/src/view/systemTools/system/system.vue

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -120,12 +120,6 @@
120120
<el-button @click="email">测试邮件</el-button>
121121
</el-form-item>
122122
</el-collapse-item>
123-
<el-collapse-item title="casbin配置" name="6">
124-
<el-form-item label="模型地址">
125-
<el-input v-model="config.casbin['model-path']" />
126-
</el-form-item>
127-
</el-collapse-item>
128-
129123
<el-collapse-item title="验证码配置" name="7">
130124
<el-form-item label="字符长度">
131125
<el-input v-model.number="config.captcha['key-long']" />
@@ -370,7 +364,6 @@ const config = ref({
370364
'iplimit-time': 0
371365
},
372366
jwt: {},
373-
casbin: {},
374367
mysql: {},
375368
pgsql: {},
376369
excel: {},

0 commit comments

Comments
 (0)