src/EventSubscriber/ResettingPasswordSubscriber.php line 39

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Service\Notifier;
  4. use App\UserBundle\Events\ResettingPasswordEvent;
  5. use Doctrine\ORM\EntityManagerInterface;
  6. use Symfony\Component\EventDispatcher\EventDispatcherInterface;
  7. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  8. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  9. use Symfony\Component\Routing\RouterInterface;
  10. /**
  11.  * Class ResettingPasswordSubscriber
  12.  *
  13.  * Le UserBundle Ă©met un event "ResettingPasswordEvent" permettant d'effectuer des actions lors de la demande de rĂ©initialisation du mot de passe
  14.  * comme par exemple : envoyer un email avec un lien de reset au user concernĂ©
  15.  *
  16.  * @package App\EventSubscriber
  17.  */
  18. class ResettingPasswordSubscriber implements EventSubscriberInterface
  19. {
  20.     private Notifier $notifier;
  21.     private RouterInterface $router;
  22.     public function __construct(Notifier $notifierRouterInterface $router)
  23.     {
  24.         $this->notifier $notifier;
  25.         $this->router $router;
  26.     }
  27.     public static function getSubscribedEvents(): array
  28.     {
  29.         return [
  30.             ResettingPasswordEvent::class => 'OnPasswordReset',
  31.         ];
  32.     }
  33.     public function OnPasswordReset(ResettingPasswordEvent $event)
  34.     {
  35.         $user $event->getUser();
  36.         $confirmation_url $this->router->generate('resetting_action', ['token' => $user->getConfirmationToken()], UrlGeneratorInterface::ABSOLUTE_URL);
  37.         $this->notifier->createMail($user'resetting_password', [
  38.             'username' => $user->getNiceName(),
  39.             'confirmation_url' => $confirmation_url
  40.         ]);
  41.     }
  42. }