|
- package mw
-
- import (
- "applet/app/e"
- "applet/app/enum"
- "applet/app/md"
- "applet/app/svc"
- "applet/app/utils"
- "fmt"
- "github.com/gin-gonic/gin"
- )
-
- // CheckPermission 检查权限
- func CheckPermission(c *gin.Context) {
- admin := svc.GetUser(c)
- masterId := svc.GetMasterId(c)
-
- if c.GetBool("is_open") {
- rolePermissionKey := fmt.Sprintf(md.AdminRolePermissionByOpenKey, masterId)
- isHasPermission, err := svc.CheckUserRoleByOpen(c, rolePermissionKey, c.Request.RequestURI, utils.StrToInt(masterId))
- if err != nil {
- e.OutErr(c, e.ERR, err.Error())
- return
- }
- if !isHasPermission {
- e.OutErr(c, e.ERR_FORBIDEN, "当前用户暂未拥有该路由权限,请联系管理员")
- return
- }
- c.Next()
- }
-
- // TODO::判断是否为超管
- if admin.IsSuperAdministrator == enum.IsSuperAdministratorTure {
- c.Next()
- } else {
- rolePermissionKey := fmt.Sprintf(md.AdminRolePermissionKey, masterId, utils.AnyToString(admin.AdmId))
- isHasPermission, err := svc.CheckUserRole(c, rolePermissionKey, c.Request.RequestURI, admin.AdmId)
- if err != nil {
- e.OutErr(c, e.ERR, err.Error())
- return
- }
- if !isHasPermission {
- e.OutErr(c, e.ERR_FORBIDEN, "当前用户暂未拥有该路由权限,请联系管理员")
- return
- }
- c.Next()
- }
- }
|