Closed eugemos closed 1 month ago
@Xalgina , для тестирования нужно установить в переменных окружения DEBUG=False. Проще тестировать через cookies и документацию. Там помечены замками эндпоинты, которые должны становится недоступными, если админу установить is_active=false в БД.
@eugemos , немного похозяйничала в ветке. В develop были добавлены новые эндпоинты "Admins", но после мержа develop в эту ветку они не отображались в документации. Переименовала и перенесла их по аналогии с остальными роутерами админов.
@eugemos , немного похозяйничала в ветке...
Ок. Не возражаю.
Напрашивается следующий рефакторинг в пакете api.endpoints
:
admin.py
перенести в __init__.py
пакета api.endpoints.admin_routers
;api.endpoints.admin_routers
переименовать в api.endpoints.admin
.Думаю, так более понятная структура получится.
Думаю, так более понятная структура получится.
Да, стоит это сделать. Можно сделать это в этой ветке, пока Халгине не оттестировала её.
... Да, стоит это сделать. Можно сделать это в этой ветке, пока Халгине не оттестировала её.
Ок, тогда постараюсь сегодня вечером сделать.
Что сделано
Добавлена проверки активности пользователя (
аctive=True
) для эндпойнтов, указанных в задаче #595. Добавлено описание ответов 401 и 403 для документации. Для уменьшения дублирования кода выполнен рефакторинг:src/api/permissions.py
;admin_router
вsrc/api/endpoints/admin.py
;admin_router
порядок следования эндпойнтов в документации изменился, то пришлось это отрегулировать с помощью параметраopenapi_tags
уFastAPI
.Как тестировал
Локально. Для работы с API использовал страницу документации. Для работы с БД использовал DBeaver.
Создал активного суперпользователя админки, как указано в п.1 комментария https://github.com/Studio-Yandex-Practicum/ProCharity_back_2.0/issues/596#issuecomment-2233657507 и залогинил его с помощью cookies. Проверил, что все указанные эндпойнты работают. Вручную в БД изменил статус пользователя админки на неактивный. Бот перезапустил. Проверил, что все указанные эндпойнты теперь возвращают 401. Проверил, что в документации (в разделе Responses) всех указанных эндпойнтов появилось описание ответа 401 (и 403 для
api/auth/invitation
).