Перейти к содержанию

Действие: исправление Basic Auth для /bookings

Связанные документы: - Изменение: [[docs/16_изменения/изменение_fix_basic_auth_bookings]] - Результат: [[docs/15_результаты/результат_fix_basic_auth_bookings]] - Знание: [[docs/13_знания/знание_basic_auth_500]]

Контекст

В Swagger/curl запрос GET https://api.arkhyz-club.ru/bookings/?limit=100&offset=0 с заголовком Authorization: Basic ... возвращал 500:

{"detail":"Authentication error"}

Что сделано

  • Найдено, что GET /bookings/ использует dependency get_current_user, который при Basic Auth вызывает authenticate_with_basic():
  • api-admin/app/routers/bookings.py
  • api-admin/app/utils/user_auth.py
  • Исправлена обработка ошибок в authenticate_with_basic():
  • для неверных кредов возвращается 401 + WWW-Authenticate: Basic
  • ошибки Supabase/PostgREST (APIError) и прочие неожиданные ошибки маппятся в 503 вместо 500
  • добавлен request_id в лог-сообщения
  • Удалено логирование полного токена (секретов) при провале проверки JWT.
  • Добавлена поддержка логина по телефону для Basic (если username без @, поиск по phone).

Изменённые файлы

  • api-admin/app/utils/user_auth.py
  • api-admin/unit_tests/test_basic_auth.py

Проверка

  • Запущены unit-тесты Basic Auth: python -m pytest -q unit_tests\test_basic_auth.py (3 passed).