Регистрация

Пользователь вводит только email. Backend:

  1. создает пользователя, если его еще нет
  2. назначает роль seller, если такая роль присутствует в базе
  3. генерирует JWT со сценарием confirm
  4. отправляет email со ссылкой подтверждения

Маршрут: POST /api/auth/register.

Подтверждение email

Маршрут GET /api/auth/confirm:

  • проверяет токен
  • генерирует пароль
  • хеширует пароль через bcrypt
  • помечает пользователя как подтвержденного
  • отправляет пароль письмом

Вход

Маршрут POST /api/auth/login выдает JWT с user_id.

Frontend хранит:

  • токен в localStorage под ключом wbunit_token
  • email под ключом wbunit_email

При 401/403 frontend очищает локальную авторизацию и перезагружает страницу.

Лимиты

Лимиты определяют, сколько строк детализации пользователь может обработать.

Как списываются лимиты

Перед загрузкой frontend вызывает POST /api/reports/count-rows, чтобы узнать:

  • сколько строк будет списано
  • сколько лимитов осталось

При реальной загрузке backend:

  • повторно считает строки
  • сравнивает с доступными лимитами
  • уменьшает user.limits
  • создает запись limit_history с операцией expense

Пополнение

Маршрут POST /api/auth/top-up:

  • увеличивает limits
  • выравнивает initial_limits
  • пишет запись topup в limit_history