Восстановление пароля с помощью почты

Принцип восстановления пароля

Восстановление пароля подразумевает под собой первичную проверку существования пользователя по какому-то признаку, например email или номеру телефона в базе данных. Затем включает генерацию уникального кода подтверждения, отправку этого кода пользователю (например, по электронной почте или через SMS), а затем его проверку. После успешной проверки кода пользователю предоставляется возможность установить новый пароль или вернуть ошибку если код был ошибочным.
Все эти действия удобнее разделить на 2 сценария:
  • Сценарий: Запрос на восстановление пароля
  • Сценарий: Восстановление/изменение пароля

Восстановление пароля по почте с помощью формы на странице

Восстановления пароля по электронной почте начинается с того, что пользователь вводит свой email на странице восстановления пароля. Страница восстановления пароля - это обычная страница с формой, которая позволяет отправить поле с почтой пользователя в сценарий.
Вам нужны:
  • Страница восстановления пароля с 2 секциями с формами и настроенными условиями видимости. В первой секции в форме запрашивается почта пользователя, во второй секции в форме проверяется код и изменяется пароль, если код является верным. Каждая из форм вызывает свой сценарий.
  • Аккаунт в сервисе для рассылок, который поддерживает отправку писем по API, например в сервисе NotiSend и полученный API ключ для настройки интеграции.
  • 2 сценария, первый для Запроса на восстановления пароля, второй для Восстановления/изменения текущего пароля пользователя.

Настройка сценария Запрос на восстановление пароля

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

Примеры сценария с восстановлением по почте

Сценарий Запрос для восстановления пароля
Сценарий Восстановление/изменение пароля

Видео по настройке восстановления пароля

Видео в разработке