diff options
Diffstat (limited to 'lib/private/AppFramework/Middleware/AdditionalScriptsMiddleware.php')
-rw-r--r-- | lib/private/AppFramework/Middleware/AdditionalScriptsMiddleware.php | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/lib/private/AppFramework/Middleware/AdditionalScriptsMiddleware.php b/lib/private/AppFramework/Middleware/AdditionalScriptsMiddleware.php new file mode 100644 index 00000000000..4f1c69b104f --- /dev/null +++ b/lib/private/AppFramework/Middleware/AdditionalScriptsMiddleware.php @@ -0,0 +1,40 @@ +<?php + +declare(strict_types=1); + +/** + * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +namespace OC\AppFramework\Middleware; + +use OC\Core\Controller\LoginController; +use OCP\AppFramework\Http\Events\BeforeLoginTemplateRenderedEvent; +use OCP\AppFramework\Http\Events\BeforeTemplateRenderedEvent; +use OCP\AppFramework\Http\Response; +use OCP\AppFramework\Http\StandaloneTemplateResponse; +use OCP\AppFramework\Http\TemplateResponse; +use OCP\AppFramework\Middleware; +use OCP\EventDispatcher\IEventDispatcher; +use OCP\IUserSession; + +class AdditionalScriptsMiddleware extends Middleware { + public function __construct( + private IUserSession $userSession, + private IEventDispatcher $dispatcher, + ) { + } + + public function afterController($controller, $methodName, Response $response): Response { + if ($response instanceof TemplateResponse) { + if ($controller instanceof LoginController) { + $this->dispatcher->dispatchTyped(new BeforeLoginTemplateRenderedEvent($response)); + } else { + $isLoggedIn = !($response instanceof StandaloneTemplateResponse) && $this->userSession->isLoggedIn(); + $this->dispatcher->dispatchTyped(new BeforeTemplateRenderedEvent($isLoggedIn, $response)); + } + } + + return $response; + } +} |