Files
integrity-checkin/middleware/jwt.go
2022-11-23 20:56:28 +08:00

32 lines
735 B
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package middleware
import (
"fmt"
"github.com/gin-gonic/gin"
"integrity-checkin/pkg/app"
"integrity-checkin/pkg/util"
"strings"
)
func JWT(minRoleID int) gin.HandlerFunc {
return func(c *gin.Context) {
aw := app.NewWrapper(c)
authHeader := c.GetHeader("Authorization")
if strings.HasPrefix(authHeader, "Bearer ") {
authHeader = authHeader[7:]
}
claims, err := util.ParseJWT(authHeader)
if err != nil {
aw.Error("该接口需要登录").SendJSON()
aw.Ctx.Abort()
return
}
if claims.RoleID < minRoleID {
aw.Error(fmt.Sprintf("该接口需要角色大于或等于:%v请尝试退出后重登录", minRoleID)).SendJSON()
aw.Ctx.Abort()
return
}
aw.Ctx.Set("userClaims", claims)
}
}