События в 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 — хост пользователя
пример регистрация поля Логин только латинскими буквами и цифрами:
<?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 — хост пользователя
Пример возвращения сообщения после регистрации с информацией на каком из сайтов зарегистрированы:
<?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;
}
}
// ...