src/EventSubscriber/ActionSubscriber.php line 41
<?phpnamespace App\EventSubscriber;use Symfony\Component\EventDispatcher\EventSubscriberInterface;use Symfony\Component\HttpKernel\Event\ControllerEvent;use Symfony\Component\HttpKernel\Event\ResponseEvent;use Symfony\Component\HttpKernel\KernelEvents;use Symfony\Component\HttpFoundation\RequestStack;use App\Controller\BaseController;class ActionSubscriber implements EventSubscriberInterface{private $_requestStack;private $_controller;public function __construct(RequestStack $requestStack){$this->_requestStack = $requestStack;}public function onKernelController(ControllerEvent $event){$controller = $event->getController();/** $controller passed can be either a class or a Closure.* This is not usual in Symfony but it may happen.* If it is a class, it comes in array format*/if (!is_array($controller))return;if ($controller[0] instanceof BaseController){$this->_controller = $controller[0];$this->_controller->beforeAction();}}public function onKernelResponse(ResponseEvent $event){if ($this->_controller)$this->_controller->afterAction();// dodatkowa blokada Basic Auth dla panelu administracyjnegoif (isset($_ENV['ADMIN_BASIC_AUTH_ACTIVE']) && (int)$_ENV['ADMIN_BASIC_AUTH_ACTIVE'] &&isset($_ENV['ADMIN_BASIC_AUTH_USER']) && $_ENV['ADMIN_BASIC_AUTH_USER'] != '' &&isset($_ENV['ADMIN_BASIC_AUTH_PASSWORD']) && $_ENV['ADMIN_BASIC_AUTH_PASSWORD'] != ''){if (strpos($this->_requestStack->getMainRequest()->get('_route'), 'admin_') === 0){$request = $event->getRequest();$username = $request->server->get('PHP_AUTH_USER');$password = $request->server->get('PHP_AUTH_PW');if ($_ENV['ADMIN_BASIC_AUTH_USER'] != $username || $_ENV['ADMIN_BASIC_AUTH_PASSWORD'] != $password){$response = $event->getResponse();$response->setStatusCode(401);$response->headers->set('WWW-Authenticate', 'Basic realm="Restricted Area"');$response->setContent('Brak dostępu.');$event->setResponse($response);}}}}public static function getSubscribedEvents(){return array(KernelEvents::CONTROLLER => 'onKernelController',KernelEvents::RESPONSE => 'onKernelResponse');}}