admin-api/middleware/casbin_rbac.go

37 lines
921 B
Go
Raw Normal View History

2024-10-23 02:09:54 +00:00
package middleware
import (
"strconv"
"strings"
"github.com/gin-gonic/gin"
"myschools.me/lemons/admin/global"
"myschools.me/lemons/admin/model/common/response"
"myschools.me/lemons/admin/service"
"myschools.me/lemons/admin/utils"
)
var casbinService = service.ServiceGroupApp.SystemServiceGroup.CasbinService
// CasbinHandler 拦截器
func CasbinHandler() gin.HandlerFunc {
return func(c *gin.Context) {
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()
}
}