<?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 AfterPostStaffResetPasswordListener 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 NewPasswordUser(NewRequestResetPasswordEvent $event)
{
$token = $event->getToken();
$staff = $event->getStaff();
// On check si le staff est sans droit d'accès ou pas
if ($staff->getRole() === null) {
return;
}
$data = $this->getBaseTemplateData();
$data['button_url'] = $this->resetPasswordManager->getResetPasswordUrl($token);
$data['button_label'] = 'Initialiser le mot de passe';
$data['identifier'] = $staff->getEmail();
$mail = new Mail(
Mail::NEW_USER_PASSWORD,
[
$staff->getEmail(),
],
$data
);
$this->mailSender->sendEmail($mail);
}
}