src/Core/Application/EventSubscriber/ResetPassword/ResetPasswordTokenGeneratedSubscriber.php line 31

  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Core\Application\EventSubscriber\ResetPassword;
  4. use App\Core\Application\Event\ResetPassword\ResetPasswordTokenGeneratedEvent;
  5. use Symfony\Bridge\Twig\Mime\TemplatedEmail;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. use Symfony\Component\Mailer\MailerInterface;
  8. use Symfony\Contracts\Translation\TranslatorInterface;
  9. class ResetPasswordTokenGeneratedSubscriber implements EventSubscriberInterface
  10. {
  11.     private readonly MailerInterface $mailer;
  12.     private readonly TranslatorInterface $translator;
  13.     public function __construct(MailerInterface $mailerTranslatorInterface $translator)
  14.     {
  15.         $this->mailer $mailer;
  16.         $this->translator $translator;
  17.     }
  18.     public static function getSubscribedEvents(): array
  19.     {
  20.         return [
  21.             ResetPasswordTokenGeneratedEvent::class => 'sendResetPasswordEmail',
  22.         ];
  23.     }
  24.     public function sendResetPasswordEmail(ResetPasswordTokenGeneratedEvent $event): void
  25.     {
  26.         $email = (new TemplatedEmail())
  27.             ->from($_ENV['MAILER_SENDER'])
  28.             ->to($event->getRequesterEmail())
  29.             ->subject($this->translator->trans('ui.reset_password.email_content.title'))
  30.             ->htmlTemplate($event->getEmailTemplate())
  31.             ->context([
  32.                 'token' => $event->getToken(),
  33.                 'requester' => $event->getRequester()
  34.             ]);
  35.         $this->mailer->send($email);
  36.     }
  37. }