src/EventSubscriber/ResetPasswordEventSubscriber.php line 41

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use CoopTilleuls\ForgotPasswordBundle\Event\UpdatePasswordEvent;
  4. use Doctrine\ORM\EntityManagerInterface;
  5. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  6. use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
  7. class ResetPasswordEventSubscriber implements EventSubscriberInterface
  8. {
  9.     /**
  10.      * @var EntityManagerInterface
  11.      */
  12.     private $em;
  13.     /**
  14.      * @var UserPasswordEncoderInterface
  15.      */
  16.     private $passwordEncoder;
  17.     /**
  18.      * ResetPasswordEventSubscriber constructor.
  19.      * @param EntityManagerInterface $em
  20.      * @param UserPasswordEncoderInterface $passwordEncoder
  21.      */
  22.     public function __construct(EntityManagerInterface $emUserPasswordEncoderInterface $passwordEncoder)
  23.     {
  24.         $this->em $em;
  25.         $this->passwordEncoder $passwordEncoder;
  26.     }
  27.     public static function getSubscribedEvents()
  28.     {
  29.         return [
  30.             UpdatePasswordEvent::class => 'onUpdatePassword'
  31.         ];
  32.     }
  33.     public function onUpdatePassword(UpdatePasswordEvent $event)
  34.     {
  35.         $passwordToken $event->getPasswordToken();
  36.         $user $passwordToken->getUser();
  37.         $user->setPassword(
  38.             $this->passwordEncoder->encodePassword(
  39.                 $user,
  40.                 $event->getPassword()
  41.             )
  42.         );
  43.         $this->em->persist($user);
  44.         $this->em->flush();
  45.         // return new JsonResponse(['message' => 'You password has been updated correctly!'], Response::HTTP_OK);
  46.     }
  47. }