56 lines
1.6 KiB
Go
56 lines
1.6 KiB
Go
// tokens_resolvers.go
|
||
package graph
|
||
|
||
import (
|
||
"context"
|
||
"fmt"
|
||
"log"
|
||
"tailly_back_v2/internal/domain"
|
||
"time"
|
||
)
|
||
|
||
type tokensResolver struct{ *Resolver }
|
||
|
||
// Tokens returns TokensResolver implementation.
|
||
func (r *Resolver) Tokens() TokensResolver { return &tokensResolver{r} }
|
||
|
||
// EmailConfirmed is the resolver for the emailConfirmed field.
|
||
func (r *tokensResolver) EmailConfirmed(ctx context.Context, obj *domain.Tokens) (bool, error) {
|
||
// Пытаемся извлечь userID из контекста
|
||
userID, err := getUserIDFromContext(ctx)
|
||
if err != nil {
|
||
return false, err
|
||
}
|
||
|
||
user, err := r.Services.User.GetByID(ctx, userID)
|
||
if err != nil {
|
||
return false, fmt.Errorf("failed to get user: %w", err)
|
||
}
|
||
|
||
return user.EmailConfirmedAt != nil, nil
|
||
}
|
||
|
||
// RefreshTokens is the resolver for the refreshTokens field.
|
||
func (r *mutationResolver) RefreshTokens(ctx context.Context, refreshToken string) (*domain.Tokens, error) {
|
||
tokens, err := r.Services.Auth.RefreshTokens(ctx, refreshToken)
|
||
log.Printf("резолвер RefreshTokens получение токена с фронта: %v", refreshToken)
|
||
if err != nil {
|
||
return nil, fmt.Errorf("failed to refresh tokens: %w", err)
|
||
}
|
||
return tokens, nil
|
||
}
|
||
|
||
func (r *tokensResolver) AccessTokenExpires(ctx context.Context, obj *domain.Tokens) (string, error) {
|
||
if obj == nil {
|
||
return "", fmt.Errorf("nil tokens object")
|
||
}
|
||
return obj.AccessTokenExpires.UTC().Format(time.RFC3339), nil
|
||
}
|
||
|
||
func (r *tokensResolver) RefreshTokenExpires(ctx context.Context, obj *domain.Tokens) (string, error) {
|
||
if obj == nil {
|
||
return "", fmt.Errorf("nil tokens object")
|
||
}
|
||
return obj.RefreshTokenExpires.UTC().Format(time.RFC3339), nil
|
||
}
|