diff --git a/internal/services/virtualGame/service.go b/internal/services/virtualGame/service.go index b65f2e7..b795b33 100644 --- a/internal/services/virtualGame/service.go +++ b/internal/services/virtualGame/service.go @@ -52,7 +52,7 @@ func (s *service) GenerateGameLaunchURL(ctx context.Context, userID int64, gameI sessionId := fmt.Sprintf("%d-%s-%d", userID, gameID, time.Now().UnixNano()) token, err := jwtutil.CreatePopOKJwt( userID, - user.PhoneNumber, + user.FirstName, currency, "en", mode, @@ -166,6 +166,8 @@ func (s *service) HandleCallback(ctx context.Context, callback *domain.PopOKCall func (s *service) GetPlayerInfo(ctx context.Context, req *domain.PopOKPlayerInfoRequest) (*domain.PopOKPlayerInfoResponse, error) { claims, err := jwtutil.ParsePopOKJwt(req.ExternalToken, s.config.PopOK.SecretKey) + fmt.Printf("\n\nClaims: %+v\n\n", claims) + fmt.Printf("\n\nExternal token: %+v\n\n", req.ExternalToken) if err != nil { s.logger.Error("Failed to parse JWT", "error", err) return nil, fmt.Errorf("invalid token") @@ -232,10 +234,12 @@ func (s *service) ProcessBet(ctx context.Context, req *domain.PopOKBetRequest) ( func (s *service) ProcessWin(ctx context.Context, req *domain.PopOKWinRequest) (*domain.PopOKWinResponse, error) { // 1. Validate token and get user ID claims, err := jwtutil.ParsePopOKJwt(req.ExternalToken, s.config.PopOK.SecretKey) - // if err != nil { - // s.logger.Error("Invalid token in win request", "error", err) - // return nil, fmt.Errorf("invalid token") - // } + if err != nil { + s.logger.Error("Invalid token in win request", "error", err) + return nil, fmt.Errorf("invalid token") + } + + fmt.Printf("\n\nClaims: %+v\n\n", claims) // 2. Check for duplicate transaction (idempotency) existingTx, err := s.repo.GetVirtualGameTransactionByExternalID(ctx, req.TransactionID) diff --git a/internal/web_server/handlers/virtual_games_hadlers.go b/internal/web_server/handlers/virtual_games_hadlers.go index 5fb0337..3c48879 100644 --- a/internal/web_server/handlers/virtual_games_hadlers.go +++ b/internal/web_server/handlers/virtual_games_hadlers.go @@ -94,7 +94,7 @@ func (h *Handler) HandlePlayerInfo(c *fiber.Ctx) error { return fiber.NewError(fiber.StatusInternalServerError, err.Error()) } - return response.WriteJSON(c, fiber.StatusOK, "Player info retrieved", resp, nil) + return c.Status(fiber.StatusOK).JSON(resp) } func (h *Handler) HandleBet(c *fiber.Ctx) error { diff --git a/internal/web_server/jwt/jwt.go b/internal/web_server/jwt/jwt.go index e1b4068..5271440 100644 --- a/internal/web_server/jwt/jwt.go +++ b/internal/web_server/jwt/jwt.go @@ -57,24 +57,20 @@ func CreateJwt(userId int64, Role domain.Role, CompanyID domain.ValidInt64, key func CreatePopOKJwt(userID int64, username, currency, lang, mode, sessionID, key string, expiry time.Duration) (string, error) { token := jwt.NewWithClaims(jwt.SigningMethodHS256, PopOKClaim{ RegisteredClaims: jwt.RegisteredClaims{ - Issuer: "github.com/lafetz/snippitstash", - IssuedAt: jwt.NewNumericDate(time.Now()), + Issuer: "fortune-bet", Audience: jwt.ClaimStrings{"popokgaming.com"}, + IssuedAt: jwt.NewNumericDate(time.Now()), NotBefore: jwt.NewNumericDate(time.Now()), ExpiresAt: jwt.NewNumericDate(time.Now().Add(expiry)), }, UserID: userID, - Username: username, + Username: username, // ✅ Must be a valid string Currency: currency, Lang: lang, Mode: mode, SessionID: sessionID, }) - jwtToken, err := token.SignedString([]byte(key)) - if err != nil { - return "", err - } - return jwtToken, nil + return token.SignedString([]byte(key)) } func ParseJwt(jwtToken string, key string) (*UserClaim, error) {