diff --git a/typo3/sysext/install/Classes/Command/SetupCommand.php b/typo3/sysext/install/Classes/Command/SetupCommand.php index aaec25928d3cd029ec2d2df06f615346403da0d4..5654d25aaf67a00f356338e083cb0ae32383faf3 100644 --- a/typo3/sysext/install/Classes/Command/SetupCommand.php +++ b/typo3/sysext/install/Classes/Command/SetupCommand.php @@ -22,6 +22,7 @@ use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Helper\QuestionHelper; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; +use Symfony\Component\Console\Output\ConsoleOutputInterface; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Question\ChoiceQuestion; use Symfony\Component\Console\Question\ConfirmationQuestion; @@ -242,9 +243,14 @@ EOT $username = $this->getAdminUserName($questionHelper, $input, $output); $password = $this->getAdminUserPassword($questionHelper, $input, $output); - $email = $this->getAdminEmailAddress($questionHelper, $input, $output); - $this->setupService->createUser($username, $password, $email); - $this->setupService->setInstallToolPassword($password); + if ($password !== null) { + $email = $this->getAdminEmailAddress($questionHelper, $input, $output); + $this->setupService->createUser($username, $password, $email); + $this->setupService->setInstallToolPassword($password); + } elseif ($output->isVerbose()) { + $errOutput = $output instanceof ConsoleOutputInterface ? $output->getErrorOutput() : $output; + $errOutput->writeln('<info>No admin password defined. Skipped user creation.</info>'); + } $siteName = $this->getProjectName($questionHelper, $input, $output); $this->setupService->setSiteName($siteName); @@ -544,7 +550,7 @@ EOT return $usernameValidator($usernameFromCli); } - protected function getAdminUserPassword(QuestionHelper $questionHelper, InputInterface $input, OutputInterface $output): string + protected function getAdminUserPassword(QuestionHelper $questionHelper, InputInterface $input, OutputInterface $output): ?string { $passwordValidator = function ($password) { $passwordValidationErrors = $this->setupDatabaseService->getBackendUserPasswordValidationErrors((string)$password); @@ -560,9 +566,7 @@ EOT }; $passwordFromCli = $this->getFallbackValueEnvOrOption($input, 'admin-user-password', 'TYPO3_SETUP_ADMIN_PASSWORD'); - if ($passwordFromCli === false) { - // Force this question if `TYPO3_SETUP_ADMIN_PASSWORD` is not set via cli. - // Thus, the user will always be prompted for a password even --no-interaction is set. + if ($passwordFromCli === false && $input->isInteractive()) { $currentlyInteractive = $input->isInteractive(); $input->setInteractive(true); $questionPassword = new Question('Admin user and installer password ? '); @@ -575,6 +579,10 @@ EOT return $password; } + if ($passwordFromCli === false) { + return null; + } + return $passwordValidator($passwordFromCli); }