diff options
| author | Jan-Hendrik Willms <tleilax+studip@gmail.com> | 2026-03-17 18:48:55 +0100 |
|---|---|---|
| committer | Jan-Hendrik Willms <tleilax+studip@gmail.com> | 2026-03-17 18:48:55 +0100 |
| commit | 6c0bd45459247e26f5de4b34fe519dcd3bcdb380 (patch) | |
| tree | 408ece460fe0a892c832e5b56e0bbedcd8dd4174 /lib/middleware/HandleAccessDeniedMiddleware.php | |
| parent | 15d5590657faf962b8a2b7895af94a4243859e67 (diff) | |
handle access denied exception correctly and don't duplicate redirect to login...
Closes #6375
Merge request studip/studip!4836
(cherry picked from commit 431fda0deda433186c5ea5740e2a2b120d2c1a14)
2fb81ba6 handle access denied exception correctly and don't duplicate redirect to login...
Co-authored-by: Jan-Hendrik Willms <tleilax+studip@gmail.com>
Diffstat (limited to 'lib/middleware/HandleAccessDeniedMiddleware.php')
| -rw-r--r-- | lib/middleware/HandleAccessDeniedMiddleware.php | 22 |
1 files changed, 7 insertions, 15 deletions
diff --git a/lib/middleware/HandleAccessDeniedMiddleware.php b/lib/middleware/HandleAccessDeniedMiddleware.php index 567eca8..829b516 100644 --- a/lib/middleware/HandleAccessDeniedMiddleware.php +++ b/lib/middleware/HandleAccessDeniedMiddleware.php @@ -2,33 +2,25 @@ namespace Studip\Middleware; use AccessDeniedException; +use LoginException; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\MiddlewareInterface; use Psr\Http\Server\RequestHandlerInterface; -use Psr\Http\Message\ResponseFactoryInterface; -use Request; -use URLHelper; +use User; final class HandleAccessDeniedMiddleware implements MiddlewareInterface { - public function __construct( - private readonly ResponseFactoryInterface $responseFactory - ) { - } - - /** - * @SuppressWarnings(StaticAccess) - * @SuppressWarnings(SuperGlobals) - */ public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface { try { return $handler->handle($request); } catch (AccessDeniedException $ade) { - $_SESSION['redirect_after_login'] ??= Request::url(); - return $this->responseFactory->createResponse(302) - ->withHeader('Location', URLHelper::getURL('dispatch.php/login')); + if (!User::findCurrent()) { + throw new LoginException(); + } + + throw $ade; } } } |
