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

OnBeforeUserRegister

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

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

Примечание: функция будет вызываться также при подтверждении регистрации (событие OnBeforeUserUpdate), где ключа LOGIN нет.

Параметры

ПараметрОписание
arArgs Массив полей регистрации нового пользователя:
  • LOGIN - имя входа пользователя
  • NAME - имя пользователя
  • LAST_NAME - фамилия пользователя
  • PASSWORD - пароль
  • CONFIRM_PASSWORD - подтверждение пароля
  • CHECKWORD - новое контрольное слово для смены пароля
  • EMAIL - EMail пользователя
  • ACTIVE - флаг активности [Y|N]
  • SITE_ID - ID сайта по умолчанию для уведомлений
  • GROUP_ID - массив ID групп пользователя
  • USER_IP - IP адресс пользователя
  • USER_HOST - хост пользователя
На основании массива полей происходит добавление пользователя и отсылка почтового события NEW_USER.

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

if ( isset($args['LOGIN']) && ! preg_match("/^[-a-zA-Z0-9_]+$/", $args['LOGIN']) )

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

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

Примеры

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

<?
// файл /bitrix/modules/my_module_id/include.php
class MyClass
{
	// создаем обработчик события "OnBeforeUserRegister"
	public static function OnBeforeUserRegisterHandler(&$arFields)
	{
		// если пользователь пришел по рекламной кампании #34, то
		if ($_SESSION["SESS_LAST_ADV_ID"]==34)
		{
			// добавляем его в группу #3
			$arFields["GROUP_ID"][] = 3;    

			// добавим административный комментарий
			if (intval($_SESSION["SESS_ADV_ID"])>0)
				$arFields["ADMIN_NOTES"] = "Рекламная кампания #34 - прямой заход";
			else
				$arFields["ADMIN_NOTES"] = "Рекламная кампания #34 - возврат";

			$arFields["SITE_ID"] = "ru";
		}
	}
}
?>

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

<?
// регистрируем обработчик события "OnBeforeUserRegister"
RegisterModuleDependences("main", "OnBeforeUserRegister", "my_module_id", "MyClass", "OnBeforeUserRegisterHandler");
?>


Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
0
Александр Киселев
Сообщение не промодерировано, возможны ошибки и неточности.
Если вы зарегистрировали функцию-обработчик в классе, а ней вызываете методы вашего класса и в них пытаетесь выкинуть исключение, как тут написано  "$APPLICATION->ThrowException() и вернуть false", то ничего не сработало, как минимум у меня. Нашел решение - выкидывать исключение этого типа
Цитата
throw new \Bitrix\Main\SystemException("Ошибка");
0
Михаил Микулин
Код
function OnBeforeUserRegisterHandler($args)
  {
  
   if(preg_match("/[:?,>!<=~]/",$args['LOGIN']))
   {
       $GLOBALS['APPLICATION']->ThrowException('запрещено использовать следующие символы " :?,>!<= "'); 
       
       //echo 'запрещено использовать следующие символы " :?,>!< "';
   return false; 
   }
   
   
   
  return true;
  }
2
Николай Гнусов
Делаем возможность регистрации поля Логин только латинскими буквами и цифрами.

Код
// файл /bitrix/php_interface/init.php
// добавляем обработчик события при регистрации
AddEventHandler("main", "OnBeforeUserRegister", "OnBeforeUserRegisterHandler");
// а заодно и при обновлении данных пользователем
AddEventHandler("main", "OnBeforeUserUpdate", "OnBeforeUserRegisterHandler");

// описываем саму функцию 
function OnBeforeUserRegisterHandler($args)
  {
   if (!ereg("^[a-zA-Z0-9_-]+$",$args['LOGIN'])) 
   {
   $GLOBALS['APPLICATION']->ThrowException('Логин может состоять из латинских букв, цифр, знаков "-" и "_"'); 
   return false;   
   }
  return true;
  }


Теперь пользователи могут регистрировать только логин, состоящий из латинских букв, цифр, знаков "-" и "_"
© «Битрикс», 2001-2024, «1С-Битрикс», 2024
Наверх