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

Материал из боты telegram - ebot.one - редактор ботов
Перейти к: навигация, поиск
(Демо регистрации через бота telegram)
 
(не показано 27 промежуточных версий этого же участника)
Строка 2: Строка 2:
 
== Демо регистрации через бота telegram ==
 
== Демо регистрации через бота telegram ==
  
Проект Ebot.one представляет '''[http://r911236z.bget.ru/www_events/ddd/sender Демо]''' регистрации через бота telegram.
+
Проект Ebot.one представляет мини-фреймворк с использованием регистрации через бота telegram.
 +
 
 +
* '''[http://r911236z.bget.ru/www_events/ddd/sender Демо]''' фреймворка.
 +
* '''[http://sendmanager.ru Рабочий проект]''' с использованием фреймворка.
  
 
'''Данный набор файлов (скачать можно по ссылкам ниже) имеет смысл использовать в качестве основы для проекта если''':
 
'''Данный набор файлов (скачать можно по ссылкам ниже) имеет смысл использовать в качестве основы для проекта если''':
Строка 16: Строка 19:
 
'''Вид десктоп версии:'''
 
'''Вид десктоп версии:'''
  
[[Файл:Sendmanager login.png|center|]]
+
[[Файл:Sendmanager login.png|600px|center|]]
 +
 
  
 
'''Вид мобильной версии:'''
 
'''Вид мобильной версии:'''
Строка 34: Строка 38:
 
'''Файлы web-интерфейса регистратора:'''
 
'''Файлы web-интерфейса регистратора:'''
  
[https://ebot.one/all/s_radoid/dialogs/demo/register_demo/register_demo.zip register_demo.zip] (579 Kb)
+
[https://ebot.one/all/s_radoid/dialogs/demo/register_demo/version_1_1_2/register_demo.zip register_demo.zip] (1504 Kb)
  
 
'''Файл дампа базы:'''
 
'''Файл дампа базы:'''
  
[https://ebot.one/all/s_radoid/dialogs/demo/register_demo/sender_users.sql.zip sender_users.sql.zip] (2 Kb)
+
[https://ebot.one/all/s_radoid/dialogs/demo/register_demo/version_1_1_2/sender_users.sql.zip sender_users.sql.zip] (2 Kb)
  
 
'''Экспорт бота для генерации кода при регистрации нового пользователя:'''
 
'''Экспорт бота для генерации кода при регистрации нового пользователя:'''
  
[https://ebot.one/all/s_radoid/dialogs/demo/register_demo/export_2018-04-22_21-44-21.zip export_2018-04-22_21-44-21.zip] (1 Kb)
+
[https://ebot.one/all/s_radoid/dialogs/demo/register_demo/version_1_1_2/export_2018-04-23_20-31-45.zip export_2018-04-23_20-31-45.zip] (1 Kb)
  
 
'''Библиотека иконок:''' (Не обязательно)
 
'''Библиотека иконок:''' (Не обязательно)
Строка 48: Строка 52:
 
[https://ebot.one/all/s_radoid/dialogs/demo/register_demo/fonts.zip fonts.zip] (8 281 Kb)
 
[https://ebot.one/all/s_radoid/dialogs/demo/register_demo/fonts.zip 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''';
+
По умолчанию файлы иконок загружаются с '''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''').
 
Конфигурационный файл web движка - '''/register_demo/sender/settings.php''' (архив '''register_demo.zip''').
Строка 59: Строка 63:
  
 
<code>
 
<code>
 
 
$admin_chat_id = '12345';  - chat_id администратора бота. Для того чтобы узнать свой chat_id (ID в телеграме) достаточно написать боту: '''getChatId'''. Это значение необходимо прописать здесь в конфигурационном файле и в настройках бота в редакторе.
 
$admin_chat_id = '12345';  - chat_id администратора бота. Для того чтобы узнать свой chat_id (ID в телеграме) достаточно написать боту: '''getChatId'''. Это значение необходимо прописать здесь в конфигурационном файле и в настройках бота в редакторе.
  
Строка 67: Строка 70:
  
 
$bot_api_key = '12345:asdfgh'; - [[Создание_аккаунта|API KEY Бота]]. API KEY бота в telegram (выдает botfather) при создании бота. Также прописывается в настройках бота в редакторе.
 
$bot_api_key = '12345:asdfgh'; - [[Создание_аккаунта|API KEY Бота]]. API KEY бота в telegram (выдает botfather) при создании бота. Также прописывается в настройках бота в редакторе.
 
 
</code>
 
</code>
  
 
'''my_sql.class''' - подключение к базе данных
 
'''my_sql.class''' - подключение к базе данных
  
== Модули: ==
+
В механизме реализована проверка на частоту обращения к скриптам, которые могут представлять потенциальный интерес для взлома. Если пользователь пытается обратиться к скрипту чаще чем указано в настройках получит сообщение с предложением повторить запрос позже. Настройка этого лимита находится в файле '''time_access_inc.php''' по пути '''all/sender/includes'''. '''$access_time_max''' - переменная, которая задает указанный лимит. По умолчанию это 2 секунды.
 +
 
 +
== Модули ==
  
 
Модули (разделы) задаются в конфигурационном файле '''settings.php''' по пути '''/register_demo/sender/settings.php''' (архив '''register_demo.zip''').
 
Модули (разделы) задаются в конфигурационном файле '''settings.php''' по пути '''/register_demo/sender/settings.php''' (архив '''register_demo.zip''').
Строка 86: Строка 90:
 
Русскоязычные (и другие языки) имена разделов находятся в файле '''locale_data.php''' по пути '''register_demo/sender/locale'''.
 
Русскоязычные (и другие языки) имена разделов находятся в файле '''locale_data.php''' по пути '''register_demo/sender/locale'''.
  
== Языки: ==
+
== Языки ==
  
 
Перечень языков которые вы хотите иметь в системе следует указать в '''locale_utils.php''' в функции '''getLangs'''
 
Перечень языков которые вы хотите иметь в системе следует указать в '''locale_utils.php''' в функции '''getLangs'''
Строка 96: Строка 100:
 
Русскоязычные (и другие языки) имена разделов находятся в файле '''locale_data.php''' по пути '''register_demo/sender/locale'''.
 
Русскоязычные (и другие языки) имена разделов находятся в файле '''locale_data.php''' по пути '''register_demo/sender/locale'''.
  
 
+
== Роли (статусы пользователей) ==
== Роли (статусы пользователей): ==
 
  
 
Первый пользователь, который зарегистрируется в системе будет иметь роль (статус) '''root''', а все последующие - '''user'''. Раздела, которые будут видны пользователем того или иного статуса можно корректировать в массиве '''modules_list''' в конфигурационном файле '''settings.php''' (архив '''register_demo.zip'''). В этом же массиве можно указать какие модули доступны для пользователя.
 
Первый пользователь, который зарегистрируется в системе будет иметь роль (статус) '''root''', а все последующие - '''user'''. Раздела, которые будут видны пользователем того или иного статуса можно корректировать в массиве '''modules_list''' в конфигурационном файле '''settings.php''' (архив '''register_demo.zip'''). В этом же массиве можно указать какие модули доступны для пользователя.
Строка 103: Строка 106:
 
функция getModulesList, которая используется в некоторых элементах массива '''modules_list''' возвращает список всех модулей за исключением тех, которые переданы ей в качестве аргумента. Например, если вы хотите разрешить доступ ко всем модулям - строчка для указания доступа будет выглядеть так: $add['modules_access'] = getModulesList(); Но если вы хотите разрешить доступ ко всем разделам кроме main и registration (чего не стоит делать вероятно) - то это будет выглядеть как: $add['modules_access'] = getModulesList(array("main", "registration"));
 
функция 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''').
 
Имя бота, генерирующего для новых пользователей код, можно указать в конфигурационном файле '''settings.php''' по пути '''/register_demo/sender/settings.php''' (архив '''register_demo.zip''').
Строка 115: Строка 118:
 
[[Файл:Sendmanager modile registration.png|400px|thumb|center|]]
 
[[Файл:Sendmanager modile registration.png|400px|thumb|center|]]
  
Файлы бота можно скачать по ссылкам выше.
+
Файлы бота можно скачать по ссылкам выше. Их необходимо импортировать в настройках Вашего бота в редакторе.
 +
 
 +
О создании бота можно прочитать '''[[Заглавная_страница|тут]]'''.
 +
 
 +
О том как импортировать структуру бота можно ознакомиться '''[[Импорт ботов|тут]]'''.
  
О создании бота можно прочитать [[Заглавная_страница|тут]].
+
'''Важно''': После импорта в командах бота пути к генерации кода и восстановления пароля на пути к вашим скриптам.
  
 
'''Следует иметь ввиду, что при необходимости система дописывается до работы с подтверждением через СМС или Email'''.  
 
'''Следует иметь ввиду, что при необходимости система дописывается до работы с подтверждением через СМС или Email'''.  
Строка 127: Строка 134:
 
* поменять текст, говорящий, что генерация кода производится ботом. Сделать это можно в файле '''index.php''' по пути '''register_demo/sender/modules/registration'''.
 
* поменять текст, говорящий, что генерация кода производится ботом. Сделать это можно в файле '''index.php''' по пути '''register_demo/sender/modules/registration'''.
  
== Страница 404 (Ненайденный раздел): ==
+
== Страница 404 (Ненайденный раздел) ==
  
 
В случае если модуль (раздел) не найден система выдаст ошибку '''404''':
 
В случае если модуль (раздел) не найден система выдаст ошибку '''404''':
Строка 133: Строка 140:
 
[[Файл:Sendmanager 404.png|400px|thumb|center|]]
 
[[Файл:Sendmanager 404.png|400px|thumb|center|]]
  
== Страница 401 (Доступ закрыт): ==
+
== Страница 401 (Доступ закрыт) ==
  
 
В случае если запрашиваемый пользователем модуль закрыт для пользователей его статуса система выдаст страницу модуля '''401''' (который и отвечает за это). На самом деле даже радел '''404''', содержимое которого выдается в случае несуществующей страницы (как и любой модуль, хранящийся в '''register_demo/sender/modules''') может при необходимости быть закрыт для пользователя.
 
В случае если запрашиваемый пользователем модуль закрыт для пользователей его статуса система выдаст страницу модуля '''401''' (который и отвечает за это). На самом деле даже радел '''404''', содержимое которого выдается в случае несуществующей страницы (как и любой модуль, хранящийся в '''register_demo/sender/modules''') может при необходимости быть закрыт для пользователя.
Строка 145: Строка 152:
 
== Версия ==
 
== Версия ==
  
Текущая версия библиотеки '''1.1.1'''
+
Текущая версия библиотеки '''1.1.2'''

Текущая версия на 12:49, 9 мая 2018

Демо регистрации через бота 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