diff --git a/src/B8Framework/Store/Factory.php b/src/B8Framework/Store/Factory.php index f1f82581..29173e3b 100644 --- a/src/B8Framework/Store/Factory.php +++ b/src/B8Framework/Store/Factory.php @@ -53,7 +53,7 @@ class Factory { if (!isset($this->loadedStores[$store])) { $namespace = is_null($namespace) ? Config::getInstance()->get('b8.app.namespace') : $namespace; - $class = $namespace . '\\Store\\' . $store . 'Store'; + $class = $namespace . '\\Store\\' . $store . 'Store'; $obj = new $class(); $this->loadedStores[$store] = $obj; diff --git a/src/PHPCensor/Command/CreateAdminCommand.php b/src/PHPCensor/Command/CreateAdminCommand.php index 5ec5f932..fa2cd88b 100644 --- a/src/PHPCensor/Command/CreateAdminCommand.php +++ b/src/PHPCensor/Command/CreateAdminCommand.php @@ -3,9 +3,11 @@ namespace PHPCensor\Command; use PHPCensor\Service\UserService; +use b8\Store\Factory; use PHPCensor\Store\UserStore; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Helper\QuestionHelper; use Symfony\Component\Console\Question\Question; @@ -36,6 +38,11 @@ class CreateAdminCommand extends Command { $this ->setName('php-censor:create-admin') + + ->addOption('admin-name', null, InputOption::VALUE_OPTIONAL, 'Admin name') + ->addOption('admin-password', null, InputOption::VALUE_OPTIONAL, 'Admin password') + ->addOption('admin-email', null, InputOption::VALUE_OPTIONAL, 'Admin email') + ->setDescription('Create an admin user'); } @@ -46,36 +53,45 @@ class CreateAdminCommand extends Command */ protected function execute(InputInterface $input, OutputInterface $output) { - $userService = new UserService($this->userStore); - /** @var $helper QuestionHelper */ $helper = $this->getHelperSet()->get('question'); - $question = new Question('Admin email: '); - $question->setValidator(function ($answer) { + // Function to validate email address. + $mailValidator = function ($answer) { if (!filter_var($answer, FILTER_VALIDATE_EMAIL)) { throw new \InvalidArgumentException('Must be a valid email address.'); } return $answer; - }); - $adminEmail = $helper->ask($input, $output, $question); + }; - $question = new Question('Admin name: '); - $adminName = $helper->ask($input, $output, $question); + if ($adminEmail = $input->getOption('admin-email')) { + $adminEmail = $mailValidator($adminEmail); + } else { + $questionEmail = new Question('Admin email: '); + $adminEmail = $helper->ask($input, $output, $questionEmail); + } - $question = new Question('Admin password: '); - $question->setHidden(true); - $question->setHiddenFallback(false); + if (!$adminName = $input->getOption('admin-name')) { + $questionName = new Question('Admin name: '); + $adminName = $helper->ask($input, $output, $questionName); + } - $adminPass = $helper->ask($input, $output, $question); + if (!$adminPassword = $input->getOption('admin-password')) { + $questionPassword = new Question('Admin password: '); + $questionPassword->setHidden(true); + $questionPassword->setHiddenFallback(false); + $adminPassword = $helper->ask($input, $output, $questionPassword); + } try { - $userService->createUser($adminName, $adminEmail, 'internal', json_encode(['type' => 'internal']), $adminPass, true); + $userService = new UserService($this->userStore); + $userService->createUser($adminName, $adminEmail, 'internal', json_encode(['type' => 'internal']), $adminPassword, true); + $output->writeln('User account created!'); - } catch (\Exception $e) { - $output->writeln(sprintf('%s', 'PHP Censor failed to create your admin account.')); - $output->writeln(sprintf('%s', $e->getMessage())); + } catch (\Exception $ex) { + $output->writeln('PHP Censor failed to create your admin account!'); + $output->writeln('' . $ex->getMessage() . ''); } } } diff --git a/src/PHPCensor/Command/InstallCommand.php b/src/PHPCensor/Command/InstallCommand.php index 6545f23e..a98a10f0 100644 --- a/src/PHPCensor/Command/InstallCommand.php +++ b/src/PHPCensor/Command/InstallCommand.php @@ -202,16 +202,16 @@ class InstallCommand extends Command $adminName = $helper->ask($input, $output, $questionName); } - if (!$adminPass = $input->getOption('admin-password')) { - $questionPass = new Question('Admin password: '); - $questionPass->setHidden(true); - $questionPass->setHiddenFallback(false); - $adminPass = $helper->ask($input, $output, $questionPass); + if (!$adminPassword = $input->getOption('admin-password')) { + $questionPassword = new Question('Admin password: '); + $questionPassword->setHidden(true); + $questionPassword->setHiddenFallback(false); + $adminPassword = $helper->ask($input, $output, $questionPassword); } $admin['email'] = $adminEmail; $admin['name'] = $adminName; - $admin['password'] = $adminPass; + $admin['password'] = $adminPassword; return $admin; }