public function onKernelController(FilterControllerEvent $event) { if ($event->isMasterRequest()) { $route = $event->getRequest()->get('_route'); if ($this->isExcludedRoute($route)) { return; } if ($this->isAsset($_SERVER['REQUEST_URI'])) { return; } $is_logged = $this->securityContext->isGranted('IS_AUTHENTICATED_FULLY'); if (!$is_logged && $route != 'fos_user_security_login') { $redirectUrl = $this->router->generate('fos_user_security_login'); $event->setController(function () use($redirectUrl) { return new RedirectResponse($redirectUrl); }); } if (!$is_logged && $route == 'fos_user_security_login') { return; } if (!$this->rolesProvider->hasRouteAccess($route)) { throw new AccessDeniedException(); } } }
/** * @param FilterControllerEvent $event */ public function onKernelController(FilterControllerEvent $event) { if (!$event->isMasterRequest()) { return; } $request = $event->getRequest(); $this->logger->info('Attributes are logged.', ['metadata' => ['attributes' => $request->attributes->all()], 'description' => 'attributes']); }
/** * @param FilterControllerEvent $event */ public function onKernelController(FilterControllerEvent $event) { if (!$event->isMasterRequest()) { return; } $route = $this->getRoute($event->getRequest()); $this->logger->info('LOGIC START', array($route)); }
public function registerCurrentController(FilterControllerEvent $event) { // this check is needed because in Symfony a request can perform any // number of sub-requests. See // http://symfony.com/doc/current/components/http_kernel/introduction.html#sub-requests if ($event->isMasterRequest()) { $this->twigExtension->setController($event->getController()); } }
/** * @param FilterControllerEvent $event */ public function onKernelController(FilterControllerEvent $event) { if (!$event->isMasterRequest()) { return; } $request = $event->getRequest(); $app = $request->attributes->get('_app'); if (!isset($app['interceptors'])) { return; } $this->manager->handle($request); }
/** * Read the controller annotations and change theme if the annotation indicate that need * @param FilterControllerEvent $event */ public function readControllerAnnotations(FilterControllerEvent $event) { if (!$event->isMasterRequest()) { // prevents calling this for controller usage within a template or elsewhere return; } $controller = $event->getController(); list($controller, $method) = $controller; // the controller could be a proxy, e.g. when using the JMSSecuriyExtraBundle or JMSDiExtraBundle $controllerClassName = ClassUtils::getClass($controller); $this->themeEngine->changeThemeByAnnotation($controllerClassName, $method); }
/** * @param \Symfony\Component\HttpKernel\Event\FilterControllerEvent $event * * @return void */ public function onKernelController(FilterControllerEvent $event) { if (!$event->isMasterRequest()) { return; } $request = $event->getRequest(); $transactionName = $request->attributes->get('_route'); $requestUri = $request->server->get('REQUEST_URI', 'n/a'); $host = $request->server->get('COMPUTERNAME', $this->system->getHostname()); $this->newRelicApi->setNameOfTransaction($transactionName); $this->newRelicApi->addCustomParameter('request_uri', $requestUri); $this->newRelicApi->addCustomParameter('host', $host); if ($this->ignoreTransaction($transactionName)) { $this->newRelicApi->markIgnoreTransaction(); } }
/** * Add the module stylesheet to the page assets. * @param FilterControllerEvent $event * @throws \Twig_Error_Loader */ public function insertModuleStylesheet(FilterControllerEvent $event) { if (!$event->isMasterRequest()) { return; } $controller = $event->getController()[0]; if ($controller instanceof AbstractController) { /** @var AbstractModule $module */ $module = $this->kernel->getModule($controller->getName()); try { $module->addStylesheet(); } catch (\InvalidArgumentException $e) { // The module doesn't contain the default stylesheet. } } }
public function onKernelController(FilterControllerEvent $event) { $route = $event->getRequest()->attributes->get('_route'); if (!$event->isMasterRequest() || in_array($route, ['comunidad_select', 'comunidad_new'])) { return; } $user = $this->token ? $this->token->getUser() : null; if (!$user instanceof Usuario) { return; } $comunidad = $this->comunidadProvider->get(); if (!$comunidad instanceof Comunidad) { $fakeRequest = $event->getRequest()->duplicate(null, null, array('_controller' => 'AppBundle:Comunidad:index')); $controller = $this->resolver->getController($fakeRequest); $event->setController($controller); } }
public function onKernelController(FilterControllerEvent $event) { if (!$event->isMasterRequest()) { return; } $controller = $event->getController(); if (!is_array($controller)) { return; } $control = $controller[0]; if ($control instanceof LangController) { $url = $control->checkLang($event->getRequest()); if (!is_null($url)) { $event->setController(function () use($url) { return new RedirectResponse($url); }); } } }
/** * Add ThemePath to searchable paths when locating templates using name-spaced scheme * @param FilterControllerEvent $event * @throws \Twig_Error_Loader */ public function setUpThemePathOverrides(FilterControllerEvent $event) { if (!$event->isMasterRequest()) { return; } // add theme path to template locator $controller = $event->getController()[0]; if ($controller instanceof AbstractController) { $theme = $this->themeEngine->getTheme(); $bundleName = $controller->getName(); if ($theme) { $overridePath = $theme->getPath() . '/Resources/' . $bundleName . '/views'; if (is_readable($overridePath)) { $paths = $this->loader->getPaths($bundleName); // inject themeOverridePath before the original path in the array array_splice($paths, count($paths) - 1, 0, array($overridePath)); $this->loader->setPaths($paths, $bundleName); } } } }
/** * @author Krzysztof Bednarczyk * @param FilterControllerEvent $event */ public function onKernelController(FilterControllerEvent $event) { if (!$event->isMasterRequest()) { return; } $controller = $event->getController()[0]; if (!$controller instanceof Controller) { //do nothing when is other controller; return; } $request = $event->getRequest(); /** * Validate CSRF token */ $isXVRequest = (int) $request->headers->get('X-XV-Request', 0); if ($isXVRequest) { if (!$this->checkCsrfToken($request)) { throw new CsrfHttpException("Invalid CSRF token. Please turn on cookies and reload page."); } $request->headers->set("X-XV-{$this->uniqueKey}", 1); return; } $controller = $event->getController()[0]; if (!$controller instanceof Controller) { return; } /** * Prevent posting data directly form other post */ if ($request->getMethod() !== Request::METHOD_GET) { $event->setController(function () use($request) { return new RedirectResponse($request->getRequestUri()); }); return; } $request->headers->set("X-XV-First-Request", 1); $request->headers->set("X-XV-Source", "bootstrap"); }
public function onKernelController(FilterControllerEvent $event) { if (!$event->isMasterRequest()) { return; } if (!$this->maintenance) { return; } $this->customRoutesExclusion(); foreach ($this->routesExclusion as $routePattern) { if (preg_match($routePattern, $event->getRequest()->get('_route'))) { return; } } $this->isAdmin = $this->container->get('security.authorization_checker')->isGranted('ROLE_ADMIN'); if (!$this->isAdmin) { $controller = new MaintenanceController(); $controller->setContainer($this->container); $event->setController([$controller, 'maintenanceAction']); // dump($event->getController()); // die(); } }
/** * Add mauticForms in js script tag for Froala. * * @param FilterControllerEvent $event */ public function onKernelRequestAddGlobalJS(FilterControllerEvent $event) { if (defined('MAUTIC_INSTALLER') || $this->userHelper->getUser()->isGuest || !$event->isMasterRequest()) { return; } $list = $this->em->getRepository('MauticFormBundle:Form')->getSimpleList(); $mauticForms = json_encode($list, JSON_FORCE_OBJECT | JSON_PRETTY_PRINT); $this->assetsHelper->addScriptDeclaration("var mauticForms = {$mauticForms};"); }
public function onKernelController(FilterControllerEvent $event) { if (!$event->isMasterRequest()) { return; } $request = $event->getRequest(); if (!$request->attributes->has('_api')) { return; } /** @var Api $api */ $api = $request->attributes->get('_api'); $subRequests = $this->getSubRequests($request); $bulk = $api->isBulkable() && $subRequests; $stream = ($api->isStreamable() || $bulk) && $this->shouldStream($request); if (!$bulk && !$stream) { $request->attributes->set('stream', $this->noop); return; } // This listener will unwind/spread the calls, so don't trigger other Api listeners. $request->attributes->remove('_api'); if ($stream) { $headers = ['content-type' => 'application/json; boundary=NL', 'x-accel-buffering' => 'no']; } else { $headers = ['content-type' => 'application/json']; } if ($subRequests) { $event->setController(function () use($request, $headers, $subRequests, $stream) { return new StreamedResponse(function () use($request, $subRequests, $stream) { $promises = []; foreach ($subRequests as $i => $requestParams) { // Forward the query string without the 'payload', and put all the parameters in the body. $query = $request->query->all(); if (isset($query['payload'])) { unset($query['payload']); } $subRequest = $request->duplicate([], $requestParams); // Also force-make it a POST request, so it can contain a body. $subRequest->setMethod('POST'); $subRequest->attributes->set('stream', $stream ? $this->createStreamer($i) : $this->noop); /* @var PromiseInterface $promise */ $promises[] = $promise = $this->httpKernel->handle($subRequest, HttpKernelInterface::SUB_REQUEST, true, false); if ($stream) { $streamer = $this->createStreamer($i); $promise->then(function (Response $response) use($streamer) { $streamer($response->getContent(), true); }); } } $responses = \GuzzleHttp\Promise\all($promises)->wait(); if (!$stream) { echo '['; for (reset($responses); $response = current($responses); next($responses)) { echo $response->getContent(); if (current($responses)) { echo ','; } } echo ']'; } }, 200, $headers); }); } else { $event->setController(function () use($request, $headers) { return new StreamedResponse(function () use($request) { $request->attributes->set('stream', $this->createStreamer()); // We duplicate the request because the profiler component's token keeps a reference to the parent request's token, // creating an infinite loop when attempting to display profiler info. $response = $this->httpKernel->handle($request->duplicate(), HttpKernelInterface::SUB_REQUEST, true, true); // The streamer outputs a new line as the ending delimiter. In single action calls, the ending line should be // the actual response without a new line at the end. That's why streaming single calls have a resulting // response, but bulk calls don't have one. echo $response->getContent(); }, 200, $headers); }); } }