-
Notifications
You must be signed in to change notification settings - Fork 1
Восстановление пароля
Восстановить пароль пользователя можно несколькими способами:
- По электронному адресу;
- По номеру телефона.
Далее по тексту идентификатору.
Восстановление пароля происходит в два этапа, но с небольшими различиями для каждого из способов.
-
На первом этапе передаётся электронный адрес. Если указанный электронный адрес обнаружен и подтверждён в системе то на него высылается письмо с ссылкой (URI) для перехода на станицу установки нового поля. В ответ система выдает талон восстановления пароля (recovery ticket). Обратите внимание, что если электронный адрес не обнаружен или не подтверждён то талон будет намеренно фальшивым (что-бы нельзя было определить зарегистрирован ли пользователь с указанным электронным адресом);
-
На втором этапе, после перехода пользователя по ссылке и ввода нового пароля, вызывается метод сброса пароля, который принимает на входе три параметра: талон восстановления пароля (recovery ticket), секретный ответ (security answer) и новый пароль пользователя (password). Первые два параметра будут содержаться в URI перехода на станицу установки нового поля.
Формат URI:
<schema>://<host:[port]>/user/password/recovery/<recovery-ticket>/<security-answer>
Пример:
https://example.ru/user/password/recovery/bc0d227a-a493-4382-9b47-32c48f8ef650/f444f0a5d3408ffb415f45cf09466845fe22b358
-
На первом этапе передаётся номер телефона. Если указанный номер обнаружен и подтверждён в системе то на него высылается SMS/Push сообщение с числовым кодом восстановления пароля (секретным ответом). В ответ система выдает талон восстановления пароля (recovery ticket). Талон нужно запомнить. Обратите внимание, что если номер телефона не обнаружен или не подтверждён то талон будет намеренно фальшивым (что-бы нельзя было определить зарегистрирован ли пользователь с указанным номером телефона);
-
На втором этапе, после получения от пользователя кода (секретного ответа) из отправленного сообщения, вызывается метод сброса пароля, который принимает на входе три параметра: талон восстановления пароля (recovery ticket), секретный ответ (security answer) и новый пароль пользователя (password).
POST /api/v1/user/password/recovery
Запускает процедуру восстановления пароля пользователя.
Параметры запроса:
Имя | Тип | Описание |
---|---|---|
identifier | STRING | Обязательный. Идентификатор пользователя (username, email, phone). |
Формат ответа:
Поле | Тип | Описание |
---|---|---|
ticket | UUID | Талон восстановления пароля. |
POST /api/v1/user/security/answer
Сверяет секретный ответ.
Параметры запроса:
Имя | Тип | Описание |
---|---|---|
ticket | UUID | Обязательный. Талон восстановления пароля (recovery ticket). |
securityanswer | STRING | Обязательный. Секретный ответ (security answer). |
Формат ответа:
Поле | Тип | Описание |
---|---|---|
result | BOOLEAN | Результат выполнения запроса. |
message | STRING | Сообщение. |
POST /api/v1/user/password/reset
Сбрасывает пароль пользователя.
Параметры запроса:
Имя | Тип | Описание |
---|---|---|
ticket | UUID | Обязательный. Талон восстановления пароля (recovery ticket). |
securityanswer | STRING | Обязательный. Секретный ответ (security answer). |
password | STRING | Обязательный. Новый пароль пользователя. |
Формат ответа:
Поле | Тип | Описание |
---|---|---|
result | BOOLEAN | Результат выполнения запроса. |
message | STRING | Сообщение. |
Примеры запросов:
POST /api/v1/user/password/recovery HTTP/1.1
Host: localhost:8080
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.[сокращенно для краткости].NorYsi-Ht826HUFCEArVZ60_dEUmYiJYXubnTyweIMg
Content-Type: application/json
{"identifier": "[email protected]"}
POST /api/v1/user/password/reset HTTP/1.1
Host: localhost:8080
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.[сокращенно для краткости].NorYsi-Ht826HUFCEArVZ60_dEUmYiJYXubnTyweIMg
Content-Type: application/json
{"ticket": "bc0d227a-a493-4382-9b47-32c48f8ef650", "securityanswer": "f444f0a5d3408ffb415f45cf09466845fe22b358", "password": "NewPassword"}
POST /api/v1/user/password/recovery HTTP/1.1
Host: localhost:8080
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.[сокращенно для краткости].NorYsi-Ht826HUFCEArVZ60_dEUmYiJYXubnTyweIMg
Content-Type: application/json
{"identifier": "79001234567"}
POST /api/v1/user/password/reset HTTP/1.1
Host: localhost:8080
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.[сокращенно для краткости].NorYsi-Ht826HUFCEArVZ60_dEUmYiJYXubnTyweIMg
Content-Type: application/json
{"ticket": "54587c84-063e-43d0-9160-27544c5d811e", "securityanswer": "337789", "password": "NewPassword"}