src/MailBundle/EventListener/Staff/AfterPostStaffResetPasswordListener.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 AfterPostStaffResetPasswordListener extends MailListener
  19. {
  20.     
  21.     public function __construct(
  22.         MailSender                   $mailSender,
  23.         Tools                        $tools,
  24.         StaffRepository              $staffRepository,
  25.         private ResetPasswordManager $resetPasswordManager,
  26.     )
  27.     {
  28.         parent::__construct($mailSender$tools$staffRepository);
  29.     }
  30.     
  31.     /**
  32.      * @throws SyntaxError
  33.      * @throws MissingTemplateException
  34.      * @throws TransportExceptionInterface
  35.      * @throws RuntimeError
  36.      * @throws LoaderError
  37.      */
  38.     public function NewPasswordUser(NewRequestResetPasswordEvent $event)
  39.     {
  40.         $token $event->getToken();
  41.         $staff $event->getStaff();
  42.         // On check si le staff est sans droit d'accès ou pas
  43.         if ($staff->getRole() === null) {
  44.             return;
  45.         }
  46.         
  47.         $data $this->getBaseTemplateData();
  48.         $data['button_url'] = $this->resetPasswordManager->getResetPasswordUrl($token);
  49.         $data['button_label'] = 'Initialiser le mot de passe';
  50.         $data['identifier'] = $staff->getEmail();
  51.         
  52.         $mail = new Mail(
  53.             Mail::NEW_USER_PASSWORD,
  54.             [
  55.                 $staff->getEmail(),
  56.             ],
  57.             $data
  58.         );
  59.         
  60.         $this->mailSender->sendEmail($mail);
  61.         
  62.     }
  63.     
  64. }