/** * @param MvcEvent $event */ public function onBootstrap(MvcEvent $event) { $eventManager = $event->getApplication()->getEventManager(); $moduleRouteListener = new ModuleRouteListener(); $moduleRouteListener->attach($eventManager); return; }
public function __invoke(MvcEvent $e) { $exception = $e->getParam('exception'); //it is just a sample, you can create service for logger $writer = new \Zend\Log\Writer\Stream('./data/logs/' . date('Y-m-d') . '-log.txt'); $log = new \Zend\Log\Logger(); $log->addWriter($writer); $log->err($exception); }
/** * Verifica se precisa fazer a autorização do acesso * @param MvcEvent $event Evento * @return boolean */ public function mvcPreDispatch($event) { $di = $event->getTarget()->getServiceLocator(); $routeMatch = $event->getRouteMatch(); $moduleName = $routeMatch->getParam('module'); $controllerName = $routeMatch->getParam('controller'); // if ($moduleName == 'admin' && $controllerName != 'Admin\Controller\Auth') { // $authService = $di->get('Admin\Service\Auth'); // if (! $authService->authorize()) { // $redirect = $event->getTarget()->redirect(); // $redirect->toUrl('/admin/auth'); // } // } $actionName = $routeMatch->getParam('action'); $authService = $di->get('Admin\\Service\\Auth'); if (!$authService->authorize($moduleName, $controllerName, $actionName)) { throw new \Exception('Você não tem permissão para acessar este recurso'); } return true; }
/** * Get the event * * @return \Zend\Mvc\MvcEvent * @throws Exception\DomainException if unable to find event */ private function getEvent() { if ($this->event) { return $this->event; } $controller = $this->getController(); if (!$controller instanceof \Zend\Mvc\InjectApplicationEventInterface) { throw new \Exception('Forward plugin requires a controller that implements InjectApplicationEventInterface'); } $event = $controller->getEvent(); if (!$event instanceof \Zend\Mvc\MvcEvent) { $params = []; if ($event) { $params = $event->getParams(); } $event = new MvcEvent(); $event->setParams($params); } $this->event = $event; return $this->event; }