Документация для разработчиков
Темная тема

OnBeforeUserAdd

Описание и параметры

bool функция-обработчик(
	array &arParams 
);
Событие вызывается в методе CUser::Add до вставки нового пользователя, и может быть использовано для отмены вставки или переопределения некоторых полей.

Параметры

ПараметрОписание
arParams Массив полей нового пользователя.

Примечание. Все параметры данного обработчика являются ссылками на исходные переменные. Поэтому если вы измените значение параметра внутри обработчика, это приведет к смене значения исходной переменной поступившей на вход функции-обработчика.

Возвращаемое значение

Для отмены добавления и прекращении выполнения метода CUser::Add необходимо в функции-обработчике создать исключение методом $APPLICATION->ThrowException() и вернуть false.

Пример функции-обработчика

<?
// файл /bitrix/php_interface/init.php
// регистрируем обработчик
AddEventHandler("main", "OnBeforeUserAdd", Array("MyClass", "OnBeforeUserAddHandler"));
class MyClass { // создаем обработчик события "OnBeforeUserAdd" public static function OnBeforeUserAddHandler(&$arFields) { if(strlen($arFields["LAST_NAME"])<=0) { global $APPLICATION; $APPLICATION->throwException("Пожалуйста, введите фамилию."); return false; } } } ?>

Автоматическое создание логина пользователя на основе email (версия main меньше 20.0.0)

<?
use Bitrix\Main\EventManager,
	Bitrix\Main\Diag\Debug,
	Bitrix\Main\Context;

$eventManager = EventManager::getInstance();

/* ---------------------------------------------------------------------------------------------------- EMAIL to LOGIN */
$eventManager->addEventHandler('main', 'OnBeforeUserAdd', ['CUserEx', 'OnBeforeUserAddHandler']);
$eventManager->addEventHandler('main', 'OnBeforeUserRegister', ['CUserEx', 'OnBeforeUserRegisterHandler']);
$eventManager->addEventHandler('main', 'OnBeforeUserUpdate', ['CUserEx', 'OnBeforeUserUpdateHandler']);

class CUserEx
{

	function OnBeforeUserAddHandler( &$arFields )
	{

		//\Bitrix\Main\Diag\Debug::writeToFile( $arFields, 'OnBeforeUserAddHandler', 'log.txt');

		return self::OnBeforeUserUpdateHandler( $arFields );

	}

	function OnBeforeUserRegisterHandler( &$arFields )
	{

		//\Bitrix\Main\Diag\Debug::writeToFile( $arFields, 'OnBeforeUserRegisterHandler', 'log.txt');

		return self::OnBeforeUserUpdateHandler( $arFields );

	}

	function OnBeforeUserUpdateHandler( &$arFields )
	{

		//\Bitrix\Main\Diag\Debug::writeToFile( $arFields, 'OnBeforeUserUpdateHandler', 'log.txt');

		if( !\Bitrix\Main\Context::getCurrent()->getRequest()->isAdminSection() )
		{

			$arFields['LOGIN'] = $arFields['EMAIL'];

			//\Bitrix\Main\Diag\Debug::writeToFile( $arFields, 'OnBeforeUserUpdateHandler notAdminSection', 'log.txt');

			return $arFields;

		}

	}

}
?>


© «Битрикс», 2001-2024, «1С-Битрикс», 2024