src/EventSubscriber/BaseUserSubscriber.php line 49

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use ApiPlatform\Core\EventListener\EventPriorities;
  4. use App\Entity\BaseUser;
  5. use App\Event\BaseUser\ResetPasswordEvent;
  6. use ExpoSDK\Expo;
  7. use ExpoSDK\ExpoMessage;
  8. use Symfony\Bridge\Twig\Mime\TemplatedEmail;
  9. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  10. use Symfony\Component\HttpFoundation\Request;
  11. use Symfony\Component\HttpKernel\Event\ViewEvent;
  12. use Symfony\Component\HttpKernel\KernelEvents;
  13. use Symfony\Component\Mime\Address;
  14. use Symfony\Component\Mailer\MailerInterface;
  15. final class BaseUserSubscriber implements EventSubscriberInterface
  16. {
  17.     private $mailer;
  18.     public function __construct(MailerInterface $mailer)
  19.     {
  20.         $this->mailer $mailer;
  21.     }
  22.     public static function getSubscribedEvents()
  23.     {
  24.         return [
  25.             ResetPasswordEvent::class => ['resetPassword'],
  26.             KernelEvents::VIEW => [
  27.                 ['delete'EventPriorities::POST_WRITE]
  28.             ],
  29.         ];
  30.     }
  31.     public function delete(ViewEvent $event): void
  32.     {
  33.         $baseUser $event->getControllerResult();
  34.         $method $event->getRequest()->getMethod();
  35.         if (!$baseUser instanceof BaseUser || Request::METHOD_DELETE !== $method) {
  36.             return;
  37.         }
  38.         $this->sendMailRemove($baseUser->getEmail());
  39.     }
  40.     public function resetPassword(ResetPasswordEvent $event): void
  41.     {
  42.         $user $event->getUser();
  43.         $resetToken $event->getResetToken();
  44.         $email = (new TemplatedEmail())
  45.             ->from(new Address('noreply@ores.com''ORES'))
  46.             ->to($user->getEmail())
  47.             ->subject('RĂ©initialisation du mot de passe')
  48.             ->htmlTemplate('mails/base_user/reset_password.html.twig')
  49.             ->context([
  50.                 'resetToken' => $resetToken,
  51.                 'user' => $user,
  52.             ])
  53.         ;
  54.         $this->mailer->send($email);
  55.     }
  56.     public function sendMailRemove($to)
  57.     {
  58.         /**
  59.          * MAIL:BaseUser
  60.          */
  61.         $email = (new TemplatedEmail())
  62.             ->from(new Address('noreply@ores.com''ORES'))
  63.             ->to($to)
  64.             ->subject('Suppression de votre offre - ORES BFC')
  65.             ->htmlTemplate('mails/base_user/remove_account.html.twig')
  66.             ->context([])
  67.         ;
  68.         $this->mailer->send($email);
  69.     }
  70. }