static function activate() { // Сессиия идентифицируется по пользователю ini_set('session.use_cookies', 0); self::init(); // При смене пользователя сменить сессию Events::on('Auth:set_user', ['\\boolive\\core\\session\\Session', 'init']); }
/** * Установка текущего пользователя * Используется при "ручной" аутентификации, например, формой входа. При этом поиск пользователя * по логину, паролю или другим параметрам выполняется моделью формы входа. * @param null | Entity $user Авторизованный пользователь или NULL для отмены авторизации * @param int $duration Длительность в секундах запоминания пользователя. Если 0, то пользователь запоминается на период работы браузера */ static function set_user($user, $duration = 0) { if ($user instanceof Entity) { self::$user = $user; self::remember($duration); } else { // Забыть текущего пользователя и создать нового гостя unset(self::$input['COOKIE']['ID']); self::remind(); } Events::trigger('Auth::set_user', [self::get_user()]); }
/** * Обработчик исключений * Вызывается автоматически при исключениях и ошибках * @param \Exception $e Обрабатываемое исключение * @return bool */ static function exception($e) { // Если обработчики событий не вернут положительный результат, то // обрабатываем исключение по умолчанию if (!\boolive\core\events\Events::trigger('Core::error', [$e])) { trace_log(get_class($e) . ' [' . $e->getCode() . ']: ' . $e->getMessage() . ' in ' . $e->getFile() . ' on line ' . $e->getLine()); if (isset($e->xdebug_message)) { echo '<table cellspacing="0" cellpadding="1" border="1" dir="ltr">' . $e->xdebug_message . '</table>'; } else { trace($e, 'error'); } } }
/** * Вызов внешнего фильтра * @param string $method Названия фильтра * @param array $args Аргументы для метода фильтра * @return mixed */ static function __callStatic($method, $args) { $args[1] =& $args[1]; // needed for call_user_function() return Events::trigger('Check::' . $method, $args, false); }