package middleware import ( "ln/nft/global" "ln/nft/model/common/response" "ln/nft/service" "ln/nft/utils" "strconv" "github.com/gin-gonic/gin" ) var casbinService = service.ServiceGroupApp.SystemServiceGroup.CasbinService // 拦截器 func CasbinHandler() gin.HandlerFunc { return func(c *gin.Context) { waitUse, _ := utils.GetClaims(c) // 获取请求的PATH obj := c.Request.URL.Path // 获取请求方法 act := c.Request.Method // 获取用户的角色 sub := strconv.Itoa(int(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 } } }