src/EventSubscriber/ForgotPasswordEventSubscriber.php line 34

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\DataFixtures\UserFixtures;
  4. use CoopTilleuls\ForgotPasswordBundle\Event\CreateTokenEvent;
  5. use CoopTilleuls\ForgotPasswordBundle\Event\UpdatePasswordEvent;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. use Symfony\Component\Mailer\MailerInterface;
  8. use Symfony\Component\Mime\Email;
  9. use Twig\Environment;
  10. final class ForgotPasswordEventSubscriber implements EventSubscriberInterface
  11. {
  12.     private $mailer;
  13.     private $twig;
  14.     private $userFixtures;
  15.     public function __construct(MailerInterface $mailerEnvironment $twigUserFixtures $userFixtures)
  16.     {
  17.         $this->mailer $mailer;
  18.         $this->twig $twig;
  19.         $this->userFixtures $userFixtures;
  20.     }
  21.     public static function getSubscribedEvents()
  22.     {
  23.         return [
  24.             CreateTokenEvent::class => 'onCreateToken',
  25.             UpdatePasswordEvent::class => 'onUpdatePassword',
  26.         ];
  27.     }
  28.     public function onCreateToken(CreateTokenEvent $event)
  29.     {
  30.         $passwordToken $event->getPasswordToken();
  31.         $user $passwordToken->getUser();
  32.         $message = (new Email())
  33.             ->from('flatshowmailer@gmail.com')
  34.             ->to($user->getEmail())
  35.             ->subject('Reset your password')
  36.             ->html($this->twig->render(
  37.                 'password-reset.html.twig',
  38.                 [
  39.                     'user' => $user,
  40.                     'token' => $passwordToken->getToken(),
  41.                 ]
  42.             ));
  43.         if (=== $this->mailer->send($message)) {
  44.             throw new \RuntimeException('Unable to send email');
  45.         }
  46.     }
  47.     public function onUpdatePassword(UpdatePasswordEvent $event)
  48.     {
  49.         $passwordToken $event->getPasswordToken();
  50.         $user $passwordToken->getUser();
  51. //        $user->setPlainPassword($event->getPassword());
  52.         $this->userFixtures->changePassword($user$event->getPassword());
  53.     }
  54. }