/** * Регистрация специфичных сервисов для модуля * @param DiInterface $di */ public function registerServices(DiInterface $di) { // Регистрация диспетчера $di->set('dispatcher', function () use($di) { // Создаем менеджер событий $eventsManager = new EventsManager(); // Прикрепляем слушателя $eventsManager->attach("dispatch:afterDispatch", function ($event, $dispatcher) use($di) { $session = $di->get('session'); if ($session->has("user")) { $user = $session->get('user'); $group = \UserGroups::findFirst("user_id = \"" . $user->id . "\""); if ($group->group_id == "4") { //Т.е. если это методист return true; } else { //throw new \Exception('<B>Restricted access!</B>',100); return false; } } else { //throw new \Exception('<B>Not logged in!</B>',100); if ($dispatcher->getActionName() != "page404") { $dispatcher->forward(array('controller' => 'index', 'action' => 'page404')); return false; } else { return true; } } //if ($user->) }); /*$eventsManager->attach('dispatch:beforeException', function ($event, $dispatcher, $exception) use (&$di) { //debug($dispatcher); if ($exception->getCode()==1) { debug($dispatcher->getModuleName ()); $dispatcher->forward(array( 'controller'=>'index', 'action' =>'page404' //show404 )); return false; } else { $dispatcher->setModuleName("frontend"); //debug($dispatcher->getModuleName()); //Handle 404 exceptions $dispatcher->forward(array( 'controller'=>'index', 'action' =>'page404' //show404 )); return false; } });*/ //$security=new Security($di); // We listen for events in the dispatcher using the Security plugin //$eventsManager->attach('dispatch', $security); $dispatcher = new Dispatcher(); //Прикрепляем менеджер событий к диспетчеру $dispatcher->setDefaultNamespace("Multiple\\Methodist\\Controllers"); $dispatcher->setEventsManager($eventsManager); return $dispatcher; }); $view = $di->get("view"); $view->setViewsDir(__DIR__ . "/views/"); }