Авторизация и регистрация по номеру телефона в Bitrix
Всем привет. У меня новый квест) За долгое время работы с битриксом приходилось реализовывать много чего, но вот с подключением MessageService по смс работать не приходилось.
На просторах интернета не много информации по этому вопросу, и та, что есть не работает как нужно, а часто вообще не работает.
Итак начнем!
Для подключения провайдера смс вам конечно же необходимо сначала протестировать api отправки смс на чистом php без битрикса, так я и сделал. Обычно это soap/curl или работа через сокеты и если ваш провайдер предоставляет библиотеку с которой нужно работать - это отлично. В основном предлагается библиотека QTSMS.class.php, при чем в разных источниках она совершенно разная, начиная от названий класса и методов и заканчивая самой логикой работы. Я скачал библиотеку которая по заверениям совместима с новым api для версий php 7.4, но я использовал старую версию api. Сама работа по отправке смс находится в файле Src/SmsClient.class.php (вся библиотека будет прикреплена к статье), и как мы видим на 222 строчке отправка выполняется через curl.
Хотелось бы пояснить, что целью данной статьи не является разбор именно создания скрипта отправки смс под определенный сервис, а только подключение своего MessageService по отправке смс.
Итак, скачиваем архив с библиотекой и распаковываем в директорию /bitrix/php_interface/sms/ или /local/php_interface/sms/, я специально не стал называть директорию lib или vendor и т.д.,как принято в битриксе или для загрузки из composer, чтобы по названию было сразу понятно, что там лежит. Если же у вас уже существуют данные директории и в них много библиотек, то конечно же размещайте файлы архива так /bitrix/php_interface/lib/sms/ или /local/php_interface/lib/sms/
Далее в этой же директории sms создаем файл, например index.php и заполняем его кодом класса, который и будет нашим sms MessageService.
На данный момент это рабочий класс для работы с \Bitrix\Main\Sms\Event, в будущем конечно же возможны изменения в названиях методов да и в принципе построения логики sms MessageService.
Далее открываем или создаем, если еще не создан файл /bitrix/php_interface/init.php или /local/php_interface/init.php
Добавляем в него обработчик события отправки смс и подключаем к нему наш класс
У меня после подключения вывалилась ошибка "класс \Bitrix\MessageService\Sender\Base не найден", возможно это связано с конфигурацией моего проекта и у вас все заработает, но если нет подключайте файл с двумя звездочками (**)
Все сохраняем и переходим по ссылке вашсайт/bitrix/admin/settings.php?lang=ru&mid=main&mid_menu=1#authorize
Переходим на вкладку "Почта и СМС" и ставим нашу службу как "Служба отправки СМС по умолчанию", а также выбираем номер отправителя по умолчанию
Теперь переходим к самому главному: в битриксе нет авторизации по смс в стандартном виде, например в компоненте регистрации по адресу вашсайт/bitrix/admin/fileman_file_edit.php?path=%2Fbitrix%2Fcomponents%2Fbitrix%2Fmain.register%2Fcomponent.php&full_src=Y&site=s1&lang=ru&&filter=Y&set_filter=Y
на 220 строчке вы найдете подключение провайдера смс.
А в компонентах вашсайт/bitrix/admin/fileman_file_edit.php?path=%2Fbitrix%2Fcomponents%2Fbitrix%2Fsystem.auth.form%2Fcomponent.php&full_src=Y&site=s1&lang=ru&&filter=Y&set_filter=Y или вашсайт/bitrix/admin/fileman_admin.php?PAGEN_1=1&SIZEN_1=20&lang=ru&site=s1&path=%2Fbitrix%2Fcomponents%2Fbitrix%2Fmain.auth.form%2F&del_filter=Y&find_name=auth нет, возможно в битриксе есть какие-то специальные компоненты для этого, но я их не нашел, да и выводить в публичной части необходимо в рамках шаблона компонента формы авторизации, так что в любом случае придется переписывать.
Нам понадобится файл кастомного шаблона авторизации вашсайт/bitrix/admin/fileman_file_edit.php?path=%2Fbitrix%2Ftemplates%2F(ваш_шаблон_сайта)%2Fcomponents%2Fbitrix%2Fsystem.auth.form%2Fmain%2Ftemplate.php&full_src=Y&site=s1&lang=ru&&filter=Y&set_filter=Y у вас может быть другой.
У меня на строчке 110 после
Добавляю
Также на строчке 39 после
Добавляю
Открываем кастомный файл js скриптов вашсайт/bitrix/admin/fileman_file_edit.php?path=%2Fbitrix%2Ftemplates%2F(ваш_шаблон_сайта)%2Fjs%2Fcustom.js&site=s1&lang=ru&&filter=Y&set_filter=Y#authorize
и добавляем jquery код
не забудьте подключить библиотеку для маски телефона и указать в ready
Открываем кастомный файл стилей вашсайт/bitrix/admin/fileman_file_edit.php?path=%2Fbitrix%2Ftemplates%2F(ваш_шаблон_сайта)%2Fcss%2Fcustom.css&site=s1&lang=ru&&filter=Y&set_filter=Y
И добавляем наши стили, у вас могут быть свои
Теперь создаем наши php файлы для авторизации в директории /ajax/script/ (у вас может быть своя, для установки своей директории внесите изменения в кастомный файл js):
Файл sms.php:
Файл auth_sms.php:
Вот и все!!! Желаю вам успехов в разработке)