Авторизация по номеру телефона

Intec

Для замены авторизации в решениях от Intec необходимо выполнить следующие действия

Замена комопнента авторизации по умолчанию

В первую очередь необходимо заменить дефольный комопнент авторизации, который используется на странице /auth/.Для этого в файле /auth/index.php прописать константу для вывода авторизации и добавим редирект на главную страницу для авторизованных пользователей

<?php 
define("NEED_AUTH", true);

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");

if($USER->IsAuthorized())
{
    LocalRedirect('/');
}


require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php") 
?>

А в настройках главного модуля указываем шаблон для системных комопнентов авторизации регистрации - bxmaker.authuserphone

2021-11-08_12-14.png

Для позиционирования формы по центру экрана можно добавить в footer.php шаблона стили ниже, их можно добавить и иначе, это самый простой способ

<style>
.bxmaker-authuserphone-enter,
.bxmaker-authuserphone-simple {
    margin: 0 auto;
    display: block;
} 
</style>

Примерно так это будет выгляденть в файле

2022-07-07_14-31.png

И соответственно результат

2022-07-07_14-35.png

Страница оформления заказа

Для страницы оформления заказа достаточно разместить в начало файла personal/basket/order.php константу define('NEED_AUTH', true);

2022-07-07_14-39.png

Авторизация по номеру телефона в popup окне

Для замены авторизации в попап окне, необходимо в файле /bitrix/templates/universe_s1/components/bitrix/system.auth.form/template.2/template.php дополнить содержимое, в котором производится проверка включенности модуля и вывод комопнента, иначе выводится стандартные формы.

На вашем конкретном сайте может исопльзвоаться другой шаблон комопнента, не template.2, в этом случае изменения нужно производить с используемым шаблоном. Также шаблон сайта может иметь названия отличное от universe_s1, учитывайте эти особенности.

Привести нужно примерно к следующему виду

<?php if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die(); ?>
<?php

use Bitrix\Main\Localization\Loc;
use intec\core\bitrix\Component;
use intec\core\helpers\Html;

//Для авторизации через соц сети, необходимо указать URL личного кабинета
//для корректного редиректа после авторизации
$currentPage = $APPLICATION->GetCurPage();
$APPLICATION->SetCurPage($arParams['AUTH_URL']);

$this->setFrameMode(true);


// начало ---
/**
 * @var \CMain $APPLICATION
 * @var \CBitrixComponent $component
 */
$bSkip = false;
if (\Bitrix\Main\Loader::includeModule('bxmaker.authuserphone')) {
    $oManager = \BXmaker\AuthUserPhone\Manager::getInstance();
    // если модуль для текущего сайта включен
    if ($oManager->isEnabled()) {
        
        $APPLICATION->IncludeComponent(
             $oManager->param()->getDefaultComponent(),
             '',
             [
                  'COMPOSITE_FRAME_MODE' => 'N',
		   'RAND_STRING' => 'ajax'
             ]
        );
        $bSkip = true;
    }
?>
<style>
.bxmaker-authuserphone-enter,
.bxmaker-authuserphone-simple {

    margin: 0 auto;
    display: block;
    box-shadow: none;
} 
</style>
<?
}

if (!$bSkip) {

// конец ---


$sTemplateId = Html::getUniqueId(null, Component::getUniqueId($this));

$arAuthOptions = [
    'component' => 'bitrix:system.auth.authorize',
    'template' => 'popup.2',
    'parameters' => [
        'AUTH_URL' => $arParams['AUTH_URL'],
        'BACKURL' => $arResult['BACKURL'],
        'AUTH_REGISTER_URL' => $arParams['AUTH_REGISTER_URL'],
        'AUTH_FORGOT_PASSWORD_URL' => $arParams['AUTH_FORGOT_PASSWORD_URL'],
        'AJAX_MODE' => 'N',
        'AJAX_OPTION_ADDITIONAL' => $sTemplateId.'_auth_form',
        'AUTH_RESULT' => $APPLICATION->arAuthResult
    ]
];

$bUserPhoneRequired = COption::GetOptionString('main','new_user_phone_auth');

$arRegFields = [
    'NAME',
    'EMAIL'
];

if ($bUserPhoneRequired !== 'Y')
    $arRegFields[] = 'PERSONAL_PHONE';

$arRegOptions = [
    'component' => 'bitrix:main.register',
    'template' => 'template.2',
    'parameters' => [
        'SHOW_FIELDS' => [],
        'REQUIRED_FIELDS' => [
            0 => 'EMAIL'
        ],
        'AUTH' => 'Y',
        'AUTH_URL' => $arParams['AUTH_URL'],
        'USE_BACKURL' => 'Y',
        'SUCCESS_PAGE' => '',
        'SET_TITLE' => 'N',
        'USER_PROPERTY' => [],
        'USER_PROPERTY_NAME' => '',
        'COMPONENT_TEMPLATE' => 'template.2',
        'AJAX_MODE' => 'Y',
        'AJAX_OPTION_ADDITIONAL' => $sTemplateId.'_register_form',
        'AJAX_OPTION_JUMP' => 'N',
        'CONSENT_URL' => $arParams['CONSENT_URL']
    ]
];

?>

<div id="<?= $sTemplateId ?>" class="ns-bitrix c-system-auth-form c-system-auth-form-template-2">
    <div class="system-auth-form-control-tabs" data-ui-control="tabs">
        <div class="intec-grid intec-grid-wrap intec-grid-a-h-start intec-grid-a-v-start intec-grid-i-h-16">
            <div class="system-auth-form-control-tab-container intec-grid-item-auto">
                <a href="#<?= $sTemplateId ?>_tab_auth" data-type="tab" class="system-auth-form-control-tab">
                    <?= Loc::getMessage('C_SYSTEM_AUTH_FORM_TEMPLATE_2_TEMPLATE_TAB_AUTH') ?>
                </a>
                <div class="system-auth-form-control-tab-border intec-cl-background"></div>
            </div>
            <?php if (COption::GetOptionString('main', 'new_user_registration', 'N') != 'N') { ?>
                <div class="system-auth-form-control-tab-container intec-grid-item-auto">
                    <a href="#<?= $sTemplateId ?>_tab_registration" data-type="tab" class="system-auth-form-control-tab">
                        <?= Loc::getMessage('C_SYSTEM_AUTH_FORM_TEMPLATE_2_TEMPLATE_TAB_REGISTRATION') ?>
                    </a>
                    <div class="system-auth-form-control-tab-border intec-cl-background"></div>
                </div>
            <?php } ?>
        </div>
    </div>
    <div class="intec-ui intec-ui-control-tabs-content">
        <div id="<?= $sTemplateId ?>_tab_auth" class="intec-ui-part-tab">
            <?php $APPLICATION->IncludeComponent(
                $arAuthOptions['component'],
                $arAuthOptions['template'],
                $arAuthOptions['parameters'],
                false
            ) ?>
        </div>
        <?php if (COption::GetOptionString('main', 'new_user_registration', 'N') != 'N') { ?>
            <?php $APPLICATION->SetCurPage($currentPage);?>
            <div id="<?= $sTemplateId ?>_tab_registration" class="intec-ui-part-tab">
                <?php $APPLICATION->IncludeComponent(
                    $arRegOptions['component'],
                    $arRegOptions['template'],
                    $arRegOptions['parameters'],
                    false
                ) ?>
            </div>
        <?php } ?>
    </div>
</div>

<?
// начало ---
}
//конец ---
 ?>

В итоге результат должен получиться примерно таким

2022-07-07_14-49.png

Размещение нескольких компонентов

Если на странице вы размещаете 2 и более компонентов, то при вызове компонента необходимо указывать разные значения для параметра RAND_STRING