Действие: исправление 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/использует dependencyget_current_user, который при Basic Auth вызываетauthenticate_with_basic(): api-admin/app/routers/bookings.pyapi-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.pyapi-admin/unit_tests/test_basic_auth.py
Проверка¶
- Запущены unit-тесты Basic Auth:
python -m pytest -q unit_tests\test_basic_auth.py(3 passed).