Авторизация — Восстановление пароля
Трёхшаговый flow: ввод email → проверка почты → новый пароль.
Шаг 1: Ввод email (/forgot-password)
Что видит пользователь
Заголовок: “Восстановление пароля” Текст: “Введите email, указанный в вашем аккаунте. Мы отправим ссылку для сброса пароля.”
| Поле | Тип ввода |
|---|---|
| Text input (type=email) |
Кнопки: “Отправить ссылку” (primary), “Вернуться к логину” (ссылка)
Действие
API: POST /api/v1/admin/auth/forgot-password
Успех (всегда 200): переход к шагу 2. Ошибка валидации (400): “Введите корректный email” под полем.
Шаг 2: Проверка почты
Что видит пользователь
Заголовок: “Проверьте почту” Текст: “Если аккаунт с email [email] существует, мы отправили письмо со ссылкой для сброса пароля.” Подтекст: “Не получили письмо? Проверьте папку «Спам» или попробуйте ещё раз.”
Кнопки: “Отправить повторно”, “Вернуться к логину”
Не раскрываем существует ли email в системе — одно и то же сообщение для любого email.
Шаг 3: Новый пароль (/reset-password?token=xxx)
Что видит пользователь
Пользователь перешёл по ссылке из email. Ссылка содержит токен.
Заголовок: “Новый пароль”
| Поле | Тип ввода |
|---|---|
| Новый пароль | Password input |
| Подтверждение пароля | Password input |
Кнопка: “Сохранить пароль”
Действие
API: POST /api/v1/admin/auth/reset-password
Успех: сообщение “Пароль успешно изменён” + кнопка “Войти” → /login
Ошибки:
| Код ошибки | Что показываем |
|---|---|
VALIDATION_ERROR (400) | “Пароли не совпадают” или “Пароль слишком короткий” |
INVALID_RESET_TOKEN (422) | “Ссылка недействительна или срок действия истёк. Запросите новую ссылку.” + кнопка → /forgot-password |
TOKEN_ALREADY_USED (422) | “Эта ссылка уже была использована. Запросите новую.” + кнопка → /forgot-password |
Состояния
| Состояние | Что показываем |
|---|---|
| Шаг 1: начальное | Форма с email |
| Шаг 1: загрузка | Кнопка disabled, спиннер |
| Шаг 2: ожидание | Сообщение “Проверьте почту” |
| Шаг 3: начальное | Форма с двумя полями пароля |
| Шаг 3: загрузка | Кнопка disabled, спиннер |
| Шаг 3: успех | ”Пароль изменён” + кнопка “Войти” |
| Шаг 3: токен невалиден | Ошибка + ссылка на повторный запрос |
Переходы
| Откуда | Куда | Триггер |
|---|---|---|
| Логин | Шаг 1 | Ссылка “Забыли пароль?” |
| Шаг 1 | Шаг 2 | Успешная отправка |
| Шаг 2 | Шаг 1 | ”Отправить повторно” |
| Шаг 2 | Логин | ”Вернуться к логину” |
| Шаг 3 | Клик по ссылке в письме | |
| Шаг 3 | Логин | Успешная смена пароля |
| Шаг 3 | Шаг 1 | Токен невалиден → “Запросите новую ссылку” |