<?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); 
    } 
}