1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- package middleware
- import (
- "encoding/json"
- "errors"
- "fmt"
- "os"
- "surveyService/cache"
- "surveyService/response"
- "surveyService/util/constants"
- "github.com/gin-gonic/gin"
- "github.com/go-redis/redis/v8"
- "gogs.uu.mdfitnesscao.com/cuiguohai/sdk"
- )
- func AuthorizeMechanism() gin.HandlerFunc {
- return func(c *gin.Context) {
- token := c.Request.Header.Get("token")
- if token == "" {
- response.Fail(c, response.ErrAuthorizationExpired)
- return
- }
- var currentUser *sdk.AuthMechanism
- var err *response.ErrCode
- // 拿到用户系统的资料
- currentUser, err = getMechanismTokenInfo(token)
- if err != nil {
- response.Fail(c, err)
- return
- }
- c.Set(constants.MechanismCacheKey, currentUser)
- c.Next()
- }
- }
- // 根据Token获取用户信息
- func getMechanismTokenInfo(token string) (*sdk.AuthMechanism, *response.ErrCode) {
- // 检查token是否存在
- authTokenPrefix := os.Getenv("MECHANISM_AUTH_TOKEN_PREFIX")
- cacheKey := fmt.Sprintf("%s:Authorize:Token:%s", authTokenPrefix, token)
- userInfoJson, err := cache.Instance().Get(cacheKey)
- if err != nil {
- if errors.Is(err, redis.Nil) {
- return nil, response.ErrAuthorizationExpired
- }
- return nil, response.Err
- }
- var currentUser sdk.AuthMechanism
- err = json.Unmarshal([]byte(userInfoJson), ¤tUser)
- if err != nil {
- return nil, response.Err
- }
- return ¤tUser, nil
- }
|