События в Битрикс
Регистрация события (таблица 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; } } }