From 4474cdb65ce2f0d4cacecf1de0cee4aca6e794ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maur=C3=ADcio=20Meneghini=20Fauth?= Date: Tue, 15 Aug 2023 17:25:13 -0300 Subject: [PATCH] Create the RouteParsing middleware MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: MaurĂ­cio Meneghini Fauth --- libraries/classes/Application.php | 4 +-- libraries/classes/Http/ServerRequest.php | 2 +- libraries/classes/Middleware/RouteParsing.php | 27 +++++++++++++++++++ psalm-baseline.xml | 3 --- 4 files changed, 30 insertions(+), 6 deletions(-) create mode 100644 libraries/classes/Middleware/RouteParsing.php diff --git a/libraries/classes/Application.php b/libraries/classes/Application.php index 2ff140a642..ffe1ef0fdd 100644 --- a/libraries/classes/Application.php +++ b/libraries/classes/Application.php @@ -27,6 +27,7 @@ use PhpMyAdmin\Middleware\ErrorHandling; use PhpMyAdmin\Middleware\OutputBuffering; use PhpMyAdmin\Middleware\PhpExtensionsChecking; use PhpMyAdmin\Middleware\PhpSettingsConfiguration; +use PhpMyAdmin\Middleware\RouteParsing; use PhpMyAdmin\Middleware\ServerConfigurationChecking; use PhpMyAdmin\Middleware\UriSchemeUpdating; use PhpMyAdmin\Plugins\AuthenticationPlugin; @@ -86,6 +87,7 @@ class Application $requestHandler->add(new PhpExtensionsChecking($this, $this->template, $this->responseFactory)); $requestHandler->add(new ServerConfigurationChecking($this->template, $this->responseFactory)); $requestHandler->add(new PhpSettingsConfiguration()); + $requestHandler->add(new RouteParsing()); $requestHandler->add(new ConfigLoading($this->config, $this->template, $this->responseFactory)); $requestHandler->add(new UriSchemeUpdating($this->config)); @@ -111,8 +113,6 @@ class Application $isSetupPage = (bool) $request->getAttribute('isSetupPage'); $route = $request->getRoute(); - Routing::$route = $route; - $isMinimumCommon = $isSetupPage || $route === '/import-status' || $route === '/url' || $route === '/messages'; if ($route !== '/messages') { diff --git a/libraries/classes/Http/ServerRequest.php b/libraries/classes/Http/ServerRequest.php index f9428e70c7..61ceb7e489 100644 --- a/libraries/classes/Http/ServerRequest.php +++ b/libraries/classes/Http/ServerRequest.php @@ -274,7 +274,7 @@ class ServerRequest implements ServerRequestInterface /** @psalm-return non-empty-string */ public function getRoute(): string { - $route = $this->getQueryParam('route') ?? $this->getParsedBodyParam('route'); + $route = $this->getAttribute('route') ?? $this->getQueryParam('route') ?? $this->getParsedBodyParam('route'); if (! is_string($route) || $route === '') { return '/'; } diff --git a/libraries/classes/Middleware/RouteParsing.php b/libraries/classes/Middleware/RouteParsing.php new file mode 100644 index 0000000000..3f91fc595a --- /dev/null +++ b/libraries/classes/Middleware/RouteParsing.php @@ -0,0 +1,27 @@ +getRoute(); + /** @psalm-suppress DeprecatedProperty */ + Routing::$route = $route; + + return $handler->handle($request->withAttribute('route', $route)); + } +} diff --git a/psalm-baseline.xml b/psalm-baseline.xml index 92a9726b1e..b1b09c411b 100644 --- a/psalm-baseline.xml +++ b/psalm-baseline.xml @@ -17,9 +17,6 @@ - - Routing::$route -