Форма авторизации для решения Аспро Next подгружается по ajax. Для ее замены необходимо найти файл относительно корня сайта - /ajax/auth.php
и сохранить его копию. В оригинальный файл поместить код ниже.
<?
// содержимое файла /ajax/auth.php
require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php"); ?>
<?
global $USER;
if ($_GET["auth_service_error"]) {
LocalRedirect(SITE_DIR . 'personal/');
}
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();
}
} ?>
<a href="#" class="close jqmClose"><i></i></a>
<div id="wrap_ajax_auth" class="form">
<?
$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) {
?>
<div class="form_head">
<h2><?= \Bitrix\Main\Localization\Loc::getMessage('AUTHORIZE_TITLE'); ?></h2>
</div>
<?
$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",
"CHANGE_PASSWORD_URL" => SITE_DIR . "auth/change-password/?change-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'], SITE_DIR . 'personal/') === 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(SITE_DIR . 'personal/');
}
}
В итоге получиться примерно так
В мобильной версии авторизация находится не в popup окне а на отдельной странице /auth/
, на которой выводится комопнент решения Аспро.
Чтобы заменить его на комопнент модуля, необходимо в начало файла /auth/index.php
прописать константу для вывода авторизации
<?
define('NEED_AUTH', true);
//...
А в настройках главного модуля указываем шаблон для системных комопнентов атворизации регистрации