Принцип восстановления пароля
Восстановление пароля подразумевает под собой первичную проверку существования пользователя по какому-то признаку, например email или номеру телефона в базе данных. Затем включает генерацию уникального кода подтверждения, отправку этого кода пользователю (например, по электронной почте или через SMS), а затем его проверку. После успешной проверки кода пользователю предоставляется возможность установить новый пароль или вернуть ошибку если код был ошибочным.
Все эти действия удобнее разделить на 2 сценария:
- Сценарий: Запрос на восстановление пароля
- Сценарий: Восстановление/изменение пароля
Восстановление пароля по почте с помощью формы на странице
Восстановления пароля по электронной почте начинается с того, что пользователь вводит свой email на странице восстановления пароля. Страница восстановления пароля - это обычная страница с формой, которая позволяет отправить поле с почтой пользователя в сценарий.
Вам нужны:
- Страница восстановления пароля с 2 секциями с формами и настроенными условиями видимости. В первой секции в форме запрашивается почта пользователя, во второй секции в форме проверяется код и изменяется пароль, если код является верным. Каждая из форм вызывает свой сценарий.
- Аккаунт в сервисе для рассылок, который поддерживает отправку писем по API, например в сервисе NotiSend и полученный API ключ для настройки интеграции.
- 2 сценария, первый для Запроса на восстановления пароля, второй для Восстановления/изменения текущего пароля пользователя.
Настройка сценария Запрос на восстановление пароля
- Пользователь вводит свой email, запускается сценарий
Запрос на восстановления пароля
.
- С помощью действия
Найти одну запись
ищем пользователя с введенной почтой в таблице Пользователи.
Скриншот
- Если пользователь существует в сценарии генерируется уникальный код восстановления (например, случайный набор символов с помощью формулы и сохраняется в переменную -
code
).
Скриншот с тем, как это выглядит в сценарии
Формула для генерации кода, ее вставить в значение переменной
code
- Этот же код необходимо сохранить в базу данных, например в таблицу Пользователи, предварительно создав дополнительную колонку для его хранения. Сохранить его можно с помощью
Изменения записи
ранее найденного пользователя и записи переменнойcode
в созданную колонку.
Скриншот как это выглядит в сценарии
- В письме клиенту мы будем отправлять не просто код, а специальную ссылку с кодом. Для этого создайте в сценарии переменную
link_password
для хранения вашей ссылки страницы восстановления пароля.
Скриншот как это выглядит в сценарии
- Используя API сервиса рассылки, который позволяет отправлять письма, например NotiSend, код отправляется на электронную почту пользователя с помощью действия
HTTP-запрос
Скриншот как это выглядит в сценарии
- Пользователь получает письмо с кодовой ссылкой, по которой переходит и попадает на ту же страницу, но с другой секцией и формой, где предлагается ввести новый пароль. Корректность кода мы проверим уже в сценарии для восстановления/изменения пароля.
Если код совпадает с сохраненным в базе данных, пользователю предоставляется возможность установить новый пароль.
Сценарий восстановления пароля/изменения
- С помощью действия
Найти одну запись
находим пользователя с полученным из формы кодом. Если нет пользователей с таким кодом, возвращаем ошибкуНеверный код
Скриншот из сценария
- Если пользователь с таким кодом существует, генерируем переменную
password_salt
для хранения соли пароля и переменнуюpassword_hash
для хэша пароля.
Скриншот из сценария
- Изменяем пароль этому пользователю с помощью действия
Изменить записи
. Обновить значения хэша пароля, соль пароль, сбросить код для восстановления пароля.
Скриншот из сценария
Примеры сценария с восстановлением по почте
Сценарий Запрос для восстановления пароля
Сценарий Восстановление/изменение пароля
Видео по настройке восстановления пароля
Видео в разработке