12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- package my_middleware
- import (
- "dy-admin/internal/pcmserver/pkg/code"
- "dy-admin/internal/pcmserver/sys/service"
- "dy-admin/pkg/jwt"
- "dy-admin/pkg/rescode"
- "fmt"
- "github.com/gin-gonic/gin"
- "strconv"
- )
- var casbinService = service.ServicesGroupApp.CasbinService
- func CasbinHandler(j *jwt.JWT) gin.HandlerFunc {
- return func(c *gin.Context) {
- roleIds := j.GetUserRoleIDs(c)
- //获取请求的PATH
- obj := c.Request.URL.Path
- // 获取请求方法
- act := c.Request.Method
- // 获取用户的角色
- subs := roleIds
- var success bool
- for _, sub := range subs {
- substr := strconv.Itoa(sub)
- success, _ = casbinService.Casbin().Enforce(substr, obj, act)
- if success {
- c.Next()
- }
- }
- if !success {
- msg := fmt.Sprintf("params=>roleIds:%v,path:%s,action:%s", roleIds, obj, act)
- err := rescode.RegisterErrorWithMessage(nil, msg, code.ErrCodeMap[code.ErrPermissionDeniedCode])
- rescode.WriteErrResponse(c, err)
- c.Abort()
- return
- }
- }
- }
|