🔐 API: Добавить Middleware для аутентификации

🎯 User Story

Как разработчик, я хочу иметь middleware для аутентификации, чтобы защитить определённые эндпоинты и идентифицировать пользователя по токену.

📋 Что нужно сделать

  1. Создать middleware для axum в модуле src/services/auth.rs.
  2. Реализовать логику middleware:
    • Считывать токен из заголовка X-RAND-TOKEN.
    • Если токен отсутствует, возвращать ошибку 401 Unauthorized.
    • Находить пользователя в базе данных по этому токену.
    • Если пользователь не найден, возвращать ошибку 403 Forbidden.
    • Если пользователь найден, помещать его в расширения запроса (request extensions), чтобы он был доступен в последующих обработчиках.
  3. Применить middleware ко всем защищённым роутам в main.rs.
  4. Обеспечить обработку ошибок через AppError.
  5. Написать тесты для middleware, покрывающие все сценарии (успешная аутентификация, отсутствие токена, неверный токен).

Ожидаемый результат

  • Защищённые эндпоинты недоступны без валидного токена в заголовке X-RAND-TOKEN.
  • В обработчиках защищённых роутов есть доступ к объекту текущего пользователя.

🧩 Puzzle Driven Development

  • Бюджет времени: 2 часа
Edited by Mykko Tu