Skip to content

Забыл пароль / Сброс пароля — все responses бэкенда


POST /auth/forgot-password

Поля запроса:

json
{
  "email": "user@example.com"
}

Успех — 200 OK

json
{
  "data": {
    "sent": true
  }
}

Всегда возвращает "sent": true — даже если email не найден в базе (защита от перебора аккаунтов). Если email существует — отправляется письмо с токеном сброса (TTL 1 час).


Ошибки

CSRF — 422

Формат: { "error": { "code": "validation_error", "message": "Validation failed", "details": { "csrf": ["..."] } } }

Backend messageКогдаТекст для фронта (RU)
CSRF token is requiredНет CSRF-токенаОшибка безопасности. Перезагрузите страницу и попробуйте снова
CSRF token mismatchТокен не совпадаетОшибка безопасности. Перезагрузите страницу и попробуйте снова
Invalid CSRF tokenНевалидная подписьОшибка безопасности. Перезагрузите страницу и попробуйте снова

Content-Type — 400

Backend messageТекст для фронта (RU)
Content-Type must be application/json or multipart/form-dataПроизошла техническая ошибка. Попробуйте ещё раз

Rate limit — 429

Лимит: 3 запроса на email за 1 час (sliding window).

Заголовки: Retry-After, X-RateLimit-Limit: 3, X-RateLimit-Remaining, X-RateLimit-Reset

Backend messageТекст для фронта (RU)
Too many requestsСлишком много запросов. Подождите и попробуйте снова

Валидация полей — 422

Формат: { "error": { "code": "validation_error", "message": "Validation failed", "details": { "<field>": ["..."] } } }

body
Backend messageКогдаТекст для фронта (RU)
Request body must be valid JSONТело запроса не JSONПроизошла техническая ошибка. Попробуйте ещё раз
email
Backend messageКогдаТекст для фронта (RU)
Field "email" is required and must be a non-empty stringОтсутствует / пустойВведите email
Field "email" must be a valid email addressНевалидный форматВведите корректный email

Серверная ошибка — 500

Backend messageТекст для фронта (RU)
Internal server errorПроизошла ошибка на сервере. Попробуйте позже

Маппинг error code → действие фронта

error.codeHTTPДействие фронта
validation_error422Показать ошибки под полем email из details
rate_limit_exceeded429Показать toast, заблокировать кнопку на Retry-After секунд
unsupported_media_type400Показать общую ошибку (техническая)
internal_error500Показать общую ошибку

POST /auth/reset-password

Поля запроса:

json
{
  "token": "abc123def456...",
  "password": "NewSecurePass1!"
}

Токен приходит из ссылки в email (обычно как query-параметр на фронте).

Успех — 200 OK

json
{
  "data": {
    "reset": true
  }
}

Побочные эффекты: пароль обновлён, токен помечен как использованный, failed_login_attempts сброшен, locked_until снят.


Ошибки

CSRF — 422

Backend messageКогдаТекст для фронта (RU)
CSRF token is requiredНет CSRF-токенаОшибка безопасности. Перезагрузите страницу и попробуйте снова
CSRF token mismatchТокен не совпадаетОшибка безопасности. Перезагрузите страницу и попробуйте снова
Invalid CSRF tokenНевалидная подписьОшибка безопасности. Перезагрузите страницу и попробуйте снова

Content-Type — 400

Backend messageТекст для фронта (RU)
Content-Type must be application/json or multipart/form-dataПроизошла техническая ошибка. Попробуйте ещё раз

Валидация полей — 422

Формат: { "error": { "code": "validation_error", "message": "Validation failed", "details": { "<field>": ["..."] } } }

body
Backend messageКогдаТекст для фронта (RU)
Request body must be valid JSONТело запроса не JSONПроизошла техническая ошибка. Попробуйте ещё раз
token
Backend messageКогдаТекст для фронта (RU)
Field "token" is required and must be a non-empty stringОтсутствует / пустойСсылка для сброса пароля повреждена. Запросите новую
Invalid or expired reset tokenТокен не найден, истёк (>1 час) или уже использованСсылка для сброса пароля недействительна или истекла. Запросите новую
password
Backend messageКогдаТекст для фронта (RU)
Field "password" is required and must be a non-empty stringОтсутствует / пустойВведите новый пароль
Password must be at least 8 charactersМенее 8 символовПароль должен содержать минимум 8 символов
Password must not exceed 128 charactersБолее 128 символовПароль не должен превышать 128 символов
Password must contain at least 1 uppercase letterНет заглавной буквыПароль должен содержать хотя бы одну заглавную букву
Password must contain at least 1 lowercase letterНет строчной буквыПароль должен содержать хотя бы одну строчную букву
Password must contain at least 1 digitНет цифрыПароль должен содержать хотя бы одну цифру
Password must contain at least 1 special characterНет спецсимволаПароль должен содержать хотя бы один спецсимвол (!@#$%^&* и т.д.)
Password must not contain 3 or more repeated charactersaaa, 111 и т.п.Пароль не должен содержать три и более одинаковых символа подряд
Password must not contain 3 or more sequential charactersabc, 123, xyzПароль не должен содержать три и более последовательных символа (abc, 123)
Password is too commonИз списка популярных паролейЭтот пароль слишком простой. Придумайте другой
Password must not contain the email local partПароль содержит часть email до @Пароль не должен содержать часть вашего email

Несколько password-ошибок могут прийти одновременно в одном массиве.

Серверная ошибка — 500

Backend messageТекст для фронта (RU)
Internal server errorПроизошла ошибка на сервере. Попробуйте позже

Маппинг error code → действие фронта

error.codeHTTPДействие фронта
validation_error (token)422Показать сообщение о недействительной ссылке + кнопку «Запросить новую»
validation_error (password)422Показать ошибки под полем пароля из details
unsupported_media_type400Показать общую ошибку (техническая)
internal_error500Показать общую ошибку