src/Subscriber/UserSubscriber.php line 44

Open in your IDE?
  1. <?php
  2. declare(strict_types 1);
  3. namespace App\Subscriber;
  4. use App\Infra\Events\SessionMessageEvent;
  5. use App\Infra\Events\UserEvent;
  6. use App\Infra\Services\MailerService;
  7. use App\Security\EmailVerifier;
  8. use Symfony\Component\EventDispatcher\EventDispatcherInterface;
  9. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  10. class UserSubscriber implements EventSubscriberInterface
  11. {
  12.     public static function getSubscribedEvents()
  13.     {
  14.         return [
  15.             UserEvent::USER_REGISTER => 'userRegister',
  16.             UserEvent::USER_RETRIEVE_PASSWORD => 'userRetrievePassword',
  17.             UserEvent::USER_RETRIEVE_PASSWORD_VALIDATION => 'userRetrievePasswordValidation'
  18.         ];
  19.     }
  20.     public function __construct(
  21.          MailerService $mailerService,
  22.          EmailVerifier $emailVerifier,
  23.          EventDispatcherInterface $eventDispatcher
  24.     ) {}
  25.     public function userRegister(UserEvent $event)
  26.     {
  27.         $this->eventDispatcher->dispatch(
  28.             new SessionMessageEvent(
  29.                 'success',
  30.                 'Votre compte a bien été crée, merci de valider votre adresse mail pour vous connecter'),
  31.             SessionMessageEvent::SESSION_MESSAGE
  32.         );
  33.         $this->emailVerifier->sendEmailConfirmation($event->getUser());
  34.     }
  35.     public function userRetrievePassword(UserEvent $event)
  36.     {
  37.         $this->eventDispatcher->dispatch(
  38.             new SessionMessageEvent(
  39.                 'success',
  40.                 'Un email de réinitialisation a bien été envoyé'),
  41.             SessionMessageEvent::SESSION_MESSAGE
  42.         );
  43.         $this->mailerService->sendMail(
  44.             $_ENV['ADMIN_MAIL'],
  45.             $event->getUser()->getEmail(),
  46.             'Mot de passe oublié',
  47.             'password/retrieve_password_email.html.twig', ['user' => $event->getUser()]
  48.         );
  49.     }
  50.     public function userRetrievePasswordValidation()
  51.     {
  52.         $this->eventDispatcher->dispatch(
  53.             new SessionMessageEvent(
  54.                 'success',
  55.                 'Votre mot de passe est changé'),
  56.             SessionMessageEvent::SESSION_MESSAGE
  57.         );
  58.     }
  59. }