mh_goadmin_server/app/admin/middleware/permission.go

53 lines
1.1 KiB
Go
Raw Normal View History

2023-09-16 02:56:39 +00:00
package middleware
import (
"fmt"
"github.com/gin-gonic/gin"
2023-10-16 08:46:20 +00:00
"go-admin/app/admin/models"
2023-09-16 02:56:39 +00:00
mycasbin "go-admin/pkg/casbin"
"net/http"
"go-admin/pkg/jwtauth"
"go-admin/tools"
)
// AuthCheckRole 权限检查中间件
2023-09-16 02:56:39 +00:00
func AuthCheckRole() gin.HandlerFunc {
return func(c *gin.Context) {
data, _ := c.Get(jwtauth.JwtPayloadKey)
v := data.(jwtauth.MapClaims)
e := mycasbin.Casbin()
//检查权限
res, err := e.Enforce(v["rolekey"], c.Request.URL.Path, c.Request.Method)
tools.HasError(err, "", 500)
fmt.Printf("%s [INFO] %s %s %s \r\n",
tools.GetCurrentTimeStr(),
c.Request.Method,
c.Request.URL.Path,
v["rolekey"],
)
2023-10-17 02:32:08 +00:00
if res || v["rolekey"] == "admin" {
c.Set("userInfo", models.GetUserById(uint32(tools.GetUserId(c))))
2023-09-16 02:56:39 +00:00
c.Next()
} else {
c.JSON(http.StatusOK, gin.H{
"code": 403,
"msg": "对不起,您没有该接口访问权限,请联系管理员",
})
c.Abort()
return
}
}
}
2023-10-16 08:46:20 +00:00
// GetCooperativeBusinessId 获取用户合作商id
func GetCooperativeBusinessId(c *gin.Context) uint32 {
u, b := c.Get("userInfo")
if !b {
return 0
}
return u.(*models.SysUserB).CooperativeBusinessId
}