События в Битрикс
Регистрация события (таблица b_module_to_module
):
$eventManager = \Bitrix\Main\EventManager::getInstance(); $eventManager->registerEventHandler('search', 'OnReindex', 'iek.prodcat', '\Iek\Prodcat\SearchHandler', 'OnReindex');
Повесить обработчик на событие:
- add-event.php
AddEventHandler("main", "OnAfterUserLogin", Array("MyClass", "OnAfterUserLogin"));
Событие | Описание | Пример использования |
---|---|---|
OnBeforeEndBufferContent | перед выводом буферизированного контента | Добавление «nofollow» для внешних ссылок, email cloaking |
OnBeforeUserRegister | до попытки зарегистрировать нового пользователя | собственные проверки регистрации |
OnBeforeUserLogin | до попытки авторизации пользователя | запрет входа пользователю вне локальной сети |
OnAfterUserLogin | после попытки авторизации пользователя | очистка закешированных данных |
Запрет входа пользователю вне локальной сети
- init.php
AddEventHandler("main", "OnBeforeUserLogin", array("LocalStuffOnly", "OnBeforeUserLoginHandler"));
- LocalStuffOnly.php
class LocalStuffOnly { private static $errAuthLocalStuff = "Вы не имеете доступа вне локальной сети."; public static function OnBeforeUserLoginHandler($arFields) { if (strtolower($arFields["LOGIN"]) == "localuser" && !preg_match('~^(192\.168\.|10\.0\.)~', $_SERVER['REMOTE_ADDR'])) { global $APPLICATION; $APPLICATION->throwException(self::$errAuthLocalStuff); $GLOBALS['errAuthLocalStuff'] = self::$errAuthLocalStuff; return false; } } }