/**
  * @see \Ableron\Core\Controller\ControllerInterface::processRequest()
  */
 public function processRequest(HttpRequest $request)
 {
     // set request to process
     $this->request = $request;
     // process request
     try {
         $this->init();
         $this->checkAccessPermissions();
         $this->run();
     } catch (RedirectRequiredException $e) {
         Application::getResponseHandler()->sendRedirect($e->getRedirectUri());
     } catch (AccessDeniedException $e) {
         Application::getRequestHandler()->isFrontendRequest() ? new FrontendAccessDeniedPage($this->request) : new BackendAccessDeniedPage($this->request);
     } catch (SystemException $e) {
         // log exception
         Application::getLogManager()->logException('Unable to process request', $e);
         // stop script execution
         Application::exitWithInternalServerError();
     }
 }