package middleware import ( "f1-game/internal/code" "f1-game/internal/data" "f1-game/internal/extend/token" nameKey "f1-game/internal/name/key" cstring "github.com/cherry-game/cherry/extend/string" clog "github.com/cherry-game/cherry/logger" cgin "github.com/cherry-game/components/gin" "github.com/gin-gonic/gin" ) // ValidateToken 中间件 func ValidateToken() cgin.GinHandlerFunc { return func(c *cgin.Context) { base64Token := c.GetString(nameKey.Token, "") decodeToken, ok := token.DecodeToken(base64Token) if !ok { c.Abort() clog.Warnf("decode token error. [url = %s] [token = %s]", c.Request.URL, base64Token) code.JSONResult(c, code.AccountTokenValidateError) return } sdkRow := data.SDK.Get(decodeToken.PID) if sdkRow == nil { clog.Warnf("pid not found . [url = %s] [token = %s]", c.Request.URL, base64Token) code.JSONResult(c, code.AccountTokenValidateError) return } c.Params = append(c.Params, gin.Param{ Key: nameKey.SDKID, Value: cstring.ToString(sdkRow.SdkID), }) c.Params = append(c.Params, gin.Param{ Key: nameKey.PID, Value: cstring.ToString(decodeToken.PID), }) c.Params = append(c.Params, gin.Param{ Key: nameKey.OpenID, Value: decodeToken.OpenID, }) c.Next() } }