...
Путь к скрипту задаётся в конфиге в script_path. Это должен быть .sh скрипт, который принимает 3 параметра . Они - они описаны в разделе с конфигомконфигурационным файлом. Предполагается, что в скрипте будет дёргаться отправка скрипт обращается к внешнему сервису для отправки СМС сообщения на номер абонента.
После вызова скрипта абонента перебрасывает абонент перенаправляется на страницу с вводом кода подтверждения.
Пример скрипта на Python для сервиса SMS-центр (https://smsc.ru):
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import sys, os, re
login = "SmsCenterLogin"
password = "PassHere"
# Проверка корректности передачи аргументов
if len(sys.argv) < 3:
os._exit(0)
# Аргументы
phone_number = sys.argv[3] # Номер телефона
msg = sys.argv[1] # Сообщение, уже содержит код
code = sys.argv[2] # Код подтверждения
# Проверка корректности номера телефона
p = re.compile("^\d{11}$")
phone_match = p.match(phone_number)
if not(phone_match) or ((phone_match) and (phone_match.group() != phone_number)):
os._exit(0)
# Формирование команды с запросом к SMS-центру
cmd = "curl --url \"https://smsc.ru/sys/send.php\" -d " + \
"\"login=%s&psw=%s&phones=%s&mes=%s&charset=utf-8\"" % \
(login, password, phone_number, msg)
# Отправка команды через SMS-центр
os.system(cmd) |
Ввод кода подтверждения
Абонент получает код на телефон и вводит его в поле "Код". Если код совпадает с сохраненным в кеше, то абонент переходит на шаг смены пароля. Если код не приходит, то можно отправить повторно с помощью ссылки "Отправить ещё раз". Повторная отправка вызовет генерацию нового кода, вызовет скрипт для отправки СМС и обновит запись в кеше.
...