diff -r 806e57d67020 -r e54dfe4d0b2b vendor/bundles/FOS/UserBundle/Command/CreateUserCommand.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/bundles/FOS/UserBundle/Command/CreateUserCommand.php Fri Sep 30 11:24:53 2011 +0200 @@ -0,0 +1,134 @@ + + * + * 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; +use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken; +use FOS\UserBundle\Model\User; + +/** + * @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); + } + } +}