<?php
namespace App\EventSubscriber;
// ...
use CoopTilleuls\ForgotPasswordBundle\Event\CreateTokenEvent;
use Symfony\Bridge\Twig\Mime\TemplatedEmail;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Component\Mime\Email;
use Twig\Environment;
use Symfony\Component\Mime\Address;
final class ForgotPasswordEventSubscriber implements EventSubscriberInterface
{
public function __construct(private readonly MailerInterface $mailer, private readonly Environment $twig, private ParameterBagInterface $params)
{
}
public static function getSubscribedEvents(): array
{
return [
CreateTokenEvent::class => 'onCreateToken',
];
}
public function onCreateToken(CreateTokenEvent $event): void
{
$passwordToken = $event->getPasswordToken();
$user = $passwordToken->getUser();
$email = (new TemplatedEmail())
->from(new Address($this->params->get('mailer_from'), $this->params->get('mailer_from_name')))
->to(new Address($user->getEmail(), $user->getFirstname()))
->bcc(new Address('contact@novalia.online', 'contact_test'))
->subject('Demande de réinitialisation de mot de passe Novallia Compliance')
->htmlTemplate('user/reset-password-email.html.twig')
->context([
'user' => $user,
'url' => $this->params->get('frontend_url') .'/?#/change-password/' . $passwordToken->getToken()
]);
$this->mailer->send($email);
}
}