package middleware import ( "github.com/flipped-aurora/gin-vue-admin/server/global" "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" "github.com/flipped-aurora/gin-vue-admin/server/service" "github.com/flipped-aurora/gin-vue-admin/server/utils" "github.com/gin-gonic/gin" ) var casbinService = service.ServiceGroupApp.SystemServiceGroup.CasbinService // 拦截器 func CasbinHandler() gin.HandlerFunc { return func(c *gin.Context) { waitUse, _ := utils.GetClaims(c) // 获取请求的URI obj := c.Request.URL.RequestURI() // 获取请求方法 act := c.Request.Method // 获取用户的角色 sub := waitUse.AuthorityId e := casbinService.Casbin() // 判断策略中是否存在 success, _ := e.Enforce(sub, obj, act) if global.GVA_CONFIG.System.Env == "develop" || success { c.Next() } else { response.FailWithDetailed(gin.H{}, "权限不足", c) c.Abort() return } } }