src/EventSubscriber/CompanyDetectSubscriber.php line 93

Open in your IDE?
  1. <?php
  2. namespace Harmonizely\EventSubscriber;
  3. use Harmonizely\Service\Core\CompanySelector;
  4. use Harmonizely\Service\Core\Contract\ICompanySelector;
  5. use Psr\Log\LoggerInterface;
  6. use Symfony\Component\Console\ConsoleEvents;
  7. use Symfony\Component\Console\Event\ConsoleCommandEvent;
  8. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  9. use Symfony\Component\HttpFoundation\RedirectResponse;
  10. use Symfony\Component\HttpKernel\Event\RequestEvent;
  11. use Symfony\Component\HttpKernel\KernelEvents;
  12. final class CompanyDetectSubscriber implements EventSubscriberInterface
  13. {
  14.     private const REGISTRATION_URI '/register/';
  15.     /**
  16.      * @var ICompanySelector
  17.      */
  18.     private ICompanySelector $companySelector;
  19.     /**
  20.      * @var LoggerInterface
  21.      */
  22.     private LoggerInterface $logger;
  23.     /**
  24.      * @param ICompanySelector $companySelector
  25.      * @param LoggerInterface $logger
  26.      */
  27.     public function __construct(
  28.         ICompanySelector $companySelector,
  29.         LoggerInterface $logger
  30.     )
  31.     {
  32.         $this->companySelector $companySelector;
  33.         $this->logger $logger;
  34.     }
  35.     /**
  36.      * @return array[]
  37.      */
  38.     public static function getSubscribedEvents(): array
  39.     {
  40.         return [
  41.             KernelEvents::REQUEST => ['companyDetectRequest'9999],
  42.             ConsoleEvents::COMMAND => ['companyDetectCommand'9999],
  43.         ];
  44.     }
  45.     /**
  46.      * @param RequestEvent $event
  47.      */
  48.     public function companyDetectRequest(RequestEvent $event): void
  49.     {
  50.         $company $event->getRequest()->server->get('COMPANY');
  51. //        $this->logger->critical('COMPANY FROM SERVER: ' . $company);
  52.         //TODO спросить у Димы!
  53.         if ($event->isMasterRequest() === false) {
  54.             return;
  55.         }
  56. //        $this->logger->critical('SET COMPANY FROM SERVER!');
  57.         if ($company) {
  58.             if ($event->getRequest()->getPathInfo() === self::REGISTRATION_URI && $company !== CompanySelector::DEFAULT_COMPANY) {
  59.                 //TODO hotfix for redirect from registration page for team blue
  60.                 $event->setResponse(new RedirectResponse('https://secure.simplymeet.me/register/'));
  61.                 return;
  62.             }
  63.             $this->companySelector->setCompany($companyfalsefalse);
  64.             if ($event->getRequest()->hasSession()) {
  65.                 $sessionName 'sid_' $company;
  66.                 if ($sessionName !== $event->getRequest()->getSession()->getName()) {
  67.                     $event->getRequest()->getSession()->setName($sessionName);
  68.                 }
  69.             }
  70.         } else {
  71.             $this->companySelector->companyRequired();
  72.         }
  73.     }
  74.     /**
  75.      * @param ConsoleCommandEvent $event
  76.      */
  77.     public function companyDetectCommand(ConsoleCommandEvent $event): void
  78.     {
  79.         if ($event->getInput()->hasOption('company') && $event->getInput()->getOption('company')) {
  80.             $this->companySelector->setCompany($event->getInput()->getOption('company'));
  81.         }
  82.     }
  83. }