feat(auth): implement yggdrasil join endpoint

This commit is contained in:
2025-06-15 17:17:50 +03:00
parent 056aa05c50
commit 9082b21a5d
5 changed files with 107 additions and 1 deletions

View File

@@ -127,3 +127,33 @@ func (r *UserRepository) GetProfileByUUID(ctx context.Context, userUUID uuid.UUI
return user, profile, nil
}
var (
// ...
ErrTokenNotFound = errors.New("access token not found or invalid") // Новая ошибка
)
// ValidateAccessToken проверяет, действителен ли токен для данного пользователя.
// В нашей реализации мы просто проверяем его существование.
// В более сложных системах здесь можно было бы проверять срок действия токена.
func (r *UserRepository) ValidateAccessToken(ctx context.Context, token string, userUUID uuid.UUID) error {
var exists bool
query := `
SELECT EXISTS (
SELECT 1
FROM access_tokens at
JOIN users u ON at.user_id = u.id
WHERE at.access_token = $1 AND u.uuid = $2
)`
err := r.DB.QueryRowContext(ctx, query, token, userUUID).Scan(&exists)
if err != nil {
return err
}
if !exists {
return ErrTokenNotFound
}
return nil
}