src/Client/EventListener/ContextListener.php line 25

Open in your IDE?
  1. <?php
  2. namespace Client\EventListener;
  3. use App\Entity\Central\Client\Client;
  4. use App\Entity\Central\User\User;
  5. use App\Entity\Client\User\UserData;
  6. use App\Service\AppManager;
  7. use Symfony\Component\HttpKernel\Event\RequestEvent;
  8. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  9. use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
  10. class ContextListener
  11. {
  12.     private $tokenStorage;
  13.     private $appManager;
  14.     public function __construct(AppManager $appManagerTokenStorageInterface $tokenStorage)
  15.     {
  16.         $this->tokenStorage $tokenStorage;
  17.         $this->appManager $appManager;
  18.     }
  19.     public function rebuildMetadata(RequestEvent $event)
  20.     {
  21.         $token $this->tokenStorage->getToken();
  22.         if (!$token instanceof UsernamePasswordToken){
  23.             return;
  24.         }
  25.         $user $token->getUser();
  26.         if (!$user instanceof User){
  27.             return;
  28.         } else {
  29.             $this->appManager->setUser($user);
  30.         }
  31.         $client $user->getClient();
  32.         if(!$client instanceof Client){
  33.             return;
  34.         }
  35.         $this->appManager->setClient($client);
  36.         $userData $this->appManager->getRepository(UserData::class)->findOneBy(['user' => $user]);
  37.         if ($userData instanceof UserData){
  38.             $store null;
  39.             foreach ($userData->getStores() as $userStore){
  40.                 $store $userStore;
  41.                 break;
  42.             }
  43.             $this->appManager->setStore($store);
  44.         }
  45.     }
  46. }