package middleware import ( "aps_crm/constvar" "aps_crm/pkg/contextx" "aps_crm/pkg/ecode" "aps_crm/service" "aps_crm/utils" "strconv" "strings" "github.com/gin-gonic/gin" ) var casbinService = service.ServiceGroup.CasbinService // CasbinHandler 拦截器 func CasbinHandler() gin.HandlerFunc { //return func(c *gin.Context) { // waitUse, _ := utils.GetClaims(c) // ctx := new(contextx.Context).SetCtx(c) // //获取请求的PATH // path := c.Request.URL.Path // //obj := strings.TrimPrefix(path, global.GVA_CONFIG.System.RouterPrefix) // obj := strings.TrimPrefix(path, "") // // 获取请求方法 // act := c.Request.Method // // 获取用户的角色 // sub := strconv.Itoa(int(waitUse.AuthorityId)) // e := casbinService.Casbin() // 判断策略中是否存在 // success, _ := e.Enforce(sub, obj, act) // if !success { // // response.FailWithDetailed(gin.H{}, "权限不足", c) // c.Abort() // ctx.Fail(ecode.NoPowerErr) // return // } // c.Next() //} return func(c *gin.Context) { waitUse, _ := utils.GetClaims(c) ctx := new(contextx.Context).SetCtx(c) //获取请求的PATH path := c.Request.URL.Path //obj := strings.TrimPrefix(path, global.GVA_CONFIG.System.RouterPrefix) obj := strings.TrimPrefix(path, "") // 获取请求方法 act := c.Request.Method // 获取用户的角色 sub := strconv.Itoa(int(waitUse.AuthorityId)) // 超级管理员不需要验证权限 if waitUse.UserType == constvar.UserTypeSuper { c.Next() } e := casbinService.Casbin() // 判断策略中是否存在 success, _ := e.Enforce(sub, obj, act) if !success { // response.FailWithDetailed(gin.H{}, "权限不足", c) c.Abort() ctx.Fail(ecode.NoPowerErr) return } c.Next() } }