setAuthorizedAndRedirect('maintenance', $request); } /** * Initialize session and redirect to "settings" */ public function settingsAction(ServerRequestInterface $request): ResponseInterface { return $this->setAuthorizedAndRedirect('settings', $request); } /** * Initialize session and redirect to "upgrade" */ public function upgradeAction(ServerRequestInterface $request): ResponseInterface { return $this->setAuthorizedAndRedirect('upgrade', $request); } /** * Initialize session and redirect to "environment" */ public function environmentAction(ServerRequestInterface $request): ResponseInterface { return $this->setAuthorizedAndRedirect('environment', $request); } /** * Starts / updates the session and redirects to the Install Tool * with given action. */ protected function setAuthorizedAndRedirect(string $controller, ServerRequestInterface $request): ResponseInterface { $redirectParameters = [ 'install' => [ 'controller' => $controller, 'context' => 'backend', ], ]; $backendUser = $this->getBackendUser(); $userTS = $backendUser->getTSConfig(); $themeDisabled = $userTS['setup.']['fields.']['theme.']['disabled'] ?? '0'; $theme = $GLOBALS['BE_USER']->uc['theme'] ?? $userTS['setup.']['fields.']['theme'] ?? 'auto'; if ($themeDisabled === '1') { $theme = $userTS['setup.']['fields.']['theme'] ?? 'modern'; } if ($theme !== 'modern') { $redirectParameters['install']['theme'] = $theme; } $colorSchemeDisabled = $userTS['setup.']['fields.']['colorScheme.']['disabled'] ?? '0'; $colorScheme = $GLOBALS['BE_USER']->uc['colorScheme'] ?? $userTS['setup.']['fields.']['colorScheme'] ?? 'auto'; if ($colorSchemeDisabled === '1') { $colorScheme = $userTS['setup.']['fields.']['colorScheme'] ?? 'light'; } if ($colorScheme !== 'auto') { $redirectParameters['install']['colorScheme'] = $colorScheme; } $userSession = $this->getBackendUser()->getSession(); $this->sessionService->installSessionHandler($request); $this->sessionService->startSession(); $this->sessionService->setAuthorizedBackendSession($userSession, $this->sessionBackend); $normalizedParams = $request->getAttribute('normalizedParams'); $redirectLocation = $normalizedParams->getSiteUrl() . '?__typo3_install&' . http_build_query($redirectParameters, '', '&', PHP_QUERY_RFC3986); return new RedirectResponse($redirectLocation, 303); } protected function getBackendUser(): BackendUserAuthentication { return $GLOBALS['BE_USER']; } }