예제 #1
0
 public function beforeDispatchLoop(Event $event, Dispatcher $dispatcher)
 {
     if (!$this->auth->logged_in() && $this->router->getActionName() != 'login' && $this->router->getControllerName() != 'rotator') {
         $dispatcher->setReturnedValue($this->response->redirect('login'));
         return false;
     }
     if ($this->router->getControllerName() != 'rotator') {
         if ($this->auth->logged_in('admin')) {
             $dispatcher->setDefaultNamespace('App\\Controllers\\Admin');
         } elseif ($this->auth->logged_in('advertiser')) {
             $dispatcher->setDefaultNamespace('App\\Controllers\\Advertiser');
         }
     }
     return true;
 }
 public function beforeException(Event $event, Dispatcher $dispatcher, Exception $exception)
 {
     $di = $this->getDI();
     $response = $di->get('response');
     switch ($exception->getCode()) {
         case Dispatcher::EXCEPTION_HANDLER_NOT_FOUND:
         case Dispatcher::EXCEPTION_ACTION_NOT_FOUND:
             $dispatcher->forward(['controller' => 'error', 'action' => 'show404']);
             return false;
     }
     if ($exception instanceof AbstractResponse) {
         $response->setContent($exception->getMessage())->setStatusCode($exception->getStatusCode(), $exception->getStatusMessage());
         $dispatcher->setReturnedValue($response);
         return false;
     }
     //return $response->setContent($exception->getMessage() . ', ' . $exception->getFile() . ':' . $exception->getLine());
 }