Implement FCM

This commit is contained in:
2026-05-09 14:18:36 +07:00
parent 07b186c986
commit 15805a4853
18 changed files with 397 additions and 44 deletions
+16 -5
View File
@@ -4,6 +4,7 @@ import (
"context"
"errors"
"fmt"
"log"
"time"
"apskel-pos-be/config"
@@ -24,11 +25,11 @@ type AuthService interface {
}
type AuthServiceImpl struct {
userProcessor UserProcessor
jwtSecret string
refreshSecret string
tokenTTL time.Duration
refreshTokenTTL time.Duration
userProcessor UserProcessor
jwtSecret string
refreshSecret string
tokenTTL time.Duration
refreshTokenTTL time.Duration
}
type Claims struct {
@@ -81,6 +82,8 @@ func (s *AuthServiceImpl) Login(ctx context.Context, req *contract.LoginRequest)
return nil, fmt.Errorf("failed to generate refresh token: %w", err)
}
go s.saveFcmToken(context.Background(), userResponse.ID, req.FcmToken)
return &contract.LoginResponse{
Token: token,
RefreshToken: refreshToken,
@@ -90,6 +93,14 @@ func (s *AuthServiceImpl) Login(ctx context.Context, req *contract.LoginRequest)
}, nil
}
func (s *AuthServiceImpl) saveFcmToken(ctx context.Context, userID uuid.UUID, fcmToken *string) {
if fcmToken != nil && *fcmToken != "" {
if err := s.userProcessor.UpdateFcmToken(ctx, userID, *fcmToken); err != nil {
log.Printf("failed to save FCM token for user %s: %v", userID, err)
}
}
}
func (s *AuthServiceImpl) ValidateToken(tokenString string) (*contract.UserResponse, error) {
claims, err := s.parseToken(tokenString)
if err != nil {
+1
View File
@@ -20,4 +20,5 @@ type UserProcessor interface {
ActivateUser(ctx context.Context, userID uuid.UUID) error
DeactivateUser(ctx context.Context, userID uuid.UUID) error
UpdateUserOutlet(ctx context.Context, userID uuid.UUID, req *models.UpdateUserOutletRequest) (*models.UserResponse, error)
UpdateFcmToken(ctx context.Context, userID uuid.UUID, fcmToken string) error
}