...
Затем код и другие данные (дата генерации кода, время хранения записи, логин, телефон, счётчик текущего кода подтверждения) сохраняются в кеш. Если необходимо, такие записи можно найти в кеше по ключу с логином. Формат ключа: "recovery_#{login}". В нашем случае сохранится запись с ключом: "recovery_sir_arthur".
Вызов скрипта для отправки сообщения
Путь к скрипту задаётся в конфиге в script_path. Это должен быть .sh скрипт, который принимает 3 параметра. Они описаны в разделе с конфигом. Предполагается, что в скрипте будет дёргаться отправка СМС сообщения на номер абонента.
После вызова скрипта абонента перебрасывает на страницу с вводом кода подтверждения.
Ввод кода подтверждения
Абонент получает код на телефон и вводит его в поле "Код". Если код совпадает с сохраненным в кеше, то абонент переходит на шаг смены пароля. Если код не приходит, то можно отправить повторно с помощью ссылки "Отправить ещё раз". Повторная отправка вызовет генерацию нового кода, вызовет скрипт для отправки СМС и обновит запись в кеше.
Для повторной отправки установлен таймаут в секундах, который задаётся в конфиге в resend_interval. Таймер с таймаутом будет работать даже после обновления страницы.
Количество повторных отправок тоже ограничено параметром в конфиге max_codes_number. Если абонент превысит число повторных отправок, то будет выведена ошибка "Превышено число повторных обращений. Обратитесь в контактный центр".
Если абонент ввёл правильный код, то его перебросит на страницу ввода нового пароля.
Надо понимать, что восстановление пароля и все ограничения (на таймаут, повторную отправку) действуют в течение времени жизни записи в кеше. Это значение задаётся в конфиге в cache.expiration в минутах.