src/EventSubscriber/ClientCompanyCreateSubscriber.php line 31

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Domain\Middleware\ClientCompanyCreateInterface;
  4. use App\Services\Clients\ClientSystemState\ClientSystemStateService;
  5. use App\Services\Auth\TokenClientUserService;
  6. use App\Entity\Client;
  7. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  8. use Symfony\Component\HttpKernel\Event\FilterControllerEvent;
  9. class ClientCompanyCreateSubscriber implements EventSubscriberInterface
  10. {
  11.     /**
  12.      * @var TokenClientUserService
  13.      */
  14.     private $tokenService;
  15.     /**
  16.      * @var ClientSystemStateService
  17.      */
  18.     private $systemStateService;
  19.     public function __construct(
  20.         TokenClientUserService $tokenService,
  21.         ClientSystemStateService $systemStateService
  22.     ) {
  23.         $this->tokenService $tokenService;
  24.         $this->systemStateService $systemStateService;
  25.     }
  26.     public function onKernelController(FilterControllerEvent $event)
  27.     {
  28.         $controller $event->getController();
  29.         /*
  30.          * $controller passed can be either a class or a Closure.
  31.          * This is not usual in Symfony but it may happen.
  32.          * If it is a class, it comes in array format
  33.          */
  34.         if (!is_array($controller)) {
  35.             return;
  36.         }
  37.         $route $event->getRequest()->attributes->get('_route');
  38.         if ($controller[0] instanceof ClientCompanyCreateInterface && $route == 'client_create_company') {
  39.             /** @var Client $currentClient */
  40.             $currentClient $this->tokenService->getCurrentClient();
  41.             $this->systemStateService->allowUseSystem($currentClient);
  42.         }
  43.     }
  44.     public static function getSubscribedEvents()
  45.     {
  46.         return [
  47.             'kernel.controller' => 'onKernelController',
  48.         ];
  49.     }
  50. }