* * 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\InputInterface; use Symfony\Component\Console\Output\OutputInterface; /** * CreateUserCommand */ class ChangePasswordCommand extends ContainerAwareCommand { /** * @see Command */ protected function configure() { $this ->setName('fos:user:change-password') ->setDescription('Change the password of a user.') ->setDefinition(array( new InputArgument('username', InputArgument::REQUIRED, 'The username'), new InputArgument('password', InputArgument::REQUIRED, 'The password'), )) ->setHelp(<<fos:user:change-password command changes the password of a user: php app/console fos:user:change-password matthieu This interactive shell will first ask you for a password. You can alternatively specify the password as a second argument: php app/console fos:user:change-password matthieu mypassword EOT ); } /** * @see Command */ protected function execute(InputInterface $input, OutputInterface $output) { $username = $input->getArgument('username'); $password = $input->getArgument('password'); $manipulator = $this->getContainer()->get('fos_user.util.user_manipulator'); $manipulator->changePassword($username, $password); $output->writeln(sprintf('Changed password for user %s', $username)); } /** * @see Command */ protected function interact(InputInterface $input, OutputInterface $output) { if (!$input->getArgument('username')) { $username = $this->getHelper('dialog')->askAndValidate( $output, 'Please give the username:', function($username) { if (empty($username)) { throw new \Exception('Username can not be empty'); } return $username; } ); $input->setArgument('username', $username); } if (!$input->getArgument('password')) { $password = $this->getHelper('dialog')->askAndValidate( $output, 'Please enter the new password:', function($password) { if (empty($password)) { throw new \Exception('Password can not be empty'); } return $password; } ); $input->setArgument('password', $password); } } }