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

Авторизация регистрация по номеру телефона в решении Аспро ЛайтШоп

Десктоп версия

Форма авторизации для решения Аспро ЛайтШоп подгружается по ajax. Для ее замены необходимо найти файл относительно корня сайта - /ajax/auth.php и сохранить его копию. В оригинальный файл поместить код ниже.

<?
require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_before.php');
global $APPLICATION, $USER, $arTheme;

$url = (is_array($arTheme['PERSONAL_PAGE_URL']) ? $arTheme['PERSONAL_PAGE_URL']['VALUE'] : '') ?: SITE_DIR.'personal/';

if($_GET['auth_service_error']){
	LocalRedirect($url);
}
?>
<?if(!$USER->IsAuthorized()):?>
	<?
	if(isset($_REQUEST['backurl']) && $_REQUEST['backurl']){
		// fix ajax url
		if($_REQUEST['backurl'] != $_SERVER['REQUEST_URI']){
			$_SERVER['QUERY_STRING'] = '';
			$_SERVER['REQUEST_URI'] = $_REQUEST['backurl'];

			$APPLICATION->sDocPath2 = GetPagePath(false, true);
			$APPLICATION->sDirPath = GetDirPath($APPLICATION->sDocPath2);
			// $APPLICATION->reinitPath();
		}
	}
	?>
	<div id="wrap_ajax_auth">
  <?
        $bSkip = false;

        if (\Bitrix\Main\Loader::includeModule('bxmaker.authuserphone')) {

            $oManager = \BXmaker\AuthUserPhone\Manager::getInstance();

            //если модуль для текущего сайта включен
            if ($oManager->isEnabled()) {

                $bSkip = true;

                $APPLICATION->IncludeComponent(
                   $oManager->param()->getDefaultComponent(),
                   '',
                   [
                       'COMPOSITE_FRAME_MODE' => 'N',
		       'RAND_STRING' => 'ajax'
                   ]
                );


                // стили чтобы попап окно было соразмерно контенту компонента
                ?>
                <style>
                    .auth_frame.popup {
                        width: auto;
                        max-width: 375px;
                        min-width: 375px;
                    }

                    .auth_frame.popup .close {
                        right: 25px;
                        top: 20px;
                    }
                    #popup_iframe_wrapper {
                        z-index: 980 !important;
                    }
                </style>
                <?
            }
        }

        // если модуль для текущего сайта не включен или вообще не установлен, показываем исходный вариант
        if (!$bSkip) {
            ?>
		<?
		$APPLICATION->IncludeComponent(
			"bitrix:system.auth.form",
			"main",
			Array(
				"REGISTER_URL" => SITE_DIR."auth/registration/?register=yes",
				"PROFILE_URL" => SITE_DIR."auth/",
				"FORGOT_PASSWORD_URL" => SITE_DIR."auth/forgot-password/?forgot-password=yes",
				"AUTH_URL" => SITE_DIR."auth/",
				"SHOW_ERRORS" => "Y",
				"POPUP_AUTH" => "Y",
				"AJAX_MODE" => "Y",
				"BACKURL" => ((isset($_REQUEST['backurl']) && $_REQUEST['backurl']) ? $_REQUEST['backurl'] : "")
			)
		);?>
<?
 }
        ?>

?
        // Для модуля - https://marketplace.1c-bitrix.ru/solutions/bxmaker.authid/
        // подключение компонента модуля входа по ID
        if(\Bitrix\Main\Loader::includeModule('bxmaker.authid') 
        && \BXmaker\AuthID\Manager::getInstance()->option()->isEnabled()){
            ?>

            <div style="">
                <?
                $APPLICATION->IncludeComponent(
                    'bxmaker:authid.area',
                    '',
                    [
                        'SHOW_LINE' => 'Y'
                    ]
                )
                ?>

            </div>
            <?
        }
        // конец подключения компонента модуля входа по ID
        ?>
	<!-- доп стили для лучшего отображения компонента модуля входа по ID -->
        <style>          

            .popup #wrap_ajax_auth .bxmaker-authid-area {
                margin-top:-16px;
            }

            .popup #wrap_ajax_auth .bxmaker-authid-area__list {
                padding:0 32px;
            }

        </style>


	</div>
<?elseif(strlen($_REQUEST['backurl'])):?>
	<?LocalRedirect($_REQUEST['backurl']);?>
<?else:?>
	<?if(
		strpos($_SERVER['HTTP_REFERER'], $url) === false &&
		strpos($_SERVER['HTTP_REFERER'], SITE_DIR.'ajax/form.php') === false
	):?>
		<?$APPLICATION->ShowHead();?>
		<script>
		jsAjaxUtil.ShowLocalWaitWindow('id', 'wrap_ajax_auth', true);
		BX.reload(false)
		</script>
	<?else:?>
		<?LocalRedirect($url);?>
	<?endif;?>
<?endif;?>

В итоге получиться примерно так 2021-11-14_12-08.png

Мобильная версия

В мобильной версии авторизация находится не в popup окне а на отдельной странице /auth/, на которой выводится комопнент решения Аспро.

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

<?
define('NEED_AUTH', true);

//...

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

2021-11-08_12-14.png