Skip to content
Snippets Groups Projects
Commit 4390d4b5 authored by Benjamin Franzke's avatar Benjamin Franzke
Browse files

[BUGFIX] Boot container for E-Mail check in install tool

Since #90266 install tool E-Mails are templated and
custom logos, viewhelpers or services may be loaded.

A custom backend login logo caused the usage of the f:image
ViewHelper which triggered the FileIndexRepository which
wasn't configured for the install tool context.

Therefore we need to provide a fully booted
symfony container in order for dependency injection
to work for all core and third party extensions,
especially when using a customized SystemEmail template.

Resolves: #91067
Releases: master
Change-Id: Ia2cb06dfecd7bb9bd757b37849c1345e538dfffc
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/64205


Tested-by: default avatarTYPO3com <noreply@typo3.com>
Tested-by: default avatarMartin Hotmann <martinhotmann@gmail.com>
Tested-by: default avatarGeorg Ringer <georg.ringer@gmail.com>
Tested-by: default avatarBenjamin Franzke <bfr@qbus.de>
Reviewed-by: default avatarMartin Hotmann <martinhotmann@gmail.com>
Reviewed-by: default avatarGeorg Ringer <georg.ringer@gmail.com>
Reviewed-by: default avatarBenjamin Franzke <bfr@qbus.de>
parent 9561422c
Branches
Tags
No related merge requests found
...@@ -38,6 +38,7 @@ use TYPO3\CMS\Core\Utility\MathUtility; ...@@ -38,6 +38,7 @@ use TYPO3\CMS\Core\Utility\MathUtility;
use TYPO3\CMS\Core\Utility\StringUtility; use TYPO3\CMS\Core\Utility\StringUtility;
use TYPO3\CMS\Install\FolderStructure\DefaultFactory; use TYPO3\CMS\Install\FolderStructure\DefaultFactory;
use TYPO3\CMS\Install\FolderStructure\DefaultPermissionsCheck; use TYPO3\CMS\Install\FolderStructure\DefaultPermissionsCheck;
use TYPO3\CMS\Install\Service\LateBootService;
use TYPO3\CMS\Install\SystemEnvironment\Check; use TYPO3\CMS\Install\SystemEnvironment\Check;
use TYPO3\CMS\Install\SystemEnvironment\DatabaseCheck; use TYPO3\CMS\Install\SystemEnvironment\DatabaseCheck;
use TYPO3\CMS\Install\SystemEnvironment\SetupCheck; use TYPO3\CMS\Install\SystemEnvironment\SetupCheck;
...@@ -48,6 +49,17 @@ use TYPO3\CMS\Install\SystemEnvironment\SetupCheck; ...@@ -48,6 +49,17 @@ use TYPO3\CMS\Install\SystemEnvironment\SetupCheck;
*/ */
class EnvironmentController extends AbstractController class EnvironmentController extends AbstractController
{ {
/**
* @var LateBootService
*/
private $lateBootService;
public function __construct(
LateBootService $lateBootService
) {
$this->lateBootService = $lateBootService;
}
/** /**
* Main "show the cards" view * Main "show the cards" view
* *
...@@ -239,6 +251,8 @@ class EnvironmentController extends AbstractController ...@@ -239,6 +251,8 @@ class EnvironmentController extends AbstractController
*/ */
public function mailTestAction(ServerRequestInterface $request): ResponseInterface public function mailTestAction(ServerRequestInterface $request): ResponseInterface
{ {
$container = $this->lateBootService->getContainer();
$backup = $this->lateBootService->makeCurrent($container);
$messages = new FlashMessageQueue('install'); $messages = new FlashMessageQueue('install');
$recipient = $request->getParsedBody()['install']['email']; $recipient = $request->getParsedBody()['install']['email'];
if (empty($recipient) || !GeneralUtility::validEmail($recipient)) { if (empty($recipient) || !GeneralUtility::validEmail($recipient)) {
...@@ -283,6 +297,7 @@ class EnvironmentController extends AbstractController ...@@ -283,6 +297,7 @@ class EnvironmentController extends AbstractController
)); ));
} }
} }
$this->lateBootService->makeCurrent(null, $backup);
return new JsonResponse([ return new JsonResponse([
'success' => true, 'success' => true,
'status' => $messages, 'status' => $messages,
......
...@@ -47,6 +47,7 @@ class ServiceProvider extends AbstractServiceProvider ...@@ -47,6 +47,7 @@ class ServiceProvider extends AbstractServiceProvider
Service\ClearCacheService::class => [ static::class, 'getClearCacheService' ], Service\ClearCacheService::class => [ static::class, 'getClearCacheService' ],
Service\LoadTcaService::class => [ static::class, 'getLoadTcaService' ], Service\LoadTcaService::class => [ static::class, 'getLoadTcaService' ],
Middleware\Maintenance::class => [ static::class, 'getMaintenanceMiddleware' ], Middleware\Maintenance::class => [ static::class, 'getMaintenanceMiddleware' ],
Controller\EnvironmentController::class => [ static::class, 'getEnvironmentController' ],
Controller\UpgradeController::class => [ static::class, 'getUpgradeController' ], Controller\UpgradeController::class => [ static::class, 'getUpgradeController' ],
Command\LanguagePackCommand::class => [ static::class, 'getLanguagePackCommand' ], Command\LanguagePackCommand::class => [ static::class, 'getLanguagePackCommand' ],
Command\UpgradeWizardRunCommand::class => [ static::class, 'getUpgradeWizardRunCommand' ], Command\UpgradeWizardRunCommand::class => [ static::class, 'getUpgradeWizardRunCommand' ],
...@@ -107,6 +108,13 @@ class ServiceProvider extends AbstractServiceProvider ...@@ -107,6 +108,13 @@ class ServiceProvider extends AbstractServiceProvider
); );
} }
public static function getEnvironmentController(ContainerInterface $container): Controller\EnvironmentController
{
return new Controller\EnvironmentController(
$container->get(Service\LateBootService::class)
);
}
public static function getUpgradeController(ContainerInterface $container): Controller\UpgradeController public static function getUpgradeController(ContainerInterface $container): Controller\UpgradeController
{ {
return new Controller\UpgradeController( return new Controller\UpgradeController(
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment