From c1cf194b0dea63af589dea855ffd3b0629fc8058 Mon Sep 17 00:00:00 2001 From: Daniel Siepmann Date: Thu, 25 Jan 2024 11:57:49 +0100 Subject: [PATCH] [BUGFIX] Properly initialize backend user for requests Default requests won't have a workspace id. That will lead to TYPO3 defaults -99 id. That in turn will lead to being in preview mode once a backend user is provided within context. We therefore cover the default and turn it into live workspace which could be the expected default. Also we add missing initialization for backend user. Resolves: #535 --- .../Classes/Middleware/BackendUserHandler.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Resources/Core/Functional/Extensions/json_response/Classes/Middleware/BackendUserHandler.php b/Resources/Core/Functional/Extensions/json_response/Classes/Middleware/BackendUserHandler.php index 1b002c1d..a50267b2 100644 --- a/Resources/Core/Functional/Extensions/json_response/Classes/Middleware/BackendUserHandler.php +++ b/Resources/Core/Functional/Extensions/json_response/Classes/Middleware/BackendUserHandler.php @@ -40,7 +40,7 @@ public function process(ServerRequestInterface $request, RequestHandlerInterface /** @var InternalRequestContext $internalRequestContext */ $internalRequestContext = $request->getAttribute('typo3.testing.context'); $backendUserId = $internalRequestContext->getBackendUserId(); - $workspaceId = $internalRequestContext->getWorkspaceId(); + $workspaceId = $internalRequestContext->getWorkspaceId() ?? 0; if ((int)$backendUserId === 0) { // Skip if $backendUserId is invalid, typically null or 0 @@ -55,10 +55,10 @@ public function process(ServerRequestInterface $request, RequestHandlerInterface // Init backend user if found in database $backendUser = GeneralUtility::makeInstance(FrontendBackendUserAuthentication::class); $backendUser->user = $row; - if ($workspaceId !== null) { - // Force backend user into given workspace, can be 0, too. - $backendUser->setTemporaryWorkspace($workspaceId); - } + $backendUser->uc = isset($row['uc']) ? unserialize($row['uc']) : []; + $backendUser->initializeUserSessionManager(); + $backendUser->fetchGroupData(); + $backendUser->setTemporaryWorkspace($workspaceId); $GLOBALS['BE_USER'] = $backendUser; $this->setBackendUserAspect(GeneralUtility::makeInstance(Context::class), $backendUser); }