src\EventSubscriber\LoginSubscriber.php line 38

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Entity\User;
  4. use Doctrine\ORM\EntityManagerInterface;
  5. use Symfony\Component\DependencyInjection\ContainerInterface;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. use Symfony\Component\Security\Http\Event\InteractiveLoginEvent;
  8. use Symfony\Component\Security\Http\SecurityEvents;
  9. class LoginSubscriber implements EventSubscriberInterface
  10. {
  11.     /** @var ContainerInterface */
  12.     private $container;
  13.     /**@var EntityManagerInterface */
  14.     private $em;
  15.     /**
  16.      * @param EntityManagerInterface $em
  17.      */
  18.     public function __construct(EntityManagerInterface $emContainerInterface $container)
  19.     {
  20.         $this->em $em;
  21.         $this->container $container;
  22.     }
  23.     /**
  24.      * @return array
  25.      */
  26.     public static function getSubscribedEvents(): array
  27.     {
  28.         return [
  29.             SecurityEvents::INTERACTIVE_LOGIN => ['onSecurityInteractiveLogin'],
  30.         ];
  31.     }
  32.     public function onSecurityInteractiveLogin(InteractiveLoginEvent $event): void
  33.     {
  34.         $user $event->getAuthenticationToken()->getUser();
  35.         if ($user instanceof User) {
  36.             // Oturum açan kullanıcının firmasına ait alt firmalar varsa bunları da listeye ekle
  37.             $conn $this->em->getConnection();
  38.             $sql 'SELECT FIRMAKODU, FIRMAADI, UNVAN2 FROM CARI_KART
  39.                 WHERE (ANAFIRMAKODU = :CARIKODU) or (FIRMAKODU = :CARIKODU) 
  40.                 ORDER BY FIRMAKODU';
  41.             $stmt $conn->prepare($sql);
  42.             $data $stmt->executeQuery([':CARIKODU' => $user->getCari()->getFirmaKodu()])->fetchAllAssociative();
  43.             $firmalar = [];
  44.             $config $this->container->getParameter('foodsoft');
  45.             foreach ($data as $alt) {
  46.                 $firmalar[$alt['FIRMAKODU']] = $alt;
  47.                 if(array_key_exists('alt_firma_goster'$config) && !$config['alt_firma_goster'])
  48.                     break;
  49.             }
  50.             $_SESSION['_sf2_attributes']['AltFirmalar'] = $firmalar;
  51.             $user->getCari()->setAktifFirma(count($firmalar) > $data[0]['FIRMAKODU'] : '');
  52.         }
  53.     }
  54. }