🔐 API: Добавить Middleware для аутентификации
🎯 User Story
Как разработчик, я хочу иметь middleware для аутентификации, чтобы защитить определённые эндпоинты и идентифицировать пользователя по токену.
📋 Что нужно сделать
-
Создать middleware для
axumв модулеsrc/services/auth.rs. -
Реализовать логику middleware:
- Считывать токен из заголовка
X-RAND-TOKEN. - Если токен отсутствует, возвращать ошибку
401 Unauthorized. - Находить пользователя в базе данных по этому токену.
- Если пользователь не найден, возвращать ошибку
403 Forbidden. - Если пользователь найден, помещать его в расширения запроса (
request extensions), чтобы он был доступен в последующих обработчиках.
- Считывать токен из заголовка
-
Применить middleware ко всем защищённым роутам в
main.rs. -
Обеспечить обработку ошибок через
AppError. - Написать тесты для middleware, покрывающие все сценарии (успешная аутентификация, отсутствие токена, неверный токен).
✅ Ожидаемый результат
- Защищённые эндпоинты недоступны без валидного токена в заголовке
X-RAND-TOKEN. - В обработчиках защищённых роутов есть доступ к объекту текущего пользователя.
🧩 Puzzle Driven Development
- Бюджет времени: 2 часа
Edited by Mykko Tu