<?php
namespace App\EventSubscriber;
use CoopTilleuls\ForgotPasswordBundle\Event\UpdatePasswordEvent;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
class ResetPasswordEventSubscriber implements EventSubscriberInterface
{
/**
* @var EntityManagerInterface
*/
private $em;
/**
* @var UserPasswordEncoderInterface
*/
private $passwordEncoder;
/**
* ResetPasswordEventSubscriber constructor.
* @param EntityManagerInterface $em
* @param UserPasswordEncoderInterface $passwordEncoder
*/
public function __construct(EntityManagerInterface $em, UserPasswordEncoderInterface $passwordEncoder)
{
$this->em = $em;
$this->passwordEncoder = $passwordEncoder;
}
public static function getSubscribedEvents()
{
return [
UpdatePasswordEvent::class => 'onUpdatePassword'
];
}
public function onUpdatePassword(UpdatePasswordEvent $event)
{
$passwordToken = $event->getPasswordToken();
$user = $passwordToken->getUser();
$user->setPassword(
$this->passwordEncoder->encodePassword(
$user,
$event->getPassword()
)
);
$this->em->persist($user);
$this->em->flush();
// return new JsonResponse(['message' => 'You password has been updated correctly!'], Response::HTTP_OK);
}
}