src/MailBundle/EventListener/Staff/RequestNewPasswordListener.php line 41

Open in your IDE?
  1. <?php
  2. namespace App\MailBundle\EventListener\Staff;
  3. use App\Event\Staff\NewRequestResetPasswordEvent;
  4. use App\MailBundle\Entity\Mail;
  5. use App\MailBundle\EventListener\MailListener;
  6. use App\MailBundle\Exception\MissingTemplateException;
  7. use App\MailBundle\Service\MailSender;
  8. use App\Repository\StaffRepository;
  9. use App\Service\Entity\Staff\ResetPasswordManager;
  10. use App\Service\Tools;
  11. use JetBrains\PhpStorm\Pure;
  12. use Symfony\Component\Mailer\Exception\TransportExceptionInterface;
  13. use Symfony\Component\Security\Core\Role\RoleHierarchy;
  14. use Symfony\Component\Security\Core\Role\RoleHierarchyInterface;
  15. use Twig\Error\LoaderError;
  16. use Twig\Error\RuntimeError;
  17. use Twig\Error\SyntaxError;
  18. class RequestNewPasswordListener extends MailListener
  19. {
  20.     public function __construct(
  21.         MailSender                   $mailSender,
  22.         Tools                        $tools,
  23.         StaffRepository              $staffRepository,
  24.         private ResetPasswordManager $resetPasswordManager,
  25.     )
  26.     {
  27.         parent::__construct($mailSender$tools$staffRepository);
  28.     }
  29.     /**
  30.      * @throws SyntaxError
  31.      * @throws MissingTemplateException
  32.      * @throws TransportExceptionInterface
  33.      * @throws RuntimeError
  34.      * @throws LoaderError
  35.      */
  36.     public function onNewRequestResetPassword(NewRequestResetPasswordEvent $event)
  37.     {
  38.         $token $event->getToken();
  39.         $staff $event->getStaff();
  40.         $data $this->getBaseTemplateData();
  41.         $data['button_url'] = $this->resetPasswordManager->getResetPasswordUrl($token);
  42.         $data['button_label'] = 'Modifier le mot de passe';
  43.         $mail = new Mail(
  44.             Mail::RESET_PASSWORD_TEMPLATE,
  45.             [
  46.                 $staff->getEmail(),
  47.             ],
  48.             $data
  49.         );
  50.         $this->mailSender->sendEmail($mail);
  51.     }
  52. }