Модуль с подтверждением регистрации через telegram (аналог смс подтверждения)

From боты telegram - ebot.one - редактор ботов
Jump to: navigation, search

Демо регистрации через бота telegram

Проект Ebot.one представляет мини-фреймворк с использованием регистрации через бота telegram.

Данный набор файлов (скачать можно по ссылкам ниже) имеет смысл использовать в качестве основы для проекта если:

  • В вашей системе (например, сайте) будет регистрация пользователей.
  • Нужно свести к минимуму возможность одним пользователем завести несколько аккаунтов.
  • Механизм подтверждения уникальности пользователя должен быть бюджетным (сообщение от бота telegram бюджетнее смс).
  • Будущая система должна поддерживать более одной языковой версии.
  • Будущая система будет иметь как минимум разделение на пользователей и администраторов.
  • Необходимо будет добавлять разделы.
  • Необходимо чтобы была настройка какие разделы видны, а какие доступны для того или иного типа пользователя системы.

Вид десктоп версии:

Sendmanager login.png


Вид мобильной версии:

Sendmanager modile main 1.png
Sendmanager modile main 2.png

Данныая версия примера использует фреймфорк bootstrap, что дает системе адаптивность и возможность быстро поменять визуальную составляющую проекта, поскольку bootstrap достаточно прост в освоении, но Вам не составит труда заменить участки кода bootstrap на свои. bootstrap подключен в файле index.php (архив register_demo.zip)


Файлы

Файлы web-интерфейса регистратора:

register_demo.zip (1504 Kb)

Файл дампа базы:

sender_users.sql.zip (2 Kb)

Экспорт бота для генерации кода при регистрации нового пользователя:

export_2018-04-23_20-31-45.zip (1 Kb)

Библиотека иконок: (Не обязательно)

fonts.zip (8 281 Kb)

По умолчанию файлы иконок загружаются с fontawesome.com но можно пожертвовать местом на хостинге (19,4 Mb) ради скорости загрузки иконок и скачать их (всю библиотеку) по ссылке выше. В этом случае папку fonts следует положить в корень папки /register_demo/sender (из архива register_demo.zip) и прописать в файле конфига /register_demo/sender/settings.php в переменной $fonts_local = true;

Конфигурационные файлы

Конфигурационный файл web движка - /register_demo/sender/settings.php (архив register_demo.zip).

Конфигурационные файлы бота для генерации регистрационного кода можно найти в register_demo/bots/source_reqs/77639817/SendManagerBot/ (архив register_demo.zip):

conf.php:

$admin_chat_id = '12345'; - chat_id администратора бота. Для того чтобы узнать свой chat_id (ID в телеграме) достаточно написать боту: getChatId. Это значение необходимо прописать здесь в конфигурационном файле и в настройках бота в редакторе.

$key_md5 = md5('sdfghj'); - md5 от key бота в редакторе (не путать с API KEY бота в telegram) (см. настройки бота в редакторе)

$admin_user_id = '56789'; - ID пользователя в редакторе

$bot_api_key = '12345:asdfgh'; - API KEY Бота. API KEY бота в telegram (выдает botfather) при создании бота. Также прописывается в настройках бота в редакторе.

my_sql.class - подключение к базе данных

В механизме реализована проверка на частоту обращения к скриптам, которые могут представлять потенциальный интерес для взлома. Если пользователь пытается обратиться к скрипту чаще чем указано в настройках получит сообщение с предложением повторить запрос позже. Настройка этого лимита находится в файле time_access_inc.php по пути all/sender/includes. $access_time_max - переменная, которая задает указанный лимит. По умолчанию это 2 секунды.

Модули

Модули (разделы) задаются в конфигурационном файле settings.php по пути /register_demo/sender/settings.php (архив register_demo.zip).

Для описания модулей предусмотрено два массива.

  • modules - массив для названий (URL) модулей и их иконок
  • modules_list - описывает какой роле (статусу) пользователя какие разделы видны и доступны. Также в этм массиве можно указать какой раздел загрузить после авторизации (захода в систему) пользователя. Например, администратора система перебросит на администрационный модуль, а пользователя на пользовательский.

Для добавления нового раздела достаточно продублировать модуль demo по пути register_demo/sender/modules, прописать его в массивах modulesи modules_list файла файда settings.php (архив register_demo.zip), а также поменять название функции в файле register_demo/sender/modules/ИМЯ ВАШЕГО МОДУЛЯ/locale/locale_data.php на getИмяВашегоМодуляMas, где ИмяВашегоМодуля должно быть с заглавной буквы. Например, если Ваш новый модуль называется emails то функция будет называться getEmailsMas. В этой функции следует описывать языковые версии используемых в модуле фраз. Пример языковых различий можно посмотреть в базовом файле языков locale_data.php по пути register_demo/sender/locale.

Русскоязычные (и другие языки) имена разделов находятся в файле locale_data.php по пути register_demo/sender/locale.

Языки

Перечень языков которые вы хотите иметь в системе следует указать в locale_utils.php в функции getLangs

Базовые слова системы (и их перевод), такие как названия базовых модулей (разделов) и т.д. хранятся в файле locale_data.php по пути register_demo/sender/locale

Фразы модулей хранятся в locale_data.php по пути register_demo/sender/modules/ИМЯ МОДУЛЯ

Русскоязычные (и другие языки) имена разделов находятся в файле locale_data.php по пути register_demo/sender/locale.

Роли (статусы пользователей)

Первый пользователь, который зарегистрируется в системе будет иметь роль (статус) root, а все последующие - user. Раздела, которые будут видны пользователем того или иного статуса можно корректировать в массиве modules_list в конфигурационном файле settings.php (архив register_demo.zip). В этом же массиве можно указать какие модули доступны для пользователя.

функция getModulesList, которая используется в некоторых элементах массива modules_list возвращает список всех модулей за исключением тех, которые переданы ей в качестве аргумента. Например, если вы хотите разрешить доступ ко всем модулям - строчка для указания доступа будет выглядеть так: $add['modules_access'] = getModulesList(); Но если вы хотите разрешить доступ ко всем разделам кроме main и registration (чего не стоит делать вероятно) - то это будет выглядеть как: $add['modules_access'] = getModulesList(array("main", "registration"));

Регистрационный бот

Имя бота, генерирующего для новых пользователей код, можно указать в конфигурационном файле settings.php по пути /register_demo/sender/settings.php (архив register_demo.zip).

Пример генерации кода для регистрации нового пользователя:

Sendmanager bot 1.png

Полученный от бота код пользователь введет при регистрации в Вашей системе:

Sendmanager modile registration.png

Файлы бота можно скачать по ссылкам выше. Их необходимо импортировать в настройках Вашего бота в редакторе.

О создании бота можно прочитать тут.

О том как импортировать структуру бота можно ознакомиться тут.

Важно: После импорта в командах бота пути к генерации кода и восстановления пароля на пути к вашим скриптам.

Следует иметь ввиду, что при необходимости система дописывается до работы с подтверждением через СМС или Email.

Для работы через новый сервис достаточно:

  • чтобы система генерировала новую запись в базе в таблице sender_users и в поле hash писала нужный Вам код.
  • поменять текст, говорящий, что генерация кода производится ботом. Сделать это можно в файле index.php по пути register_demo/sender/modules/registration.

Страница 404 (Ненайденный раздел)

В случае если модуль (раздел) не найден система выдаст ошибку 404:

Sendmanager 404.png

Страница 401 (Доступ закрыт)

В случае если запрашиваемый пользователем модуль закрыт для пользователей его статуса система выдаст страницу модуля 401 (который и отвечает за это). На самом деле даже радел 404, содержимое которого выдается в случае несуществующей страницы (как и любой модуль, хранящийся в register_demo/sender/modules) может при необходимости быть закрыт для пользователя.

Sendmanager 401.png

ЧПУ

Фалы примера работают через файл index.php по пути /register_demo/sender/ (архив register_demo.zip), выбранная пользователем страница отображается через подключение соответствующего странице модуля. Ссылки на страницы генерируются через функцию getModuleLink файла modules_utils.php по пути register_demo\sender\modules. При необходимости файлы можно настроить на работу через ЧПУ, для чего необходимо произвести соответствующие изменения в указанной функции.

Версия

Текущая версия библиотеки 1.1.2