// 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 }