diff --git a/src/Glpi/Exception/Access/AccessException.php b/src/Glpi/Exception/Access/AccessException.php index a57b3fb0151..8a08fc9daa6 100644 --- a/src/Glpi/Exception/Access/AccessException.php +++ b/src/Glpi/Exception/Access/AccessException.php @@ -39,12 +39,24 @@ abstract class AccessException extends \RuntimeException { - protected Request $request; + private ?Request $request = null; public function setRequest(Request $request): void { $this->request = $request; } + public function getRequest(): Request + { + if (!$this->request) { + throw new \RuntimeException(\sprintf( + 'Request not set in "%s" exception class. Access error listener might be wrongly configured.', + static::class, + )); + } + + return $this->request; + } + abstract public function asResponse(): Response; } diff --git a/src/Glpi/Exception/Access/RequiresHttpsException.php b/src/Glpi/Exception/Access/RequiresHttpsException.php index baede78184f..1a11948c9f0 100644 --- a/src/Glpi/Exception/Access/RequiresHttpsException.php +++ b/src/Glpi/Exception/Access/RequiresHttpsException.php @@ -41,13 +41,15 @@ class RequiresHttpsException extends AccessException { public function asResponse(): Response { + $request = $this->getRequest(); + $cnt = TemplateRenderer::getInstance()->render( 'pages/https_only.html.twig', [ - 'secured_url' => 'https://' . $this->request->getHost() . $this->request->getUri(), + 'secured_url' => 'https://' . $request->getHost() . $request->getUri(), ] ); - return new Response($cnt); + return new Response($cnt, 400); } }