События в 1С-Битрикс

События главного модуля (main)

OnBeforeUserLogin — вызывается в методе CUser::Login до проверки имени входа arParams[‘LOGIN’] и пароля arParams[‘PASSWORD’] и попытки авторизовать пользователя, и может быть использовано для прекращения процесса проверки или переопределения некоторых полей.

Входящие в метод параметры:

  • LOGIN — Логин пользователя
  • PASSWORD — Пароль. Если параметр PASSWORD_ORIGINAL равен»Y», то в данном параметре был передан оригинальный пароль, в противном случае был передан хеш (md5) от оригинального пароля.
  • REMEMBER — Если значение равно «Y», то авторизация пользователя должна быть сохранена в куках.
  • PASSWORD_ORIGINAL — Если значение равно «Y», то это означает что PASSWORD не был сконвертирован в MD5 (т.е. в параметре PASSWORD был передан реальный пароль вводимый пользователем с клавиатуры), если значение равно «N», то это означает что PASSWORD уже сконвертирован в MD5.
Примечание. Все параметры данного обработчика являются ссылками на исходные переменные. Поэтому если вы измените значение параметра внутри обработчика, это приведет к смене значения исходной переменной поступившей на вход функции-обработчика.

пример не дает авторизоватся пользователю с логином Guest:

<?php

use Bitrix\Main\EventManager;

// ...

EventManager::getInstance()->addEventHandler(
    'main',
    'OnBeforeUserLogin',
    ["MyClass", "OnBeforeUserLoginHandler"]
);

class MyClass
{
    function OnBeforeUserLoginHandler( &$arFields )
    {
        if ( strtolower( $arFields["LOGIN"] ) == "guest" ) {
            global $APPLICATION;
            $APPLICATION->ThrowException( "Пользователь с именем входа Guest не может быть авторизован." );
            return false;
        }
    }
}
// ...

 


OnBeforeUserRegister — вызывается до попытки регистрации нового пользователя методом CUser::Register и может быть использовано для прекращения процесса регистрации или переопределения некоторых полей.

Входящие в метод параметры:

  • 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.

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

пример регистрация поля Логин только латинскими буквами и цифрами:

<?php

use Bitrix\Main\EventManager;

// ...

EventManager::getInstance()->addEventHandler(
    'main',
    'OnBeforeUserRegister',
    ["MyClass", "OnBeforeUserRegisterHandler"]
);

class MyClass
{
    function OnBeforeUserRegisterHandler( &$arFields )
    {
        if ( !preg_match("^[a-zA-Z0-9_-]+$", $arFields['LOGIN']) ) {
            global $APPLICATION;
            $APPLICATION->ThrowException( 'Логин может состоять из латинских букв, цифр, знаков "-" и "_"' );
            return false;
        }

        return true;
    }
}
// ...

 


OnAfterUserRegister — вызывается после попытки регистрации нового пользователя методом CUser::Register.

Входящие в метод параметры:

  • USER_ID — в случае если регистрация прошла успешно содержит код нового пользователя
  • RESULT_MESSAGE — массив с информационным текстом, описывающий результат регистрации пользователя, в дальнейшем используется функцией ShowMessage для вывода сообщения.
  • LOGIN — имя входа пользователя
  • NAME — имя пользователя
  • LAST_NAME — фамилия пользователя
  • PASSWORD — пароль
  • CONFIRM_PASSWORD — подтверждение пароля
  • CHECKWORD — новое контрольное слово для смены пароля
  • EMAIL — EMail пользователя
  • ACTIVE — флаг активности [Y|N]
  • SITE_ID — ID сайта по умолчанию для уведомлений
  • GROUP_ID — массив ID групп пользователя
  • USER_IP — IP адрес пользователя
  • USER_HOST — хост пользователя
Примечание. Все параметры данного обработчика являются ссылками на исходные переменные. Поэтому изменить эти параметры невозможно: изменения не сохраняются. Реально можно изменить только RESULT_MESSAGE, что приведет к смене сообщения возвращаемого функцией CUser::Register. Если необходимо модифицировать поля регистрации пользователя перед сохранением, необходимо использовать событие OnBeforeUserRegister

Пример возвращения сообщения после регистрации с информацией на каком из сайтов зарегистрированы:

<?php

use Bitrix\Main\EventManager;

// ...

EventManager::getInstance()->addEventHandler(
    'main',
    'OnAfterUserRegister',
    ["MyClass", "OnAfterUserRegisterHandler"]
);

class MyClass
{
    function OnAfterUserRegisterHandler( &$arFields )
    {
        if ( $arFields['USER_ID'] > 0 ) {
            if ( SITE_ID == 's1' ) {
            	$arFields['RESULT_MESSAGE']['MESSAGE'] = 'Вы успешно зарегистрировались на сайте "S1"';
            } else if ( SITE_ID == 's2' ) {
            	$arFields['RESULT_MESSAGE']['MESSAGE'] = 'Вы успешно зарегистрировались на сайте "S2"';
            }
        }

        return $arFields;
    }
}
// ...