src/Czech/EventListener/StoreListener.php line 27

Open in your IDE?
  1. <?php
  2. namespace Czech\EventListener;
  3. use App\Entity\Central\User\User;
  4. use App\Entity\Client\Store\Store;
  5. use App\Service\AppManager;
  6. use Symfony\Component\HttpFoundation\RedirectResponse;
  7. use Symfony\Component\HttpKernel\Event\RequestEvent;
  8. use Symfony\Component\Routing\RouterInterface;
  9. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  10. use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
  11. class StoreListener
  12. {
  13.     private TokenStorageInterface $tokenStorage;
  14.     private AppManager $appManager;
  15.     public function __construct(AppManager $appManagerTokenStorageInterface $tokenStorageRouterInterface $router)
  16.     {
  17.         $this->router $router;
  18.         $this->tokenStorage $tokenStorage;
  19.         $this->appManager $appManager;
  20.     }
  21.     public function redirect(RequestEvent $event)
  22.     {
  23.         $token $this->tokenStorage->getToken();
  24.         if (!$token instanceof UsernamePasswordToken) {
  25.             return;
  26.         };
  27.         $user $token->getUser();
  28.         if (!$user instanceof User) {
  29.             return;
  30.         };
  31.         $stores $this->appManager->getRepository(Store::class)->findAll();
  32.         $route 'store_create';
  33.         if (count($stores) === && $route != $event->getRequest()->get('_route')) {
  34.             $url $this->router->generate($route);
  35.             $response = new RedirectResponse($url);
  36.             $event->setResponse($response);
  37.         };
  38.     }
  39. }