From cc6de88dee49eec1de42bb0b256e9ceb6d201797 Mon Sep 17 00:00:00 2001 From: Louis Chemineau Date: Thu, 27 Feb 2025 13:12:55 +0100 Subject: [PATCH] fix(login): Also check legacy annotation for ephemeral sessions Signed-off-by: Louis Chemineau --- .../AppFramework/DependencyInjection/DIContainer.php | 7 +------ .../Middleware/FlowV2EphemeralSessionsMiddleware.php | 6 ++++++ 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/lib/private/AppFramework/DependencyInjection/DIContainer.php b/lib/private/AppFramework/DependencyInjection/DIContainer.php index f35e0e605c0..10a001ad424 100644 --- a/lib/private/AppFramework/DependencyInjection/DIContainer.php +++ b/lib/private/AppFramework/DependencyInjection/DIContainer.php @@ -243,12 +243,7 @@ class DIContainer extends SimpleContainer implements IAppContainer { ) ); - $dispatcher->registerMiddleware( - new FlowV2EphemeralSessionsMiddleware( - $c->get(ISession::class), - $c->get(IUserSession::class), - ) - ); + $dispatcher->registerMiddleware($c->get(FlowV2EphemeralSessionsMiddleware::class)); $securityMiddleware = new SecurityMiddleware( $c->get(IRequest::class), diff --git a/lib/private/AppFramework/Middleware/FlowV2EphemeralSessionsMiddleware.php b/lib/private/AppFramework/Middleware/FlowV2EphemeralSessionsMiddleware.php index 63c76f5be88..66943644e30 100644 --- a/lib/private/AppFramework/Middleware/FlowV2EphemeralSessionsMiddleware.php +++ b/lib/private/AppFramework/Middleware/FlowV2EphemeralSessionsMiddleware.php @@ -7,6 +7,7 @@ declare(strict_types=1); */ namespace OC\AppFramework\Middleware; +use OC\AppFramework\Utility\ControllerMethodReflector; use OC\Core\Controller\ClientFlowLoginV2Controller; use OCP\AppFramework\Middleware; use OCP\ISession; @@ -19,6 +20,7 @@ class FlowV2EphemeralSessionsMiddleware extends Middleware { public function __construct( private ISession $session, private IUserSession $userSession, + private ControllerMethodReflector $reflector, ) { } @@ -39,6 +41,10 @@ class FlowV2EphemeralSessionsMiddleware extends Middleware { return; } + if ($this->reflector->hasAnnotation('PublicPage')) { + return; + } + $this->userSession->logout(); $this->session->close(); }