feat(auth): implement yggdrasil join endpoint
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user