diff --git a/app/admin/apis/system/role.go b/app/admin/apis/system/role.go index e6738dd4..94ecb316 100644 --- a/app/admin/apis/system/role.go +++ b/app/admin/apis/system/role.go @@ -2,6 +2,7 @@ package system import ( "github.com/gin-gonic/gin" + mycasbin "go-admin/pkg/casbin" "go-admin/app/admin/models" "go-admin/tools" @@ -86,6 +87,10 @@ func InsertRole(c *gin.Context) { _, err = t.Insert(id, data.MenuIds) tools.HasError(err, "", -1) } + + _, err = mycasbin.LoadPolicy() + tools.HasError(err, "", -1) + app.OK(c, data, "添加成功") } @@ -112,6 +117,10 @@ func UpdateRole(c *gin.Context) { _, err2 := t.Insert(data.RoleId, data.MenuIds) tools.HasError(err2, "修改失败(insert)", -1) } + + _, err = mycasbin.LoadPolicy() + tools.HasError(err, "", -1) + app.OK(c, result, "修改成功") } @@ -146,5 +155,9 @@ func DeleteRole(c *gin.Context) { IDS := tools.IdsStrToIdsIntGroup("roleId", c) _, err := Role.BatchDelete(IDS) tools.HasError(err, "删除失败", -1) + + _, err = mycasbin.LoadPolicy() + tools.HasError(err, "", -1) + app.OK(c, "", "删除成功") } diff --git a/app/admin/middleware/permission.go b/app/admin/middleware/permission.go index e3771197..a0566310 100644 --- a/app/admin/middleware/permission.go +++ b/app/admin/middleware/permission.go @@ -16,8 +16,7 @@ func AuthCheckRole() gin.HandlerFunc { return func(c *gin.Context) { data, _ := c.Get(jwtauth.JwtPayloadKey) v := data.(jwtauth.MapClaims) - e, err := mycasbin.Casbin() - tools.HasError(err, "", 500) + e := mycasbin.Casbin() //检查权限 res, err := e.Enforce(v["rolekey"], c.Request.URL.Path, c.Request.Method) tools.HasError(err, "", 500) diff --git a/pkg/casbin/mycasbin.go b/pkg/casbin/mycasbin.go index 59143467..622a3e69 100644 --- a/pkg/casbin/mycasbin.go +++ b/pkg/casbin/mycasbin.go @@ -39,10 +39,18 @@ func Setup() { if err != nil { panic(err) } + err = e.LoadPolicy() + if err != nil { + panic(err) + } global.CasbinEnforcer = e } -func Casbin() (*casbin.SyncedEnforcer, error) { +func Casbin() *casbin.SyncedEnforcer { + return global.CasbinEnforcer +} + +func LoadPolicy() (*casbin.SyncedEnforcer, error) { if err := global.CasbinEnforcer.LoadPolicy(); err == nil { return global.CasbinEnforcer, err } else { diff --git a/tools/utils.go b/tools/utils.go index 98fdcb72..ef77650c 100644 --- a/tools/utils.go +++ b/tools/utils.go @@ -53,7 +53,7 @@ func HasError(err error, msg string, code ...int) { msg = err.Error() } _, file, line, _ := runtime.Caller(1) - log.Printf("%s:%v", file, line) + log.Printf("%s:%v error: %#v", file, line, err) panic("CustomError#" + strconv.Itoa(statusCode) + "#" + msg) } }