Номер телефона для регистрации битрикс

Регистрация по номеру телефона

Урок
131
из
293

Сложность урока:

2 уровень — несложные понятия и действия, но не расслабляйтесь.


2 из 5

Дата изменения:
08.02.2023

Просмотров:
34313

Недоступно в лицензиях:

Текущую редакцию Вашего 1С-Битрикс можно просмотреть на странице Обновление платформы (Marketplace > Обновление платформы).


Старт, Стандарт

Регистрация по номеру телефона

Начиная с версии 18.5.0, в «1С-Битрикс: Управление сайтом» появились возможность регистрироваться и восстанавливать пароль по СМС. Теперь при регистрации наравне с почтовым ящиком можно использовать и номер мобильного телефона.

Рассмотрим пошагово, как настроить этот полезный функционал:

  1. Сначала

    установите и настройте


    Прежде всего, не забудьте установить этот модуль.

    Настройка модуля осуществляется в Административном разделе (Настройки >Настройки продукта > Настройки модулей > Служба сообщений).

    Подробнее…




    модуль Служба сообщений, привязав одну из служб сообщений.

  2. Далее укажите в настройках Главного модуля службу отправки СМС по умолчанию и выберите соответствующий номер отправителя (Настройки >Настройки продукта > Настройки модулей > Главный модуль (Почта и СМС)):

  3. И в завершении перейдите на вкладку Авторизация и разрешите регистрацию пользователей по номеру телефона, при необходимости сделав это поле обязательным (Настройки >Настройки продукта > Настройки модулей > Главный модуль (Авторизация)):

    Подробнее о настройке остальных полей (по желанию) можете прочитать в

    документации по продукту.


    Настройки Главного модуля, закладка «Авторизация».

    Подробнее…



    Примечание: Не забудьте, что в России при сборе личных данных требуется обязательное согласие пользователя на обработку его персональных данных, поэтому

    настройте соглашение






    на обработку персональных данных (можете выбрать существующее соглашение или

    создать новое


    На странице Соглашения (Настройки > Настройки продукта > Соглашения) выводятся все созданные и используемые соглашения и с неё же можно перейти к списку полученных соглашений от пользователей.

    Соглашение — текст, который должен прочитать пользователь и согласится с ним. В дистрибутиве есть стандартный вариант соглашения, но у администратора всегда есть возможность создать свой текст соглашения. Для этого на странице Соглашения воспользуйтесь кнопкой Добавить и заполните открывшуюся форму.

    Подробнее…




    ).

Готово! Теперь регистрация пользователей будет осуществляться по номеру мобильного телефона.

Документация по теме:

  • Настройки главного модуля (закладка «Почта и СМС»)
  • Настройки главного модуля (закладка «Авторизация»)

Всем привет. У меня новый квест) За долгое время работы с битриксом приходилось реализовывать много чего, но вот с подключением MessageService по смс работать не приходилось.
На просторах интернета не много информации по этому вопросу, и та, что есть не работает как нужно, а часто вообще не работает.

Итак начнем!

Для подключения провайдера смс вам конечно же необходимо сначала протестировать api отправки смс на чистом php без битрикса, так я и сделал. Обычно это soap/curl или работа через сокеты и если ваш провайдер предоставляет библиотеку с которой нужно работать — это отлично. В основном предлагается библиотека QTSMS.class.php, при чем в разных источниках она совершенно разная, начиная от названий класса и методов и заканчивая самой логикой работы. Я скачал библиотеку которая по заверениям совместима с новым api для версий php 7.4, но я использовал старую версию api. Сама работа по отправке смс находится в файле Src/SmsClient.class.php (вся библиотека будет прикреплена к статье), и как мы видим на 222 строчке отправка выполняется через curl.

<?php
private function connectSettings()
{
$protocol = !empty($this->protocol) ? $this->protocol.’://’ : »;
$path = !empty($this->path) ? $this->path : »;
$url = $protocol . $this->hostname . $path;
curl_setopt_array($this->ch, [
CURLOPT_URL => $url,
CURLOPT_HEADER => FALSE,
CURLOPT_CONNECTTIMEOUT => 10,
CURLOPT_HTTPHEADER => $this->buildHeaders(),
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_FOLLOWLOCATION => FALSE,
CURLOPT_USERAGENT => ‘AISMS PHP class’,
]);
}
?>

Хотелось бы пояснить, что целью данной статьи не является разбор именно создания скрипта отправки смс под определенный сервис, а только подключение своего 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.
На данный момент это рабочий класс для работы с BitrixMainSmsEvent, в будущем конечно же возможны изменения в названиях методов да и в принципе построения логики sms MessageService.

<?php
namespace MyProviderMessageService;
use BitrixMainApplication;
use BitrixMainError;
use BitrixMainResult;
use BitrixMainWebHttpClient;
use BitrixMainWebJson;
use BitrixMainLoader;
use BitrixMessageServiceSenderResultMessageStatus;
use BitrixMessageServiceSenderResultSendMessage;
use BitrixMessageService;
// название класса может быть любым, только именно этот класс вам нужно будет подключить в обработчике собятия отправки в файле init.php
class Smska extends BitrixMessageServiceSenderBase
{
public $user=’*****’;
public $pass=’*****’;
public $host=’*****’;
public $servesename = ‘*****’;

public static function isSupported()
{
return true;
}

public function getId()
{
return ‘я писал здесь просто латинское слово без пробелов’;
}

public function getName()
{
return «полное название смс провайдера»;
}

public function getShortName()
{
return ‘краткое название или адрес домена сервиса’;
}

public function isDemo()
{
return false; //есть ли демо период, оставляем так
}

public function canUse()
{
return true; //включен или выключен ваш сервис, ниже будет проверка (*)
}

//этот метод для парсинга атридутов xml объектов, так как мне на выход приходил именно xml объект, если вам он не нужен, можете смело удалять

public function xmlAttribute($object, $attribute){
if(isset($object[$attribute]))
return (string) $object[$attribute];
else
return null;
}

//основной метод работы провайдера, отправляет смс

public function sendMessage(array $messageFields)
{
//здесь проверяем свой же метод выше (*), если получаем false, то выводим сообщение о том, что сервис отключен

if (!$this->canUse()) {
$result = new SendMessage(); //это основной класс с методами проверки ответов и параметрами сохранения результатов
$result->addError(new Error(‘Ошибка отправки. СМС-сервис отключен’)); //передаем именно объект new Error, строковые значения этот метод не признает
return $result;
}
//выполняем подключение нашего класса библиотеки и передаем в него наши свойства (логин,пароль и хост (хост обычно полный вместе с https:// с полным адресом для http запросов))

$sms = new QTSMS($this->user, $this->pass, $this->host);
$return = new SendMessage(); //подключаем здесь основной класс с методами проверки ответов и параметрами сохранения результатов
$result = $sms->post_message($messageFields[‘MESSAGE_BODY’], $messageFields[‘MESSAGE_TO’], $this->servesename); //отправляем нашу смс

//дальше что-то делаем с результатом для понимания дошла смс или нет, к этому этапу вы уже должны протестировать на «чистом php» обработку результата, что он вам дает при ошибке и при отправке

##### это все логика работы именно вашего сервиса, пишите свою или используйте эту, если она вам подойдет

/* $xml = new SimpleXMLElement($result);//у меня приходит xml поэтому я перевожу его в объект
$status = $this->xmlAttribute($xml->result,’*****’); //здесь получаю атрибут
$result_status = $sms->status_sms_group_id($status); //проверяю статус отправилось или нет
$r_xml = new SimpleXMLElement($result_status);//у меня приходит xml поэтому я опять перевожу его в объект
$id = $this->xmlAttribute($r_xml->*****,’*****’); //получаю id записи
*/
//проверяем вашу переменную , которая скажет отправлено смс или нет, у меня это id записи при успешной отправке
if(isset($id) && (int)$id>0){
$return->setExternalId($id); //пишем уникальный номер отправления, если у вас его нет можете писать любое большое рандомное число
$return->setAccepted(); //говорим, что все ok sms отправлена
}
else{
$return->addError(new Error(‘Ошибка отправки’)); //если что-то пошло не так записываем ошибку, она будет выведена пользователю
}
return $return;
}

//через этот метод мы работаем с нашим классом как с объектом (используется в init.php)
public static function onGetSmsSenders()
{
$class = __CLASS__;
return [new $class()];
}

//имя отправителя, обязательно, если их будет несколько в административной панели вы сможете выбрать
public function getFromList()
{
return [$this->servesename];
}
}
?>

Далее открываем или создаем, если еще не создан файл /bitrix/php_interface/init.php или /local/php_interface/init.php
Добавляем в него обработчик события отправки смс и подключаем к нему наш класс
У меня после подключения вывалилась ошибка «класс BitrixMessageServiceSenderBase не найден», возможно это связано с конфигурацией моего проекта и у вас все заработает, но если нет подключайте файл с двумя звездочками (**)

<?
include_once($_SERVER[‘DOCUMENT_ROOT’].’/bitrix/modules/messageservice/lib/sender/base.php’); // файл с двумя звездочками (**) без него может ничего не заработать, видимо у битрикса проблема с автоподгрузкой классов в этом пространстве имен
include_once($_SERVER[‘DOCUMENT_ROOT’] . ‘/bitrix/php_interface/sms/QTSMS.class.php’); //подключаем нашу библиотеку
include_once($_SERVER[‘DOCUMENT_ROOT’] . ‘/bitrix/php_interface/sms/test_config.php’); // он понадобится нам в файле ajax авторизации (необходимо заполнить вашими доступами (логин, пароль, адрес))
include_once($_SERVER[‘DOCUMENT_ROOT’].’/bitrix/php_interface/sms/index.php’); // подключаем наш обработчик
// вызов обработсика нашего события
$eventManager = BitrixMainEventManager::getInstance();
$eventManager->addEventHandler(
«messageservice»,
«onGetSmsSenders»,
array(
MyProviderMessageServiceSmska::class,
«onGetSmsSenders»,
)
);
?>

Все сохраняем и переходим по ссылке вашсайт/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 строчке вы найдете подключение провайдера смс.

<?
$sms = new BitrixMainSmsEvent(
«SMS_USER_CONFIRM_NUMBER»,
[
«USER_PHONE» => $phoneNumber,
«CODE» => $code,
]
);
?>

А в компонентах вашсайт/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 после

<div class=»form_footer»>
<div class=»filter block»>

Добавляю

<div class=»auth_sms»>
<label for=»auth_sms» title=»Войти по номеру телефона» tabindex=»5″>Войти по номеру телефона</label>
</div>

Также на строчке 39 после

<input type=»hidden» name=»AUTH_FORM» value=»Y» />
<input type=»hidden» name=»TYPE» value=»AUTH» />
<input type=»hidden» name=»POPUP_AUTH» value=»<?=$arParams[‘POPUP_AUTH’]?>» />

Добавляю

<div class=»form_sms»>
<label>Введите номер телефона</label>
<input type=»tel» class=»phone_sms» name=»sms_phone» autocomplete=»tel»>
<input type=»button» class=»send_sms» value=»Получить СМС»>
</div>
<div class=»form_sms2″>
<label>Введите код из смс</label>
<input type=»tel» class=»sms_code» name=»sms_code» autocomplete=»tel»>
<input type=»button» class=»auth_sms» value=»Войти»>
</div>

Открываем кастомный файл 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 код

$(document).on(‘click’,'[for=»auth_sms»]’,function(){
$(‘.form_sms’).show(500);
$(‘.form_body’).hide(300);
$(«.phone_sms»).inputmask({«mask»: «+7 (999) 999-99-99″});
$(this).html(‘Войти с помощью логина’);
$(this).attr(‘for’,»auth_login»);
$(‘.form_footer .buttons.clearfix’).hide();
});

$(document).on(‘click’,'[for=»auth_login»]’,function(){
$(‘.form_sms’).hide(300);
$(‘.form_sms2’).hide(300);
$(‘.form_body’).show(500);
$(this).html(‘Войти по номеру телефона’);
$(this).attr(‘for’,»auth_sms»);
$(‘.form_footer .buttons.clearfix’).show();
});

$(document).on(‘click’,’.send_sms’,function(){
$(‘.form_footer .buttons.clearfix’).hide();
var tel_auth = $(‘.phone_sms’).val();
if(tel_auth!=»){
$.ajax({
type: «POST»,
url: «/ajax/script/sms.php»,
data: {number_login:tel_auth},
success: function(data){
if(data==’yes’){
$(‘.form_sms’).hide(300);
$(‘.form_sms2′).show(500);
}
else if(data==’no-user’){
$(‘.form_sms label’).html(‘Введите номер телефона <span class=»red-not»>Пользователь с таким номером не найден</span>’);
}
else{
$(‘.form_sms label’).html(‘Введите номер телефона <span class=»red-not»>Ошибка отправки СМС</span>’);
}
}
});
}
else{
$(‘.form_sms label’).html(‘Введите номер телефона <span class=»red-not»>Пустое поле телефона</span>’);
}
$(this).html(‘Войти по номеру телефона’);
$(this).attr(‘for’,»auth_sms»);
});

$(document).on(‘click’,’.auth_sms’,function(){
$(‘.form_footer .buttons.clearfix’).hide();
var code = $(‘.sms_code’).val();
if(code!=»){
$.ajax({
type: «POST»,
url: «/ajax/script/auth_sms.php»,
data: {code:code},
success: function(data){
if(data==’yes’){
document.location.href = ‘/personal/’;
}
else if(data==’no-code’){
$(‘.form_sms2 label’).html(‘Введите код из смс <span class=»red-not»>Пустое поле</span>’);
}
else{
$(‘.form_sms2 label’).html(‘Введите код из смс <span class=»red-not»>Неверный код</span>’);
}
}
});
}
else{
$(‘.form_sms2 label’).html(‘Введите код из смс <span class=»red-not»>Пустое поле</span>’);
}
});

не забудьте подключить библиотеку для маски телефона и указать в ready

$(document).ready(function(){
$(«.phone_sms»).inputmask({«mask»: «+7 (999) 999-99-99»});
});

Открываем кастомный файл стилей вашсайт/bitrix/admin/fileman_file_edit.php?path=%2Fbitrix%2Ftemplates%2F(ваш_шаблон_сайта)%2Fcss%2Fcustom.css&site=s1&lang=ru&&filter=Y&set_filter=Y
И добавляем наши стили, у вас могут быть свои

/*auth form sms*/
.auth_sms label {
color: #198ac8 !important;
cursor: pointer;
}
.form_sms label,.form_sms2 label{
color: #888888;
display: block;
}

.form_sms,.form_sms2 {
margin: 0;
padding: 29px 60px 8px;
display:none;
}

input.phone_sms,input.sms_code {
padding: 8px 13px 7px;
width: 100%;
height: 48px;
}

input.send_sms,input.auth_sms {
background-color: #1d9de3;
border-color: #1d9de3;font-size: 0.7333em;
font-weight: normal;
text-transform: uppercase;
text-decoration: none;
margin: 0px;
border: 0px solid;
letter-spacing: 0.8px;
border-radius: 3px;
padding: 12px 21px 11px;
overflow: hidden;
transition: background-color 0.3s ease;
-moz-transition: background-color 0.3s ease;
-ms-transition: background-color 0.3s ease;
-o-transition: background-color 0.3s ease;
-webkit-transition: background-color 0.3s ease;color: #fff;margin-top: 20px;
}
span.red-not {
color: red;
display: block;
border-bottom: 1px dashed;
width: max-content;
margin-top: -5px;
margin-bottom: 5px;
}
/*—*/

Теперь создаем наши php файлы для авторизации в директории /ajax/script/ (у вас может быть своя, для установки своей директории внесите изменения в кастомный файл js):
Файл sms.php:

<?php session_start();
ini_set(‘max_execution_time’, 20000);
require_once($_SERVER[«DOCUMENT_ROOT»] . «/bitrix/modules/main/include/prolog_before.php»);
/*ini_set(‘error_reporting’, E_ALL); //можете раскомментировать для тестирования ошибок в консоли браузера на вкладке network->Fetch/XHR
ini_set(‘display_errors’, 1);
ini_set(‘display_startup_errors’, 1);*/
function xmlAttribute($object, $attribute){
if(isset($object[$attribute]))
return (string) $object[$attribute];
else
return null;
}
$sms = new QTSMS($cfg[‘login’], $cfg[‘password’], $cfg[‘host’]);
$rand = mt_rand(0,9).mt_rand(0,9).mt_rand(0,9).mt_rand(0,9).mt_rand(0,9); //создаем рандомный код для смс
$_SESSION[‘rand_sms’] = $rand; //сохраняем его в сессию
$sender_name = ‘имя отправителя’;
//проверяем передали ли нам номер телефона (меняется в кастомном файле js)
if(isset($_POST[‘number_login’])){
$phoneNumber = $_POST[‘number_login’];
// проверяем есть ли пользователь с таким телефоном
$filter = Array(«PERSONAL_PHONE»=>$phoneNumber);
$rsUsers = CUser::GetList(($by=»personal_country»), ($order=»desc»), $filter);
while($arUser = $rsUsers->Fetch()){
$user_id = $arUser[‘ID’];
}
if(isset($user_id)){
// если найден записываем его id в сессию по коду из смс
$_SESSION[‘USER_ID_AUTH’][$_SESSION[‘rand_sms’]] = $user_id;
//чистим номер от лишних символов, чтобы отправить смс
$phoneNumber = str_replace(‘+7′,’8’,$phoneNumber);
$phoneNumber = preg_replace(‘#([^0-9]+)#’,»,$phoneNumber);
// отправляем смс
$result = $sms->post_message($rand, $phoneNumber, $sender_name);
/* $xml = new SimpleXMLElement($result);//у меня приходит xml поэтому я перевожу его в объект
$status = $this->xmlAttribute($xml->result,’*****’); //здесь получаю атрибут
$result_status = $sms->status_sms_group_id($status); //проверяю статус отправилось или нет
$r_xml = new SimpleXMLElement($result_status);//у меня приходит xml поэтому я опять перевожу его в объект
$id = $this->xmlAttribute($r_xml->*****,’*****’); //получаю id записи
*/
if((int)$id>0){
echo ‘yes’;
}
else{
echo ‘no’;
}
}
else{
echo ‘no-user’;
}
}
else{
echo ‘no’;
}

Файл auth_sms.php:

<?php session_start();
ini_set(‘max_execution_time’, 20000);
require_once($_SERVER[«DOCUMENT_ROOT»] . «/bitrix/modules/main/include/prolog_before.php»);
if(isset($_POST[‘code’])){
if(isset($_SESSION[‘USER_ID_AUTH’][$_POST[‘code’]])){
global $USER;
$USER->Authorize($_SESSION[‘USER_ID_AUTH’][$_POST[‘code’]]);
echo ‘yes’;
}
else{
echo ‘no’;
}
}
else{
echo ‘no-code’;
}

Вот и все!!! Желаю вам успехов в разработке)

Просмотров: 2341

Задача, на конкретном сайте: раньше все пользователи регистрировались по стандартному режиму, через логин(e-mail) и пароль. При этом, у всех пользователей запрашивался и номер телефона, который записывался в стандартное поле «Номер телефона», он же PERSONAL_MOBILE.

Необходимо перевести всех пользователей на вход по номеру телефона, с отправкой смс с паролем.

Что бы не напрягать существующих пользователей просто скопируем номера телефонов из PERSONAL_MOBILE в новое поле (которое доступно в свежих редакциях Битрикс, создавать его не надо) Номер телефона для регистрации он же PHONE_NUMBER

Получаем информацию о пользователях через API

Для начала, нам нужно получить информацию о пользователях, с помощью CUser::GetList — Возвращает список пользователей в виде объекта класса CDBResult. Статический метод.

По идее, нам нужено только поле PERSONAL_MOBILE, но покажу как вывести вообще всю информацию о пользователях, отсортированных по ID пользователя.

$data = CUser::GetList(($by="ID"), ($order="ASC"),
    array(
     'ACTIVE' => 'Y', // Выбрали всех активных
    )
);
while($arUser = $data->Fetch()) {
   echo '<pre>';
   	print_r($arUser);
   echo '</pre>';
}

В распечатке $arUser увидем вообще всю информацию о каждом пользователе (ФИО, дату регистрации, все персональные данные итд).

Нам достаточно, с помощью метода CUser::Update обновить поле PHONE_NUMBER из поля PERSONAL_MOBILE

$user = new CUser;
$data = CUser::GetList(($by="ID"), ($order="ASC"),
    array(
     'ACTIVE' => 'Y',
    )
);
while($arUser = $data->Fetch()) {
    $fields = Array(
        "PHONE_NUMBER"  => $arUser['PERSONAL_MOBILE'],
    );
    $user->Update($arUser['ID'], $fields);
}

Здесь мы вписали номер телефона «PHONE_NUMBER» => $arUser[‘PERSONAL_MOBILE’], и измениили параметры пользователя.

Получить номер телефона из последнего заказа пользователя

Если, вы ни когда не справшивали номер телефона пользователя, можно попоробовать скопировать его из заказа, если пользователь хотя бы раз делал заказ в интернет магазине.

Для начала, получим самый свежий заказ каждого пользователя, скорее всего в нем актуальный номер телефона в свойстве «Номер телефона». Делать будем старым методом, так как на D7 все работает гораздо медленеее.

$user = new CUser;
CModule::IncludeModule("sale");
$data = CUser::GetList(($by="ID"), ($order="ASC"),
    array(
        'ACTIVE' => 'Y', // Выбрали всех активных
    )
);
while($arUser = $data->Fetch()) {
    $db_sales = CSaleOrder::GetList(
        array('DATE_INSERT' => 'DESC'),
        array("USER_ID" => $arUser['ID']),
        array('ID')
    );
    while ($ar_sales = $db_sales->Fetch())
    {
        $dbOrderProps = CSaleOrderPropsValue::GetList(
            array("SORT" => "ASC"),
            array("ORDER_ID" => $ar_sales['ID'], "CODE"=>array("PHONE"))
        );
        while ($arOrderProps = $dbOrderProps->GetNext()) {
            $userOrderPhone = $arOrderProps['VALUE'];
        }
        break;
    }
    $fields = Array(
        "PHONE_NUMBER"  => $userOrderPhone,
    );
    $user->Update($arUser['ID'], $fields);
}

Пояснения:

  • Все также с CUser::GetList прошлись по пользователям. Теперь нам нужны только их ID.
  • Внутри цикла пользователя воспользовались CSaleOrder::GetList получили заказы пользователя, при этом отфильтровали по дате создания (от новых к старым) ‘DATE_INSERT’ => ‘DESC’. В отборе использовали только ID заказа array(‘ID’) — другие данные нам не нужны и весь скрипт отработает быстрее.
  • В конце цикла, перебора заказов пользователя, оборвали его с помощью break, что бы получить только один заказ, а не все заказы пользователя. )
  • Внутри заказа, зная его ID «ORDER_ID» => $ar_sales[‘ID’] получили (методом CSaleOrderPropsValue::GetList) значение свойства с телефоном, в моем случае это поле с кодом «CODE»=>array(«PHONE»)
  • Передали VALUE с номером телефона в переменную $userOrderPhone
  • Дальше, все также, как и в статье выше, обновили номер для регистрации методом CUser::Update

На этом все, вопросы прошу задавать в комментариях. Для работы с заказом специально не использовал D7 — так как возможностей там больше, по работе с заказами- но они работают медленнее, для конкретно этой, описанной в статье ситуации (нужно получать коллекции свойств и грузить классы заказа BitrixSaleOrder)

Но, можете попробовать перевести все это на D7 и написать в комментарии и не плохая практика и возможно, кому-то будет полезно.

Поблагодарить и поддержать!

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

Юманей

Мои каналы:

Каналы на которые я выкладываю видео. Контент дублируется, смотрите где удобнее.

Видео на Ютубе

Видео на VK

ANTO, печально, я сам не делал, но думал что раз есть регистрация то есть и авторизация.

Тогда руками пилить (компонент system.auth.authorize)
1. В классе CUser есть 2 метода

public static function SendPhoneCode($phoneNumber, $smsTemplate, $siteId = null)

public static function VerifyPhoneCode($phoneNumber, $code)

2. В шаблоне добавляешь input для телефона в стандартную форму авторизации и оборачиваешь в if

<?if(!isset($arResult["SHOW_SMS_FIELD"]) || $arResult["SHOW_SMS_FIELD"] !== true):?>
<form //..............
    <input type="text" required name="PHONE_NUMBER">
</form>
<?endif;?>

3. Добавляешь в шаблон блок для ввода кода из смс

<?if($arResult["SHOW_SMS_FIELD"] == true):?>

	<?CJSCore::Init('phone_auth');?>
	
	<form method="post" action="<?=$arResult["AUTH_URL"]?>" name="regform">

		<input type="hidden" name="SIGNED_DATA" value="<?=htmlspecialcharsbx($arResult["SIGNED_DATA"])?>" />

		<div class="bx-authform-formgroup-container">
			<div class="bx-authform-label-container"><span class="bx-authform-starrequired">*</span><?echo GetMessage("main_register_sms_code")?></div>
			<div class="bx-authform-input-container">
				<input type="text" name="SMS_CODE" maxlength="255" value="<?=htmlspecialcharsbx($arResult["SMS_CODE"])?>" autocomplete="off" />
			</div>
		</div>

		<div class="bx-authform-formgroup-container">
			<input type="submit" class="btn btn-primary" name="code_submit_button" value="<?echo GetMessage("main_register_sms_send")?>" />
		</div>

	</form>
	<div id="bx_auth_error" style="display:none" class="alert alert-danger"></div>

	<div id="bx_auth_resend"></div>

	<script>
	new BX.PhoneAuth({
		containerId: 'bx_auth_resend',
		errorContainerId: 'bx_auth_error',
		interval: <?=$arResult["PHONE_CODE_RESEND_INTERVAL"]?>,
		data:
			<?=CUtil::PhpToJSObject([
				'signedData' => $arResult["SIGNED_DATA"],
			])?>,
		onError:
			function(response)
			{
				var errorNode = BX('bx_auth_error');
				errorNode.innerHTML = '';
				for(var i = 0; i < response.errors.length; i++)
				{
					errorNode.innerHTML = errorNode.innerHTML + BX.util.htmlspecialchars(response.errors[i].message) + '<br />';
				}
				errorNode.style.display = '';
			}
	});
	</script>

<?endif;?>

4. Добавляешь обработчик, например в result_modifier (обработчик писал без проверки):

$arResult["PHONE_CODE_RESEND_INTERVAL"] = CUser::PHONE_CODE_RESEND_INTERVAL;

$phoneNumber = $_REQUEST['PHONE_NUMBER'] ?? null;
$signedData = $_REQUEST['SIGNED_DATA'] ?? null;

if(!empty($phoneNumber))
{
	$smsTemplate = 'SMS_USER_RESTORE_PASSWORD'; // только указываешь свой шаблон (создаешь сначала в админке)
	
	$result = CUser::SendPhoneCode($phoneNumber, $smsTemplate, SITE_ID);
	
	if($result->isSuccess()) {
		$arResult['SIGNED_DATA'] = BitrixMainControllerPhoneAuth::signData([
			'phoneNumber' => $phoneNumber,
			'smsTemplate' => $smsTemplate
		]);
		
		$arResult["SHOW_SMS_FIELD"] = true;
	}
	else {
		$arResult['ERROR_MESSAGE'] = $result->getErrorMessages();
	}
	
	
	if(!empty($signedData)) {
		$arResult["SIGNED_DATA"] = $signedData;
		$arResult["SHOW_SMS_FIELD"] = true;
	}
	
	// verify phone code
	$isNeedVerifySmsCode = $_SERVER["REQUEST_METHOD"] == "POST" && $_REQUEST["code_submit_button"] <> '' && !$USER->IsAuthorized() && !empty($signedData);
	
	if($isNeedVerifySmsCode)
	{
		$smsCode = $_REQUEST['SMS_CODE'];
		
		if(($params = BitrixMainControllerPhoneAuth::extractData($signedData)) !== false)
		{
			if(($userId = CUser::VerifyPhoneCode($params['phoneNumber'], $smsCode)))
			{
				$USER->Authorize($userId);
			}
			else
			{
				$arResult['ERROR_MESSAGE'] = 'Error verify code'; // здесь сам ошибку придумай
				$arResult["SHOW_SMS_FIELD"] = true;
				$arResult["SMS_CODE"] = $smsCode;
				$arResult["SIGNED_DATA"] = $signedData;
			}
		}
	}
}

Вроде так, но могут быть ошибки, если что пиши))

Краткая информация

Модуль позволяет организовать на сайте авторизацию, регистрацию по номеру телефона. Опционально доступна авторегистрация при подтверждении номера телефона.

Установка модуля производиться из маркетплейса 1С-Битрикс — http://marketplace.1c-bitrix.ru/solutions/bxmaker.authuserphone/

Авторизация

Для входа на сайт доступны следующие варианты:

  • Логин + пароль
  • Email + пароль
  • Номер телефона + пароль
  • Номер телефона + код из смс
  • Номер телефона + звонок от робота
  • Номер телефона + звонок от пользователя

Если пользователь не существует и включена авторегистрация, то автоматически создастся профиль пользователя, как будто он регистрировался ранее на сайте.

Если пользователь не существует и НЕ вклчюена авторегистрация, будет выведено соответствующее сообщение.

Существующие пользователи

Существующие пользователи также смогут входить а сайт по своим учетным данным

  • Логин + Пароль
  • Email + пароль

После подготовки профилей, выполнив автозаполнение номерами телефонов, существующие пользователи также смогут входит по:

  • Номер телефона + пароль
  • Номер телефона + код из смс
  • Номер телефона + звонок от робота
  • Номер телефона + звонок от пользователя

Регистрация

Для регистрации пользователей в компонентах модуля выводится соответствующая форма. Которая содержит
следующие поля:

  • Номер телефона — обязательно
  • Логин — опционально
  • Email — опционально
  • Пароль — опционально

Регистрация может быть отключена в настройках модуля также как и поля формы.

При регистрации Номер телефона требуется подтвердить в зависимости от настроек любым из способов:

  • Временный код из смс
  • Звонок от робота
  • Звонок от пользователя

Восстановление доступа

По номеру телефона

Если номер телефона указан у пользователя в профиле, ему будут доступны варианты восстановления доступа через подтверждение номера телефона любым из доступных способов.

По Email

При попытке восстановить доступ по email, на почту будет отправлено письмо с временной ссылкой. При переходе по которой он автоматически будет авторизован и сможет установить новый пароль в профиле пользователя или указать и подтвердить номер телефона.

Защита от подбора,сливания бюджета

Для защиты от перебора паролей, временных кодов в компоненты модуля встроена captcha.

В настройках задаются лимиты с привязкой к номеру телефона и отдельно к IP адресу

  • Лимит на количество попыток запросить подтверждение, например код в смс
  • Лимит на количество проверок, например смс кода

При достижении некоторых лимитов возможен запрос ввода символов с картинки — captcha. А также при достижении отдельных лимитов возможна блокировка запросов проверок и/или проверки кодов с привязкой к IP адресу. В таком случае все действия будут отклоняться. Время блокировки и лимиты задаются в настройках.

Компоненты

В модуле есть несколько компонентов для входа и регистрации и компонент смены номера телефона для размещения в профиле пользователя.
Все компоненты незначительно отличаются, содержащие немного отличающийся функционал.

К примеру компонент bxmaker:authuserphone.login содержит возможность подтвреждения только с помощью смс кода. Остальные компоненты поддерживаются все варианты подтвреждений.

Рекомендуется использовать компонент:

  • bxmaker:authuserphone.simple — упрощенный компонент входя без регистрации, в котором запрашивается только номер телефона.
  • bxmaker:authuserphone.enter — компонент который содержит максимум функционала в себе, включая авторизацию всеми доступными способами, регистрацию, восстановление доступа.

Компонент bxmaker:authuserphone.edit рекомендуется размещать в профиле, чтобы была возможность у пользователей сменить свой номер телефона.

Список возможностей настройки модуля

Перечислим некоторые возможности, они включаются и отключаются в настройках модуля:

  • Вход по [логину, email, номер телефона] + пароль
  • Вход по номер телефона + [пароль, смс код, звонок от бота, звонок от пользователя]
  • Авторегистрация при входе по номеру телефона + [смс код, звонок от бота, звонок от пользователя]
  • Регистрация по Номеру телефона* [Логин, Email, Пароль] + [смс код, звонок от бота, звонок от пользователя]
  • Переадресация на странице профиля после входа/регистрации если часть полей профиля не заполнена
  • Отправка пароля в смс
  • Смена пароля при входе с помощью телефона и подтверждения
  • Лимиты на количество запросов и проверок по номеру телефона и IP
  • Переключение между сервисами подтверждений — смс сервисы, звонок от робота и тп
  • Можно установить длину пароля и временного кода;
  • Можно запретить восстанавливать доступ к сайту по email;
  • Можно изменить длину временного кода;
  • Можно изменить время действия временного кода;
  • Можно изменить интервал между возможностью отправки смс повторно с кодом;
  • и тд.

Открытый исходный код дает возможность расширять функциональность, используя документацию.

Доступные сервисы

На текущий момент встроен есть несколько встроенных сервисов:

Сервис СМС код Звонок от пользователя Звонок от робота Голосовой код SIM-push (PushOK)
1. new-tel.net — Нью-Тел
2. sms-uslugi.ru — СМС Услуги
3. sms-agent.ru — СМС-Агент
4. callpassword.ru — Call Password
5. i-dgtl.ru — i-Digital
6. mobilgroup.ru — MOBILGROUP.RU
7. redsms.ru — RedSMS (РЕКОМЕНДУЕМ)
8. sigmasms.ru — Sigma SMS
9. smsaero.ru — SMS Aero
10. smsc.ru — SMS-центр (РЕКОМЕНДУЕМ)
11. sms-prosto.ru — SMS-Prosto
12. sms.ru — SMS.RU (РЕКОМЕНДУЕМ)
13. sms.su — SMS.SU
14. smsgold.ru — SmsGold
15. voicepassword.ru — VOICE PASSWORD (РЕКОМЕНДУЕМ)
16. webcom.mobi — Webcom Mobi
17. Модуль СМС Оповещений (73 сервиса)

Можем добавить отсутствующие сервисы по вашему запросу, для этого нужно обратиться в тех поддержку

Телефоны стали для пользователей лучшими друзьями. Без них уже давно не выходят из дома. А некоторые выходят в онлайн только через смартфон. Поэтому в Аспро: Next, начиная с версии 1.4.5, появились авторизация, регистрация и восстановление пароля через SMS. Подключайте новый функционал, чтобы улучшить удобство пользования для посетителей сайта.

Продемонстрировали подключение функционала в нашем видео:

Авторизация через телефон.

Восстановление пароля через телефон.

Настройка авторизации, регистрации и восстановления пароля через SMS

1. Установка модуля «Служба сообщений (messageservice)»

В административной части сайта перейдите в Настройки → Настройки продукта → Модули. В поле с названием «Служба сообщений (messageservice)» кликните кнопку «Установить».

2. Регистрация на сайте службы отправки SMS

На текущий момент поддерживается интеграция со следующими SMS-провайдерами:

  • SMS.RU
  • SMS-ассистент
  • Twilio.com

Зарегистрируйтесь на одном из сервисов. Сравните условия сотрудничества с компаниями и выберите оптимальный вариант.

3. Интеграция с сервисами

Для настройки интеграции сайта со службой отправки SMS, перейдите в Настройки → Настройки продукта → Настройки модулей → Служба сообщений. В поле «Службы отправки SMS» кликните по выбранной службе. Например, «Компания SMS.RU».

Важно! Поля «Идентификатор партнера компании SMS.RU» и «Секретный ключ партнера компании SMS.RU» будут заполнены автоматически, и их не нужно менять. Смысл остальных полей понятен интуитивно.

4. Форма регистрации

На странице интеграции заполните форму и нажмите кнопку «Зарегистрироваться».

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

После заполнения формы регистрации на телефон придет код подтверждения. Введите его в поле ниже и кликните кнопку «Подтвердить».

6.  Проверка работы

Протестируйте отправку СМС на свой номер

7. Выбор номера отправителя

Перейдите в Настройки → Настройки продукта → Настройки модулей → Главный модуль на вкладку «Почта и СМС». В поле «Служба отправки СМС по умолчанию» выберите подключенный сервис. В Поле «Номер отправителя по умолчанию» выберите соответствующий номер телефона.

8. Регистрация и авторизация по номеру телефона

Если в настройках главного модуля поле «Регистрировать пользователей по номеру телефона» будет активировано, то номер телефона будет необходим не только для уточнения деталей заказа, но и для восстановления доступа к сайту.

Для этого в настройках главного модуля перейдите на вкладку «Авторизация». Активируйте галку в поле «Регистрировать пользователей по номеру телефона».

Вы можете задать настройку модуля «Номер телефона является обязательным», что не позволит авторизоваться под аккаунтом до подтверждения телефона кодом из SMS. Для этого в настройках главного модуля перейдите на вкладку «Авторизация». Активируйте галку в поле «Номер телефона является обязательным».

Для авторизации на сайте по номеру телефона установите опцию «Авторизация по номеру телефона» в настройках модуля решения. Перейдите в настройки модуля решения: Аспро → Аспро: Next → Настройки. Активируйте поле «Авторизация по номеру телефона» и сохраните изменения.

Важно!

1. Все коды, отправляемые в СМС действительны только в течение 1 минуты после генерации.

2. Некоторые сервисы имеют настройку, ограничивающую количество отправляемых СМС на один и тот же номер за короткий промежуток времени. Рекомендуем отключить это ограничение на время тестирования функционала.

В блог

Начиная с версии 18.5.0 в 1С-Битрикс добавлена поддержка СМС-служб, для штатной авторизации, регистрации и восстановления пароля с помощью СМС.

Из коробки на данный момент поддерживаются следующие службы отправки SMS: Компания SMS.RU, SMS-ассистент, Компания Twilio.com.

Если вы используете одну из этих компаний, обновляйте 1С-Битрикс до необходимой версии, установите модуль Служба сообщений, укажите данные для подключения к СМС-сервису и в настройках Главного модуля у вас должно появиться следующее:

smsru.png

Добавление СМС-сервиса

Если вы хотите добавить собственный СМС-сервис, для начала необходимо создать класс СМС-сервиса, который будет наследовать класс BitrixMessageServiceSenderBase, с обязательными методами:

  • getShortName(): string — Сокращенное наименование сервиса (например, домен)
  • getId(): string — Символьный код сервиса
  • getName(): string — Полное наименование сервиса (будет выводиться во всех списках)
  • canUse(): boolean — Если false – сервис не будет выводиться
  • getFromList(): array — Список подтвержденных имен отправителя
  • sendMessage(): BitrixMessageServiceSenderResultSendMessage — Отправка сообщения

Примерный код базового СМС-сервиса:

<?php

namespace PsSmsProvider;

use BitrixMainError;
use BitrixMessageServiceSenderBase;
use BitrixMessageServiceSenderResultSendMessage;

class Smsc extends Base
{
    private $login;

    private $password;

    private $client;

    public function __construct() {
        $this->login = 'login';
        $this->password = 'my_strong_password';

        $this->client = new SmscApi($this->login, $this->password);
    }

    public function sendMessage(array $messageFields) {
        if (!$this->canUse()) {
            $result = new SendMessage();
            $result->addError(new Error('Ошибка отправки. СМС-сервис отключен'));
            return $result;
        }

        $parameters = [
            'phones' => $messageFields['MESSAGE_TO'],
            'mes' => $messageFields['MESSAGE_BODY'],
        ];

        if ($messageFields['MESSAGE_FROM']) {
            $parameters['sender'] = $messageFields['MESSAGE_FROM'];
        }

        $result = new SendMessage();
        $response = $this->client->send($parameters);

        if (!$response->isSuccess()) {
            $result->addErrors($response->getErrors());
            return $result;
        }

        return $result;
    }

    public function getShortName() {
        return 'smsc.ru';
    }

    public function getId() {
        return 'smscru';
    }

    public function getName() {
        return 'SMS-центр';
    }

    public function canUse() {
        return true;
    }

    public function getFromList() {
        $data = $this->client->getSenderList();
        if ($data->isSuccess()) {
            return $data->getData();
        }

        return [];
    }
}

После того, как мы создали класс, необходимо его зарегистрировать в обработчике события:

<?php

$event = BitrixMainEventManager::getInstance();
$event->addEventHandler('messageservice', 'onGetSmsSenders', 'registerSmscService');

function registerSmscService() {
    return [
        // Класс нашего СМС-сервиса
        new Smsc(),
    ];
}

После этого в настройках Главного модуля должен появиться наш СМС-сервис

smsc.png

Пример

Примеры СМС-сервисов: sms16.ru, smsc.ru и mainsms.ru на GitHub.

Присылайте пулл-реквесты с вашими СМС-сервисами – обязательно добавим :)

API

Отправка сообщения

Для того, чтобы отправить сообщение с СМС кодом подтверждения регистрации, выполним следующий код:

<?php

$userId = 1;
$phone = BitrixMainUserPhoneAuthTable::normalizePhoneNumber('+79999999999');

BitrixMainUserPhoneAuthTable::add([
    'USER_ID' => $userId,
    'PHONE_NUMBER' => $phone,
]);

list($code, $phoneNumber) = CUser::GeneratePhoneCode($userId);

$sms = new BitrixMainSmsEvent(
    'SMS_USER_CONFIRM_NUMBER', // SMS_USER_RESTORE_PASSWORD - для восстановления
    [
        'USER_PHONE' => $phoneNumber,
        'CODE' => $code,
    ]
);
$sms->send(true);

Подтверждение номера телефона

Для того, чтобы проверить введенный код:

<?php

$phoneRecord = BitrixMainUserPhoneAuthTable::getList([
    'filter' => [
        '=USER_ID' => 1
    ],
    'select' => ['USER_ID', 'PHONE_NUMBER', 'USER.ID', 'USER.ACTIVE'],
])->fetchObject();

if(!$phoneRecord) {
    // Ошибка. Пользователь не найден
}

$smsCode = 1111;

if(CUser::VerifyPhoneCode($phoneRecord->getPhoneNumber(), $smsCode)) {
    if($phoneRecord->getUser()->getActive() && !$USER->IsAuthorized()) {
        $USER->Authorize($userId);
    }

    return true;
}

Если у вас есть уже свой Битрикс24, то просто нажмите кнопку Войти и введите данные своей учетной записи.

Войти в Битрикс24

Вход в Битрикс24

Введите номер или e-mail

Войти в Битрикс24 вы можете по номеру мобильного телефона, почтовому адресу e-mail или с помощью социальных сервисов, в зависимости от того, какая информация была внесена при регистрации.

Имя пользователя в облачном Битрикс24 – это или почтовый адрес, или номер мобильного телефона, или авторизация через соцсервисы (Facebook*, ВКонтакте, Google, Яндекс, Apple ID). Если все эти данные привязаны к учетной записи Битрикс24, то вход возможен по любому из них.

Имя пользователя в коробочном Битрикс24, чаще всего, является простым логином (например, состоит из вашего имени и фамилии), но также может быть и почтовым адресом – это зависит от того, как вы были зарегистрированы в системе.

Если вы не помните логин, введите любой, какой помните – система сама подскажет, верный он или нет. В случае неудачи – обратитесь к администратору вашего Битрикс24.

Если вы пытаетесь войти в Битрикс24 через социальные сервисы (Facebook*, ВКонтакте, Google, Яндекс, Apple ID), то вам нужно сначала авторизоваться в соцсервисе, а затем пробовать подключаться к Битрикс24. Авторизационные данные в этих соцсервисах могут не совпадать с именем пользователя или почтой, используемыми при регистрации в Битрикс24.

Введите номер или e-mail

Введите код из SMS

Если система вас узнает по номеру телефона, то на указанный номер придет SMS с кодом, который нужно будет ввести в специальном поле:

Если SMS с кодом не приходит, проверьте, правильно ли вы ввели свой номер телефона. Если все правильно, то подождите немного – возможно, SMS не приходит из-за загруженности сервиса. Также вы можете запросить код повторно.

Либо попробуйте регистрацию с помощью e-mail или социальных сетей – для этого вернитесь в начало создания Битрикс24 и выберите нужный вариант.

Введите код из SMS

Введите пароль от учетной записи

Если система вас узнает по e-mail, то попросит ввести пароль.

Если вы не помните пароль от вашей учетной записи – нажмите на ссылку Я забыл пароль.

Введите пароль от учетной записи

Введите код из письма

Вам должно прийти письмо с 6-значным кодом на почту, с которой вы зарегистрированы в Битрикс24. Код нужно ввести в специальное поле.

Если вы не знаете, какая почта привязана к вашей учетной записи в Битрикс24, или не имеете к ней доступа – обратитесь к администратору вашего Битрикс24.

Если письмо с кодом не приходит, проверьте папку Спам в почтовом ящике – возможно, письмо ошибочно попало туда. Также вы можете запросить код повторно.

Код из письма

Ваши Битрикс24

Если у вас несколько Битрикс24, то будут предложены адреса Битрикс24, куда вы вы можете войти:

Выбрать Битрикс24 из списка

Не нашли свой Битрикс24?

Если вы не нашли свой Битрикс24 в списке, то можете попробовать войти по адресу портала:

Вход по адресу

Введите адрес портала и нажмите Продолжить:

Если вы не знаете адрес вашего Битрикс24, уточните у ответственного в вашей компании. Либо укажите тот адрес, который знаете – система сама подскажет, верный он или нет.

Адрес Битрикс24 можно вводить как с https://, так и без.

Подробнее о входе по адресу можно прочитать в отдельной статье.

Введите адрес Битрикс24

Нужен еще один Битрикс24?

Если вы хотите создать еще Битрикс24, то выберите соответствующий вариант, и вы будете перенесены в раздел с Соглашениями:

Подробнее о создании нового Битрикс24 можно прочитать в отдельной статье.

Создать Битрикс24

После успешного входа можно начинать работать в Битрикс24.

Начать работать Битрикс24

* Деятельность Meta Platforms Inc. (Facebook, Instagram) запрещена на территории Российской Федерации.

Спасибо, помогло!

Спасибо :)

Уточните, пожалуйста, почему:

Это не то, что я ищу

Очень сложно и непонятно

Технические данные

Дата публикации:

10.02.2016

Дата обновления:

09.02.2023

Число установок:

Более 1000 раз

Совместимые редакции

  • Старт
  • Стандарт
  • Малый бизнес
  • Бизнес
  • Лицензия на 1С-Битрикс24: Интернет-Магазин + CRM
  • Лицензия на «1C-Битрикс24» (Корпоративный портал, 25 пользователей)
  • «Битрикс24» в коробке — Энтерпрайз

Описание

Модуль позволяет реализовать проверку номера телефона для современной авторизации, регистрации по номеру телефона. Или  подтверждение иного действия с помощью номера телефона. Доступны варианты подтверждения через:  смс код, звонок на роботизированный номер или  прием звонка от робота

Не требует сложных дорогостоящих интеграций, ставится и настраивается  за 10 минут.

Замена форм авторизации регистраций в готовых решениях  занимает от 5 минут до пары часов (в сложных решениях). Есть готовые примеры в документации.

1. Поддерживаемые сервисы

Уже встроено в модуль 16 сервисов + свыше 70 смс сервисов при использовании вместе с модулем — СМС Оповещения

Сервис СМС
код
Звонок от
пользователя
Звонок
от робота
Голосовой
код
SIM-push
(PushOK)
new-tel.net — Нью-Тел
sms-uslugi.ru — СМС Услуги
sms-agent.ru — СМС-Агент
callpassword.ru — Call Password
i-dgtl.ru — i-Digital
mobilgroup.ru — MOBILGROUP.RU
redsms.ru — RedSMS (РЕКОМЕНДУЕМ)
sigmasms.ru — Sigma SMS
smsaero.ru — SMS Aero
smsc.ru — SMS-центр (РЕКОМЕНДУЕМ)
sms-prosto.ru — SMS-Prosto
sms.ru — SMS.RU (РЕКОМЕНДУЕМ)
sms.su — SMS.SU
smsgold.ru — SmsGold
voicepassword.ru — VOICE PASSWORD (РЕКОМЕНДУЕМ)
webcom.mobi — Webcom Mobi
Модуль СМС Оповещений (73 сервиса)

2. Способы подтверждений

Может использоваться как один так и несколько способов подтверждений. Пользователь сможет переключаться между ними.

2.1. SMS код

На номер телефона отправляется временный код

2.2 Звонок от робота

Способ при котором на указанный телефон поступает звонок, в последних 4-6 цифрах номера телефона которого находит временный код

2.3 Голосовой код, VoicePassword

При этом способе на указанный номер телефона поступает звонок,  при ответе на который, робот произносит временный код

2.4 Звонок от пользователя
При этом способе выводится номер телефона на который должен позвонить пользователь с указанного номера телефона.

Если на сайте установлен и работает модуль Push and Pull, то авторизация на странице дальше происходит автоматически без нажатия кнопки Готово пользователем.

2.5 Sim-push, PushOK

При этом способе на телефоне с номером, указанным пользователем, всплывает окно с надписью Подтвердите номер телефона и две кнопки — Принять и Отклонить.

Если на сайте установлен и работает модуль Push and Pull, то после нажатия на кнопку Принять на телефоне,  авторизация на странице дальше происходит автоматически без нажатия кнопки Готово пользователем.

3. Основные компоненты

3.1 Simple

Компонент упрощенного входа только по номеру телефона.
Для старых пользователей номер телефона может быть взят из полей профиля и ранее сделанных заказов.

3.2 Enter

Компонент который содержит больше всего логики

Авторизация  / Вход

  • Логин+пароль
  • Email+пароль
  • Телефон + пароль
  • Телефон + любой из способов подтверждений
  • Авторегистрация по номеру телефона + любой из способов подтверждений

Восстановление доступа

  • Email
  • Телефон + любой из способов подтверждений

Регистрация
Обязательно для заполнения поле

  • Телефон

Могут отображаться, могут не отображаться, могут быть обязательными для заполнения могут быть и НЕ обязательными для заполнения поля

  • ФИО
  • Логин
  • Email
  • Пароль

3.3 Edit

Компонент размещается в профиле пользователя, чтобы он мог указать и подтвердить новый номер телефона

3.4 Login, Call
Старые компоненты — не рекомендуется использовать

  1. Соответствует ФЗ-152 О персональных данных
  2. Что делать с профилями существующих пользователей
  3. Авторизация / регистрация по номеру телефона при оформлении заказа
  4. Настройка отправки смс, звонков роботу, звонка отробота.
  5. Использование штатного механизма Битркиса для отправки СМС
  6. Пример замены для решенияАспро Максимум

Подробнее написано в документации https://bxmaker.ru/doc/authuserphone/

В интернете описано достаточно большое кол-во статей на данную тему, но так как у нас Bitrix, каждый решает данную задачу по-своему. На просторах сети нашел достаточно простое решение реализации данной задачи.

Итак, первое что нам нужно сделать, чтобы добавить поле телефон при регистрации пользователя в CMS Bitrix – это зайти в админку. Далее идем в Настройки->Пользователи->Список пользователей. Скриншот:

После того, как мы зашли в список пользователей нам необходимо перейти на любого пользователя и открыть вкладку “Доп. Поля”

Далее нажимаем “Добавить пользовательское поле” и заполняем его характеристики:

В моем случае с полем “Телефон” я заполнил следующим образом:

Тип данных (можно задать только для нового поля): Строка
Объект: USER
Код поля (можно задать только для нового поля): UF_PHONE

Обязательное: (отмечаю чекбокс)

И далее остается заполнить остальные характеристики с переводом. Сохраняем – смотрим форму регистрации и ВУАЛЯ – мы с вами добавили кастомное поле при регистрации пользователя в CMS BItrix!

Понравилась статья? Поделить с друзьями:
  • Номер телефона для регистрации yandex
  • Номер телефона доверия для взрослых
  • Номер телефона для регистрации bitrix получить
  • Номер телефона доверия губернатора тульской области
  • Номер телефона для разблокировки карты беларусбанк