2022-10-04 00:36:01 +08:00
|
|
|
|
package middleware
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"github.com/gin-gonic/gin"
|
|
|
|
|
"mc-client-updater-server/internal/service"
|
|
|
|
|
"mc-client-updater-server/pkg/result"
|
|
|
|
|
"strings"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func AdminRequired(c *gin.Context) {
|
|
|
|
|
res := result.NewResult(c)
|
|
|
|
|
authorization := c.GetHeader("Authorization")
|
|
|
|
|
if authorization == "" {
|
2024-01-07 15:13:35 +08:00
|
|
|
|
res.UnLogin()
|
2022-10-04 00:36:01 +08:00
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
split := strings.Split(authorization, " ")
|
|
|
|
|
if len(split) <= 1 || (len(split) >= 2 && split[0] != "Bearer") {
|
|
|
|
|
res.BadRequest()
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
tokenSrv := service.NewTokenService(c)
|
|
|
|
|
token := split[1]
|
|
|
|
|
tokenRow, ok := tokenSrv.VerifyToken(token)
|
|
|
|
|
// 若!ok,则返回值已被service处理,无需再次返回
|
|
|
|
|
if !ok {
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
userSrv := service.NewUserService(c)
|
|
|
|
|
hasRole := userSrv.JudgeRoleByToken("ROLE_admin", tokenRow)
|
|
|
|
|
if !hasRole {
|
|
|
|
|
res.NoPermission()
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
c.Next()
|
|
|
|
|
}
|