src/EventSubscriber/EsEventLogSubscriber.php line 35

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Entity\EventLog;
  4. use App\Service\EsCache;
  5. use Psr\Log\LoggerInterface;
  6. use App\Event\EsEventLogEvent;
  7. use Doctrine\ORM\EntityManagerInterface;
  8. use Symfony\Component\Security\Core\Security;
  9. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  10. class EsEventLogSubscriber implements EventSubscriberInterface
  11. {
  12.     public function __construct(
  13.         private EntityManagerInterface $_em,
  14.         private LoggerInterface $esEventLogger,
  15.         private EsCache $esCache
  16.     ) {}
  17.     public static function getSubscribedEvents(): array
  18.     {
  19.         return [
  20.             EsEventLogEvent::EVENT_LOGIN => 'addToEventLog',
  21.             EsEventLogEvent::EVENT_ONBOARDING => 'addToEventLog',
  22.             EsEventLogEvent::EVENT_FORGOT_PASSWORD => 'addToEventLog',
  23.             EsEventLogEvent::EVENT_USER_ACTIVE => 'addToEventLog',
  24.             EsEventLogEvent::EVENT_USER_INACTIVE => 'addToEventLog',
  25.             EsEventLogEvent::EVENT_CHANGE_PROFILE => 'addToEventLog',
  26.             EsEventLogEvent::EVENT_USER_CREATE => 'addToEventLog',
  27.             EsEventLogEvent::EVENT_USER_DELETE => 'addToEventLog'
  28.         ];
  29.     }
  30.     public function addToEventLog(EsEventLogEvent $event)
  31.     {
  32.         $user $event->getObject();
  33.         $container $event->getContainer();
  34.         if (!$container) {
  35.             $container $this->esCache->getContainer();
  36.         }
  37.         $isUserLogEnable $container->getConfiguration('isUserLogEnable');
  38.         if ($isUserLogEnable === false) {
  39.             return;
  40.         }
  41.         
  42.         if ($user) {
  43.             /*
  44.             $info = [$event->getType(), $user->getId(), $user->getEmail(), $user->getFirstName(), $user->getLastName()];
  45.             $this->esEventLogger->info(implode(',', $info));
  46.             */
  47.             $now = new \DateTime();
  48.             $now $now->format('Y-m-d H:i:s');
  49.             $query "INSERT INTO event_log(`event_type`, `container_id`, `user_id`, `created_at`, `updated_at`) VALUES ('".$event->getType()."', '".$container->getId()."', '".$user->getId()."', '".$now."', '".$now."')";
  50.             $statement $this->_em->getConnection()->prepare($query);
  51.             $statement->execute();
  52.         }
  53.     }
  54. }