src/EventSubscriber/Security/PassportUpdateSubscriber.php line 24

  1. <?php
  2. namespace App\EventSubscriber\Security;
  3. use App\Entity\Security\Token;
  4. use App\Event\Security\PassportUpdateEvent;
  5. use DateTime;
  6. use Doctrine\ORM\EntityManagerInterface;
  7. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  8. final readonly class PassportUpdateSubscriber implements EventSubscriberInterface
  9. {
  10.     public function __construct(
  11.         private EntityManagerInterface $entityManager,
  12.     ) {}
  13.     public static function getSubscribedEvents(): array
  14.     {
  15.         return [
  16.             PassportUpdateEvent::IDENTIFIER => 'process'
  17.         ];
  18.     }
  19.     public function process(PassportUpdateEvent $event): void
  20.     {
  21.         $passport $event->getPassport();
  22.         // Only verify main passport
  23.         if (!$passport->isMain()) {
  24.             return;
  25.         }
  26.         $token = (new Token())
  27.             ->setPassport($passport)
  28.             ->setCreatedAt(new DateTime());
  29.         $this->entityManager->persist($token);
  30.         $this->entityManager->flush();
  31.     }
  32. }