Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Путь к скрипту задаётся в конфиге в script_path. Это должен быть .sh скрипт, который принимает 3 параметра . Они - они описаны в разделе с конфигомконфигурационным файлом. Предполагается, что в скрипте будет дёргаться отправка скрипт обращается к внешнему сервису для отправки СМС сообщения на номер абонента.

После вызова скрипта абонента перебрасывает абонент перенаправляется на страницу с вводом кода подтверждения.

Пример скрипта на Python для сервиса SMS-центр (https://smsc.ru):

Code Block
languagepy
titlesend_sms.py
collapsetrue
#!/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)

 

Ввод кода подтверждения

Абонент получает код на телефон и вводит его в поле "Код". Если код совпадает с сохраненным в кеше, то абонент переходит на шаг смены пароля. Если код не приходит, то можно отправить повторно с помощью ссылки "Отправить ещё раз". Повторная отправка вызовет генерацию нового кода, вызовет скрипт для отправки СМС и обновит запись в кеше.

...