src/Command/PcgcChangepasswordUserCommand.php line 11

Open in your IDE?
  1. <?php
  2. namespace App\Command;
  3. use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
  4. use Symfony\Component\Console\Input\InputInterface;
  5. use Symfony\Component\Console\Output\OutputInterface;
  6. use Symfony\Component\Console\Question\Question;
  7. use Symfony\Component\Console\Style\SymfonyStyle;
  8. class PcgcChangepasswordUserCommand extends ContainerAwareCommand
  9. {
  10.     protected static $defaultName 'pcgc:changepassword:user';
  11.     protected function configure()
  12.     {
  13.         $this->setDescription('Change a CMS user password')
  14.             ->setHelp('This command allows you to change a users password...duh!')
  15.         ;
  16.     }
  17.     protected function execute(InputInterface $inputOutputInterface $output): int
  18.     {
  19.         $io = new SymfonyStyle($input$output);
  20.         $io->title('FlightCMS Change Password Command');
  21.         $em $this->getContainer()->get('doctrine')->getManager();
  22.         $helper $this->getHelper('question');
  23.         //build & capture email address question
  24.         $questionEmail = new Question('Please enter the users email address: ');
  25.         $questionEmail->setValidator(function ($value) {
  26.             if ('' == trim($value)) {
  27.                 throw new \Exception('The email must not be blank');
  28.             }
  29.             return $value;
  30.         });
  31.         $questionEmail->setMaxAttempts(3);
  32.         $email $helper->ask($input$output$questionEmail);
  33.         //check if email exists
  34.         $output->writeln(sprintf('Checking %s.....'$email));
  35.         $user $em->getRepository('App:User')->findOneByEmail($email);
  36.         if (!$user) {
  37.             $io->error('The email does not exist');
  38.             return 0;
  39.         }
  40.         $output->writeln(sprintf('Found user : %s'$user->getUsername()));
  41.         //build & capture password question
  42.         $questionPassword = new Question('Enter new password: ');
  43.         $questionPassword->setValidator(function ($value) {
  44.             if ('' == trim($value)) {
  45.                 throw new \Exception('The password must not be blank');
  46.             }
  47.             return $value;
  48.         });
  49.         $questionPassword->setMaxAttempts(3);
  50.         $password $helper->ask($input$output$questionPassword);
  51.         //Change password in Database
  52.         $password_encoder $this->getContainer()->get('security.password_encoder');
  53.         $encryedPassword $password_encoder->encodePassword($user$password);
  54.         $user->setEmailresetkey(null);
  55.         $user->setPassword($encryedPassword);
  56.         $em->persist($user);
  57.         $em->flush();
  58.         $io->success('Password for %s has been changed'$email);
  59.         return 0;
  60.     }
  61. }