* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace FOS\UserBundle\Command; use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; /** * @author Matthieu Bontemps * @author Thibault Duplessis * @author Luis Cordova */ class CreateUserCommand extends ContainerAwareCommand { /** * @see Command */ protected function configure() { $this ->setName('fos:user:create') ->setDescription('Create a user.') ->setDefinition(array( new InputArgument('username', InputArgument::REQUIRED, 'The username'), new InputArgument('email', InputArgument::REQUIRED, 'The email'), new InputArgument('password', InputArgument::REQUIRED, 'The password'), new InputOption('super-admin', null, InputOption::VALUE_NONE, 'Set the user as super admin'), new InputOption('inactive', null, InputOption::VALUE_NONE, 'Set the user as inactive'), )) ->setHelp(<<fos:user:create command creates a user: php app/console fos:user:create matthieu This interactive shell will ask you for an email and then a password. You can alternatively specify the email and password as the second and third arguments: php app/console fos:user:create matthieu matthieu@example.com mypassword You can create a super admin via the super-admin flag: php app/console fos:user:create admin --super-admin You can create an inactive user (will not be able to log in): php app/console fos:user:create thibault --inactive EOT ); } /** * @see Command */ protected function execute(InputInterface $input, OutputInterface $output) { $username = $input->getArgument('username'); $email = $input->getArgument('email'); $password = $input->getArgument('password'); $inactive = $input->getOption('inactive'); $superadmin = $input->getOption('super-admin'); $manipulator = $this->getContainer()->get('fos_user.util.user_manipulator'); $manipulator->create($username, $password, $email, !$inactive, $superadmin); $output->writeln(sprintf('Created user %s', $username)); } /** * @see Command */ protected function interact(InputInterface $input, OutputInterface $output) { if (!$input->getArgument('username')) { $username = $this->getHelper('dialog')->askAndValidate( $output, 'Please choose a username:', function($username) { if (empty($username)) { throw new \Exception('Username can not be empty'); } return $username; } ); $input->setArgument('username', $username); } if (!$input->getArgument('email')) { $email = $this->getHelper('dialog')->askAndValidate( $output, 'Please choose an email:', function($email) { if (empty($email)) { throw new \Exception('Email can not be empty'); } return $email; } ); $input->setArgument('email', $email); } if (!$input->getArgument('password')) { $password = $this->getHelper('dialog')->askAndValidate( $output, 'Please choose a password:', function($password) { if (empty($password)) { throw new \Exception('Password can not be empty'); } return $password; } ); $input->setArgument('password', $password); } } }