Example #1
0
 public function __invoke(ServerRequestInterface $requestInterface, ResponseInterface $response, callable $next = null)
 {
     $request = new Request($requestInterface);
     // Load page
     try {
         $pageName = $request->getPageName();
         // Switch to install page if website is not installed yet
         if (!$this->website->getConfig()->isDatabaseUpToDate()) {
             $pageName = "install";
         }
         $page = $this->loadPage($pageName);
     } catch (NotFoundException $e) {
         $page = new Error404Page();
     }
     // Login check
     $minimumRank = $page->getMinimumRank();
     if ($minimumRank != Authentication::RANK_LOGGED_OUT && !$this->website->getAuth()->check($minimumRank, false)) {
         // Login failure
         $page = new ErrorLoginRequiredPage($minimumRank);
     }
     // Get response
     $updatedResponse = $next ? $next($requestInterface, $response) : $response;
     return Responses::getPageResponse($this->website, $request, $page, $updatedResponse);
 }