Доработка бэкенд-приложения на FastAPI
Основная цель
Расширение функциональности существующего API за счёт внедрения системы безопасности, управления пользователями и обработки транзакций.
1. Система безопасности и пользователи
Аутентификация и авторизация
- Реализация регистрации и входа пользователей с использованием JWT-токенов.
- Хранение токена в cookies с сроком жизни 7 дней.
- Секретный ключ для генерации токенов должен храниться в переменных окружения (.env).
- Автоматическое обновление срока жизни токена при каждой активности пользователя.
- Защита эндпоинтов
/admin/* с проверкой роли администратора.
Модель пользователя в БД
- id: UUID (первичный ключ).
- password: Хешированный пароль.
- phone: Номер телефона.
- email: Адрес электронной почты.
- transactions: Связь с таблицей транзакций (внешний ключ).
- account_confirmation_status: Связь со статусом подтверждения (внешний ключ).
- name: Имя пользователя.
- role: Роль пользователя (например, user, admin).
2. Подтверждение учётной записи по email
Сервис отправки email
- Создание отдельного сервиса в
app/services для отправки электронных писем.
- Поддержка как писем для подтверждения регистрации, так и для общей рассылки.
- Интеграция с SMTP (например, Gmail). Все данные для подключения (логин, пароль/токен) берутся из .env файла.
- Оформление писем с использованием простого HTML и CSS.
Модель подтверждения в БД
- user_id: Ссылка на пользователя (внешний ключ).
- confirmation_code: Код для подтверждения.
- confirmation_status: Статус подтверждения (True/False).
- expires_at: Срок жизни кода (600 секунд). По истечении срока статус автоматически меняется на False.
3. Система транзакций (заказов)
Модель транзакции
- Создание отдельной таблицы для заказов/транзакций.
Статусы заказа
- Статусы должны быть вынесены в перечисление (Enum) в
/app/types/enums.
- Список статусов:
- Не оплачено вовремя
- В процессе оплаты
- В обработке
- В доставке
- Доставлено