src/EventSubscriber/UserSubscriber.php line 48

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Entity\User;
  4. use App\Service\ReCaptchaService;
  5. use Doctrine\ORM\EntityManagerInterface;
  6. use Karser\Recaptcha3Bundle\Validator\Constraints\Recaptcha3;
  7. use ReCaptcha\ReCaptcha;
  8. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  9. use Symfony\Component\Security\Core\Security;
  10. use Symfony\Component\Security\Http\Event\InteractiveLoginEvent;
  11. class UserSubscriber implements EventSubscriberInterface
  12. {
  13.     /**
  14.      * @var EntityManagerInterface
  15.      */
  16.     private $em;
  17.     /**
  18.      * @var Security
  19.      */
  20.     private $security;
  21.     /**
  22.      * @var ReCaptchaService
  23.      */
  24.     private $reCaptcha;
  25.     public function __construct(EntityManagerInterface $em,
  26.                                 Security $security,
  27.                                 ReCaptchaService $reCaptcha)
  28.     {
  29.         $this->em $em;
  30.         $this->security $security;
  31.         $this->reCaptcha $reCaptcha;
  32.     }
  33.     public static function getSubscribedEvents(): array
  34.     {
  35.         return [
  36.             InteractiveLoginEvent::class => 'onLogin',
  37.         ];
  38.     }
  39.     public function onLogin(InteractiveLoginEvent $event)
  40.     {
  41.         /** @var User $user */
  42.         $user $this->security->getUser();
  43.         if ($user) {
  44.             $user->setLastLogin(new \DateTime('now'));
  45.             $this->em->flush();
  46.         }
  47.         
  48.         /*
  49.         $reCaptchaResponse = $event->getRequest()->get('g-recaptcha-response');
  50.         $captchaRequest = $this->reCaptcha->getReCaptcha()->verify($reCaptchaResponse);
  51.         if ($captchaRequest->isSuccess()) {
  52.             if ($user) {
  53.                 $user->setLastLogin(new \DateTime('now'));
  54.                 $this->em->flush();
  55.             }
  56.         } else {
  57.             $event->getRequest()->getSession()->getFlashBag()->add('warning', 'Your login session has expired. Please enter your credentials and submit again.');
  58.             $event->getAuthenticationToken()->setUser(new User());
  59.         }
  60.         */
  61.     }
  62. }