wangpengfei
2023-08-25 25c573d55986e02cf5f70cc3868e2b94a4be98e2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package middleware
 
import (
    "strconv"
    "strings"
 
    "github.com/gin-gonic/gin"
    "srm/global"
    "srm/model/common/response"
    "srm/service"
    "srm/utils"
)
 
var casbinService = service.ServiceGroupApp.SystemServiceGroup.CasbinService
 
// CasbinHandler 拦截器
func CasbinHandler() gin.HandlerFunc {
    return func(c *gin.Context) {
        if global.GVA_CONFIG.System.Env != "develop" {
            waitUse, _ := utils.GetClaims(c)
            //获取请求的PATH
            path := c.Request.URL.Path
            obj := strings.TrimPrefix(path, global.GVA_CONFIG.System.RouterPrefix)
            // 获取请求方法
            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()
                return
            }
        }
        c.Next()
    }
}