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 $em, UserPasswordEncoderInterface $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. }