diff --git a/server/config.docker.yaml b/server/config.docker.yaml
index 934b7de065b7f576d653fda66dab18954554eb94..28358f62d6e7250ea15130926aa0953821548fae 100644
--- a/server/config.docker.yaml
+++ b/server/config.docker.yaml
@@ -35,10 +35,6 @@ email:
secret: 'xxx'
nickname: 'test'
-# casbin configuration
-casbin:
- model-path: './resource/rbac_model.conf'
-
# system configuration
system:
env: 'public' # Change to "develop" to skip authentication for development mode
diff --git a/server/config.yaml b/server/config.yaml
index 86b0120115b38561e62e6cd64955a0e48224e1dc..d5110ba59a9649569e0aabf08cb4ca00525718b3 100644
--- a/server/config.yaml
+++ b/server/config.yaml
@@ -35,10 +35,6 @@ email:
secret: 'xxx'
nickname: 'test'
-# casbin configuration
-casbin:
- model-path: './resource/rbac_model.conf'
-
# system configuration
system:
env: 'public' # Change to "develop" to skip authentication for development mode
diff --git a/server/config/casbin.go b/server/config/casbin.go
deleted file mode 100644
index 917a4b39c0b2ac37932c52ea9dac97106b0c4277..0000000000000000000000000000000000000000
--- a/server/config/casbin.go
+++ /dev/null
@@ -1,5 +0,0 @@
-package config
-
-type Casbin struct {
- ModelPath string `mapstructure:"model-path" json:"model-path" yaml:"model-path"` // 存放casbin模型的相对路径
-}
diff --git a/server/config/config.go b/server/config/config.go
index dc4dbb07128dced7ccbfaa8340d334214983a551..af600f2f79d8632beed1469cc04bf52854c77da3 100644
--- a/server/config/config.go
+++ b/server/config/config.go
@@ -5,7 +5,6 @@ type Server struct {
Zap Zap `mapstructure:"zap" json:"zap" yaml:"zap"`
Redis Redis `mapstructure:"redis" json:"redis" yaml:"redis"`
Email Email `mapstructure:"email" json:"email" yaml:"email"`
- Casbin Casbin `mapstructure:"casbin" json:"casbin" yaml:"casbin"`
System System `mapstructure:"system" json:"system" yaml:"system"`
Captcha Captcha `mapstructure:"captcha" json:"captcha" yaml:"captcha"`
// auto
diff --git a/server/resource/rbac_model.conf b/server/resource/rbac_model.conf
deleted file mode 100644
index b5918d45e964c5c4f5ff2bd5be3c9ae8fc8fc3c7..0000000000000000000000000000000000000000
--- a/server/resource/rbac_model.conf
+++ /dev/null
@@ -1,14 +0,0 @@
-[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
diff --git a/server/service/system/sys_api.go b/server/service/system/sys_api.go
index 965020e48275c65b6256919429181044416bb0e7..5bcf61534d469bfadccd2c8fd2dd12c78f8d6110 100644
--- a/server/service/system/sys_api.go
+++ b/server/service/system/sys_api.go
@@ -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)
diff --git a/server/service/system/sys_casbin.go b/server/service/system/sys_casbin.go
index 944cb1d1fa3ad51804fc08e4a140c68dfae26ce6..c6a73efa4b465470ab0418fc65f76762311cc05e 100644
--- a/server/service/system/sys_casbin.go
+++ b/server/service/system/sys_casbin.go
@@ -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
diff --git a/web/src/view/systemTools/system/system.vue b/web/src/view/systemTools/system/system.vue
index 4b27c4368d5378a7e4015fcf79f9fabcd79c13a4..def508a2ce59ea48c788a1fd70ed9facef63310c 100644
--- a/web/src/view/systemTools/system/system.vue
+++ b/web/src/view/systemTools/system/system.vue
@@ -120,12 +120,6 @@
测试邮件
-
-
-
-
-
-
@@ -370,7 +364,6 @@ const config = ref({
'iplimit-time': 0
},
jwt: {},
- casbin: {},
mysql: {},
pgsql: {},
excel: {},