src/EventSubscriber/User/SwitchUserSubscriber.php line 26

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber\User;
  3. use App\Entity\User\User;
  4. use App\Manager\Boutique\PanierManager;
  5. use Doctrine\ORM\EntityManagerInterface;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  8. use Symfony\Component\Security\Http\Event\SwitchUserEvent;
  9. use Symfony\Component\Security\Http\SecurityEvents;
  10. class SwitchUserSubscriber implements EventSubscriberInterface
  11. {
  12.     protected $em;
  13.     protected $session;
  14.     protected $panierManager;
  15.     public function __construct(EntityManagerInterface $entityManagerSessionInterface $sessionPanierManager $panierManager)
  16.     {
  17.         $this->em               $entityManager;
  18.         $this->session          $session;
  19.         $this->panierManager    $panierManager;
  20.     }
  21.     public function onSwitchUser(SwitchUserEvent $event)
  22.     {
  23.         $token $event->getToken();
  24.         // On reload l'objet user complet pour avoir les groupes
  25.         $user $this->em->getRepository(User::class)->findOneById($token->getUser()->getId());
  26.         // On MAJ le client du panier si on en a un et le pays de livraison
  27.         $panierId $this->session->get('panierId');
  28.         if (!is_null($panierId)) {
  29.             $this->panierManager->modifierUser($user);
  30.             if (!is_null($user->getPays())) {
  31.                 $this->panierManager->modifierLivraisonPays($user$user->getPays());
  32.             }
  33.         }
  34.     }
  35.     public static function getSubscribedEvents()
  36.     {
  37.         return [
  38.             // constant for security.switch_user
  39.             SecurityEvents::SWITCH_USER => 'onSwitchUser',
  40.         ];
  41.     }
  42. }