Решение аспро мало чем отличается от других решений аспро в плане логики реализации авторизации /регистрации на сайте.
Для решения Аспро Премьер
форма авторизации / регистрации подгружается по ajax и отображается в попап окне.
Необходимо найти файл относительно корня сайта - /ajax/auth.php
. Сделайте его копию, назвать auth.ori.php. В оригинальный файл вставьте код ниже.
<?
// содержимое файла /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;
}
.bxmaker-authuserphone-simple,
.bxmaker-authuserphone-enter {
box-shadow: none;
}
</style>
<?
/* https://bxmaker.ru/doc/authuserphone/how/avtorizatsiya-cherez-sotsseti/ */
if (file_exists(__DIR__ . '/auth_socserv.php')) {
include __DIR__ . '/auth_socserv.php';
}
}
}
// если модуль для текущего сайта не включен или вообще не установлен, показываем исходный вариант
if (!$bSkip) {
?>
<?
$APPLICATION->IncludeComponent(
"bitrix:system.auth.form",
"main",
[
"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'])): ?>
<script>location.href = <?
var_export($_REQUEST['backurl']) ?></script>
<?
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: ?>
<script>location.href = <?
var_export($url) ?></script>
<?
endif; ?>
<?
endif; ?>
В итоге получиться примерно так
В мобильной версии авторизация находится не в popup окне а на отдельной странице /auth/
, на которой выводится комопнент решения Аспро.
Скопируйте файл /auth/index.php
и наховите index.ori.php
. Затем в скопируйте в первый файл код ниже
<?
// содержимое файла /ajax/auth.php
require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/header.php");
$APPLICATION->SetTitle("Авторизация"); ?>
<?
$bSkip = false;
//подклчюаем модуль
if (\Bitrix\Main\Loader::includeModule('bxmaker.authuserphone')) {
$oManager = \BXmaker\AuthUserPhone\Manager::getInstance();
//если модуль для текущего сайта включен
if ($oManager->isEnabled()) {
global $APPLICATION;
$APPLICATION->SetPageProperty('TITLE_CLASS', 'center');
$APPLICATION->SetPageProperty('MENU', 'N');
$bSkip = true;
?>
<div style="text-align: center;"><?
$APPLICATION->IncludeComponent(
$oManager->param()->getDefaultComponent(),
'',
[
'COMPOSITE_FRAME_MODE' => 'N',
'RAND_STRING' => 'page'
]
);
// стили чтобы попап окно было соразмерно контенту компонента
?>
</div>
<style>
.bxmaker-authuserphone-simple,
.bxmaker-authuserphone-enter {
box-shadow: none;
}
.page-top-info {
display: none;
}
</style>
<?
/* https://bxmaker.ru/doc/authuserphone/how/avtorizatsiya-cherez-sotsseti/ */
if (file_exists(__DIR__ . '/auth_socserv.php')) {
include __DIR__ . '/auth_socserv.php';
}
}
}
// если модуль для текущего сайта не включен или вообще не установлен, показываем исходный вариант
if (!$bSkip) {
?>
<?
$APPLICATION->IncludeComponent("aspro:auth.premier", "", [
"SEF_MODE" => "Y",
"SEF_FOLDER" => "/auth/",
"SEF_URL_TEMPLATES" => [
"auth" => "",
"registration" => "registration/",
"forgot" => "forgot-password/",
"change" => "change-password/",
"confirm" => "confirm-password/",
"confirm_registration" => "confirm-registration/",
],
"PERSONAL" => "/personal/"
],
false
); ?>
<?
}
?>
<?
// Для модуля - 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',
'RAND_STRING' => 'AUTH_PAGE'
]
)
?>
</div>
<!-- доп стили для лучшего отображения компонента модуля входа по ID -->
<style>
.popup #wrap_ajax_auth .bxmaker-authid-area {
margin-top: -16px;
}
.popup #wrap_ajax_auth .bxmaker-authid-area__list {
padding: 0 32px;
}
</style>
<?
}
// конец подключения компонента модуля входа по ID
?>
<?
require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/footer.php"); ?>
В итоге получиться примерно так