Sfoglia il codice sorgente

add 404 handling in page resolver

Olivier Massot 4 anni fa
parent
commit
d3b210c314

+ 3 - 2
ot_core/ext_tables.sql

@@ -20,12 +20,13 @@ CREATE TABLE ot_websites
     subdomain VARCHAR(255) NOT NULL,
     custom_domain VARCHAR(255),
     locale VARCHAR(10) DEFAULT 'fr-FR',
-    config_identifier VARCHAR(45),
+    config_identifier VARCHAR(255),
     deleted tinyint(1) unsigned DEFAULT '0' NOT NULL,
 
     PRIMARY KEY (uid),
     KEY organization_id (organization_id),
-    KEY subdomain (subdomain)
+    KEY subdomain (subdomain),
+    KEY config_identifier (config_identifier)
 );
 
 #

+ 13 - 1
ot_optimizer/Classes/XClass/Frontend/Middleware/OtPageResolver.php

@@ -10,6 +10,8 @@ use Psr\Http\Message\ServerRequestInterface;
 use Psr\Http\Server\RequestHandlerInterface;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Extbase\Object\ObjectManager;
+use TYPO3\CMS\Frontend\Controller\ErrorController;
+use TYPO3\CMS\Frontend\Page\PageAccessFailureReasons;
 
 class OtPageResolver extends \TYPO3\CMS\Frontend\Middleware\PageResolver
 {
@@ -39,7 +41,17 @@ class OtPageResolver extends \TYPO3\CMS\Frontend\Middleware\PageResolver
         $devMode = $_SERVER['TYPO3_CONTEXT'] == "Development";
 
         $params = $request->getQueryParams();
-        $params['id'] = $otWebsiteRepository->matchUriToPage($request->getUri(), $devMode);
+        $pageUid = $otWebsiteRepository->matchUriToPage($request->getUri(), $devMode);
+
+        if (!$pageUid > 0) {
+            return GeneralUtility::makeInstance(ErrorController::class)->pageNotFoundAction(
+                $request,
+                'The requested page does not exist',
+                ['code' => PageAccessFailureReasons::PAGE_NOT_FOUND]
+            );
+        }
+
+        $params['id'] = $pageUid;
         $request = $request->withQueryParams($params);
 
         return parent::process($request, $handler);