| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 | package middlewareimport (	"kpt-pasture/config"	"strconv"	commonPb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/common"	"gitee.com/xuyiping_admin/pkg/apierr"	"gitee.com/xuyiping_admin/pkg/jwt"	"net/http"	"strings"	"github.com/gin-gonic/gin")const (	Authorization = "Authorization"	ToKenPrefix   = "Bearer "	UserName      = "userName"	PastureId     = "PastureId"	XRequestId    = "X-Request-Id")func GetToken(c *gin.Context) string {	value := c.Request.Header.Get(Authorization)	if value != "" && strings.HasPrefix(value, ToKenPrefix) {		return strings.TrimPrefix(value, ToKenPrefix)	}	return ""}func GetXRequestId(c *gin.Context) string {	item := c.Request.Header.Get(XRequestId)	return item}func GetPastureId(c *gin.Context) (int64, error) {	item := c.Request.Header.Get(PastureId)	return strconv.ParseInt(item, 10, 64)}func unauthorized(c *gin.Context) {	c.AbortWithStatusJSON(http.StatusUnauthorized, apierr.WithContext(c, commonPb.Error_UNAUTHORIZED))}func authorization(c *gin.Context) string {	if v := c.GetHeader("Authorization"); v != "" {		return v	}	if v := c.GetHeader("authorization"); v != "" {		return v	}	return ""}// RequireAdmin ...func RequireAdmin() gin.HandlerFunc {	return func(c *gin.Context) {		token := GetToken(c)		if token == "" {			unauthorized(c)			return		}		tokenVerifier := jwt.JWTTokenVerifier{PublicKey: config.Options().JwtTokenKeyConfig.PublicKey}		userName, err := tokenVerifier.ParseToken(token)		if err != nil {			unauthorized(c)			return		}		/*pastureId, err := GetPastureId(c)		if err != nil {			unauthorized(c)			return		}*/		c.Set(UserName, userName)		//c.Set(PastureId, pastureId)		c.Set(XRequestId, GetXRequestId(c))		c.Next()	}}
 |