addArgument('email', InputArgument::REQUIRED, 'Login email') ->addArgument('password', InputArgument::OPTIONAL, 'Password (prompted if omitted)') ->addOption('admin', null, InputOption::VALUE_NONE, 'Grant ROLE_ADMIN'); } protected function execute(InputInterface $input, OutputInterface $output): int { $io = new SymfonyStyle($input, $output); $email = (string) $input->getArgument('email'); $password = $input->getArgument('password'); if (null === $password || '' === $password) { $password = $io->askHidden('Password'); } if (null === $password || '' === $password) { $io->error('A password is required.'); return Command::FAILURE; } if ($this->users->findOneBy(['email' => $email])) { $io->error(sprintf('A user with email "%s" already exists.', $email)); return Command::FAILURE; } $user = new User(); $user->setEmail($email); $user->setRoles($input->getOption('admin') ? ['ROLE_ADMIN'] : []); $user->setPassword($this->hasher->hashPassword($user, $password)); $violations = $this->validator->validate($user); if (\count($violations) > 0) { foreach ($violations as $violation) { $io->error((string) $violation->getMessage()); } return Command::FAILURE; } $this->em->persist($user); $this->em->flush(); $io->success(sprintf('Created %s%s', $email, $input->getOption('admin') ? ' (admin)' : '')); return Command::SUCCESS; } }