Есть два сайта на одном ядре. Условно, site.ru и account.site.ru
На account.site.ru размещены личный кабинет и формы регистрации и авторизации, реализованные на ajax.
Проблема в том, что при отправке формы регистрации сама регистрация пользователя не происходит.
В админке "Позволять ли пользователям регистрироваться самостоятельно" отмечено, заданы группы для добавления нового пользователя.
Это ajax обработчик
<?
require_once($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_before.php');
\Bitrix\Main\Loader::IncludeModule('victory.options');
use Bitrix\Main\Web\Json;
use Victory\Options\CVictoryOptions;
global $APPLICATION;
global $USER;
$response = array();
if ($USER->IsAuthorized()) {
if (CSite::InGroup(array(1, 8))) {
$response['STATUS'] = 'OK';
$response['REDIRECT'] = '/manager/index.php';
} elseif (CSite::InGroup(array(7))) {
$response['STATUS'] = 'OK';
$response['REDIRECT'] = '/user/index.php';
} else {
$response['STATUS'] = 'OK';
$response['CONTENT'] = '<div class="account-form--header register-form--header text-left">Регистрация завершена!</div>';
$response['CONTENT'] .= '<p>Мы проверим вашу информацию в течение 2-х дней, после чего вам будет направлено Уведомление об открытии доступа к личному кабинету.</p>';
$response['CONTENT'] .= '<p>Если Вам не придёт уведомление в течение 2-х дней, обратитесь, пожалуйста, в техническую поддержку по телефону: <b>' . CVictoryOptions::getOptionValue("company_phone_1") . '</b></p>';
}
echo Json::encode($response);
die();
}
$response['USER'] = '<pre>' . print_r($USER, 1) . '</pre>';
$response['USER_AUTH'] = '<pre>' . print_r($USER->IsAuthorized(), 1) . '</pre>';
if (isset($_POST['TYPE']) && $_POST['TYPE']) {
switch ($_POST['TYPE']) {
case 'AUTH':
$APPLICATION->IncludeComponent(
"bitrix:system.auth.form",
"",
array(
"FORGOT_PASSWORD_URL" => "",
"PROFILE_URL" => "profile.php",
"REGISTER_URL" => "register.php",
"SHOW_ERRORS" => "Y"
)
);
if (isset($_POST['AJAX-ACTION']) && $_POST['AJAX-ACTION'] == 'AUTH') {
$APPLICATION->RestartBuffer();
header('Content-type: application/json');
if (
(isset($arResult['ERROR']) && $arResult['ERROR'] === true)
|| (!empty($arResult['ERROR_MESSAGE']) && isset($arResult['ERROR_MESSAGE']['TYPE']) && $arResult['ERROR_MESSAGE']['TYPE'] == 'ERROR')
) {
$response = array(
'STATUS' => 'ERROR',
'MESSAGE' => strip_tags($arResult['ERROR_MESSAGE']['MESSAGE'])
);
}
echo Json::encode($response);
die();
}
break;
case 'REGISTER':
$APPLICATION->IncludeComponent(
"bitrix:main.register",
"",
array(
"AUTH" => "Y",
"REQUIRED_FIELDS" => array("EMAIL", "PHONE_NUMBER", "NAME", "LAST_NAME"),
"SET_TITLE" => "N",
"SHOW_FIELDS" => array("EMAIL", "PHONE_NUMBER", "NAME", "SECOND_NAME", "LAST_NAME", "PERSONAL_PHONE"),
"SUCCESS_PAGE" => "",
"USER_PROPERTY" => array(),
"USER_PROPERTY_NAME" => "",
"USE_BACKURL" => "",
)
);
if (isset($_POST['AJAX-ACTION']) && $_POST['AJAX-ACTION'] == 'REGISTER') {
$APPLICATION->RestartBuffer();
header('Content-type: application/json');
$response['POST'] = '<pre>' . print_r($_POST, 1) . '</pre>';
if (!$USER->IsAuthorized()) {
if (!empty($arResult["ERRORS"])) {
foreach ($arResult["ERRORS"] as $key => $error) {
if (intval($key) == 0 && $key !== 0) {
$arResult["ERRORS"][$key] = str_replace("#FIELD_NAME#", """ . GetMessage("REGISTER_FIELD_" . $key) . """, $error);
}
}
$response['STATUS'] = 'ERROR';
$response['MESSAGE'] = implode("<br>", $arResult["ERRORS"]);
$response['ERRORS'] = $arResult["ERRORS"];
} elseif ($arResult["USE_EMAIL_CONFIRMATION"] === "Y") {
$response['STATUS'] = 'OK';
$response['CONTENT'] = '<div class="account-form--header register-form--header text-left">Регистрация завершена!</div>';
$response['CONTENT'] .= '<p>' . GetMessage("REGISTER_EMAIL_WILL_BE_SENT") . '</p>';
}
}
echo Json::encode($response);
die();
}
break;
}
}
В отладке, в $response['USER_AUTH'] пусто, в $response['POST'] все данные из формы регистрации
Не работает ни со стандартными шаблонами ни с кастомизированными.
Версия битрикс последняя на момент написания поста.