API: forgot-password / reset-password #57
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Проблема
На Front в UX-backlog отложен forgot-password: нет Back API. Есть только смена пароля через
PATCH /v1/user/me(нужны Bearer + current_password).Цель
Неаутентифицированный сброс пароля: запрос по email → токен → установка нового пароля.
Варианты
A (рекомендуется)
POST /v1/forgot-password{email}→ всегда200{message}(без enumeration)POST /v1/reset-password{token, password}→200; ошибки404/410/400password_reset(как verification, RAM, TTL 1h), не смешивать с email-verifylogic_email:send_password_reset/2(stub io:format, как verification)GET /v1/admin/users/:id/password-reset-tokenдля stage/IFTpassword_hash, удалить токен, опционально revoke sessionsactiveпользователей; pending/frozen — silent 200 на forgotB — переиспользовать
verificationс полемpurpose(меньше таблиц, риск путаницы с verify).C — только admin «force set password» без публичного forgot (не закрывает UX Login).
Критерии приёмки (A)
Беру в работу после выбора варианта.
Рекомендую A: отдельные endpoints + таблица
password_reset, stub email, admin token для стендов. Не смешивать сPOST /v1/verify.Жду подтверждение: A / B / C.
Готово (вариант A).
Что сделано
POST /v1/forgot-password— всегда 200 (без enumeration)POST /v1/reset-password—{token, password}(≥8), отзыв refresh-сессийpassword_reset(RAM, TTL 1h), stublogic_email:send_password_reset/2GET /v1/admin/users/:id/password-reset-tokenдля стендовТесты
logic_password_reset_tests,admin_handler_user_password_reset_token_tests— okapi_users_SUITE:user_test_password_reset— okКоммиты
61816e1ea1f7e1Front UI forgot/reset — отдельно.