<?php
namespace App\MailBundle\EventListener\Staff;
use App\Event\Staff\NewRequestResetPasswordEvent;
use App\MailBundle\Entity\Mail;
use App\MailBundle\EventListener\MailListener;
use App\MailBundle\Exception\MissingTemplateException;
use App\MailBundle\Service\MailSender;
use App\Repository\StaffRepository;
use App\Service\Entity\Staff\ResetPasswordManager;
use App\Service\Tools;
use JetBrains\PhpStorm\Pure;
use Symfony\Component\Mailer\Exception\TransportExceptionInterface;
use Symfony\Component\Security\Core\Role\RoleHierarchy;
use Symfony\Component\Security\Core\Role\RoleHierarchyInterface;
use Twig\Error\LoaderError;
use Twig\Error\RuntimeError;
use Twig\Error\SyntaxError;
class RequestNewPasswordListener extends MailListener
{
public function __construct(
MailSender $mailSender,
Tools $tools,
StaffRepository $staffRepository,
private ResetPasswordManager $resetPasswordManager,
)
{
parent::__construct($mailSender, $tools, $staffRepository);
}
/**
* @throws SyntaxError
* @throws MissingTemplateException
* @throws TransportExceptionInterface
* @throws RuntimeError
* @throws LoaderError
*/
public function onNewRequestResetPassword(NewRequestResetPasswordEvent $event)
{
$token = $event->getToken();
$staff = $event->getStaff();
$data = $this->getBaseTemplateData();
$data['button_url'] = $this->resetPasswordManager->getResetPasswordUrl($token);
$data['button_label'] = 'Modifier le mot de passe';
$mail = new Mail(
Mail::RESET_PASSWORD_TEMPLATE,
[
$staff->getEmail(),
],
$data
);
$this->mailSender->sendEmail($mail);
}
}