src/Hitso/Bundle/CommonBundle/EventListener/UserSubscriber.php line 45

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace Hitso\Bundle\CommonBundle\EventListener;
  4. use FOS\UserBundle\Util\TokenGeneratorInterface;
  5. use Hitso\Bundle\CommonBundle\Event\UserResetPasswordEvent;
  6. use Hitso\Bundle\CommonBundle\Helper\Mailer\MailerHelperInterface;
  7. use Hitso\Bundle\CommonBundle\Helper\Router\RouterHelperInterface;
  8. use Symfony\Component\DependencyInjection\ContainerAwareTrait;
  9. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  10. class UserSubscriber implements EventSubscriberInterface
  11. {
  12.     use ContainerAwareTrait;
  13.     /**
  14.      * @var MailerHelperInterface
  15.      */
  16.     private $mailerHelper;
  17.     /**
  18.      * @var TokenGeneratorInterface
  19.      */
  20.     private $tokenGenerator;
  21.     /**
  22.      * @var RouterHelperInterface
  23.      */
  24.     private $routerHelper;
  25.     public function __construct(
  26.         MailerHelperInterface $mailerHelper,
  27.         TokenGeneratorInterface $tokenGenerator,
  28.         RouterHelperInterface $routerHelper
  29.     ) {
  30.         $this->mailerHelper   $mailerHelper;
  31.         $this->tokenGenerator $tokenGenerator;
  32.         $this->routerHelper   $routerHelper;
  33.     }
  34.     public static function getSubscribedEvents()
  35.     {
  36.         return [
  37.             UserResetPasswordEvent::EVENT_NAME => 'onUserPasswordReset',
  38.         ];
  39.     }
  40.     public function onUserPasswordReset(UserResetPasswordEvent $event)
  41.     {
  42.         $user $event->getUser();
  43.         if (null === $user->getConfirmationToken()) {
  44.             $user->setConfirmationToken($this->tokenGenerator->generateToken());
  45.         }
  46.         $user->setPasswordRequestedAt(new \DateTime());
  47.         $this->mailerHelper->sendEmail([
  48.             'recipient'  => $user->getEmail(),
  49.             'template'   => 'HitsoCommonBundle:Mail:layout.html.twig',
  50.             'block'      => 'mail_reset_password',
  51.             'parameters' => [
  52.                 'user' => $user,
  53.                 'link' => $this->routerHelper->generateUrl('password_change', ['token' => $user->getConfirmationToken()]),
  54.             ],
  55.         ]);
  56.     }
  57. }