validate_token.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package middleware
  2. import (
  3. "f1-game/internal/code"
  4. "f1-game/internal/data"
  5. "f1-game/internal/extend/token"
  6. nameKey "f1-game/internal/name/key"
  7. cstring "github.com/cherry-game/cherry/extend/string"
  8. clog "github.com/cherry-game/cherry/logger"
  9. cgin "github.com/cherry-game/components/gin"
  10. "github.com/gin-gonic/gin"
  11. )
  12. // ValidateToken 中间件
  13. func ValidateToken() cgin.GinHandlerFunc {
  14. return func(c *cgin.Context) {
  15. base64Token := c.GetString(nameKey.Token, "")
  16. decodeToken, ok := token.DecodeToken(base64Token)
  17. if !ok {
  18. c.Abort()
  19. clog.Warnf("decode token error. [url = %s] [token = %s]", c.Request.URL, base64Token)
  20. code.JSONResult(c, code.AccountTokenValidateError)
  21. return
  22. }
  23. sdkRow := data.SDK.Get(decodeToken.PID)
  24. if sdkRow == nil {
  25. clog.Warnf("pid not found . [url = %s] [token = %s]", c.Request.URL, base64Token)
  26. code.JSONResult(c, code.AccountTokenValidateError)
  27. return
  28. }
  29. c.Params = append(c.Params, gin.Param{
  30. Key: nameKey.SDKID,
  31. Value: cstring.ToString(sdkRow.SdkID),
  32. })
  33. c.Params = append(c.Params, gin.Param{
  34. Key: nameKey.PID,
  35. Value: cstring.ToString(decodeToken.PID),
  36. })
  37. c.Params = append(c.Params, gin.Param{
  38. Key: nameKey.OpenID,
  39. Value: decodeToken.OpenID,
  40. })
  41. c.Next()
  42. }
  43. }