DaydreamMods

DaydreamMods

Вход и сессии

Регистрация, токен, подтверждение почты и кто такой администратор.

Отдельной системы ролей сотрудников нет. В перечислении user_role два значения: user и admin.

Регистрация

Поля: ник (2–64 символа), почта, пароль от 8 символов. Почта хранится в нижнем регистре и уникальна. Пароль в базу не пишется: только хеш Argon2 в users.password_hash.

Сразу создаётся запись в email_tokens типа verify, срок сутки. Письмо содержит ссылку /verify?token=…. Повторное использование токена не подтверждает почту второй раз: токен помечается использованным.

Вход

Ищется пользователь по почте, пароль сверяется с хешем. При успехе в sessions пишется SHA-256 случайных 32 байт и срок 30 суток. Клиенту возвращается сырой токен. В базе сырого токена нет.

Выход удаляет сессии этого пользователя.

Сброс пароля — отдельный токен типа сброса. Ссылка /reset?token=…. Если SMTP нет, ссылка видна только в логе сервера.

Как панель понимает администратора

/admin на клиенте проверяет, что токен есть, и спрашивает auth.me. Если роль не admin, показывается экран «Нет доступа», данные панели не рисуются. Серверные процедуры админки дополнительно проверяют роль. Спрятать пункт меню недостаточно.

Кабинет

/account без токена уходит на /login?next=/account. В профиле: ник, почта, дата регистрации (users.created_at), подтверждена ли почта. Смена пароля — через /reset, не отдельной формой в кабинете.