public function onKernelResponse(FilterResponseEvent $event) { $response = $event->getResponse(); if (null !== $response && $response instanceof PluginResponseInterface) { //when a route from a plugin is hit if (!$event->getRequest()->attributes->get('_jarves_is_plugin')) { //we accept only plugin routes. return; } $pageResponse = $this->pageStack->getPageResponse(); /** @var $content Content */ $content = $event->getRequest()->attributes->get('_content'); //this is later used in ContentTypes\TypePlugin, so it won't execute //the same plugin again. $pageResponse->setPluginResponse($content->getId(), $response); if (HttpKernelInterface::MASTER_REQUEST === $event->getRequestType()) { //when this was a master request, we need to render the actual content of the page, //so HttpKernel can return a valid ready rendered response //if a plugin route has been successfully requested //we need to handle also the Jarves editor if ($this->editMode->isEditMode()) { $this->editMode->registerEditor(); } $pageResponse->renderContent(); } //maintain the actual PageResponse $event->setResponse($pageResponse); } }
public function onKernelResponse(FilterResponseEvent $event) { $controller = $event->getRequest()->attributes->get('_controller'); if (empty($controller)) { return; } if (strpos($controller, '::') !== false) { $controller = explode('::', $controller, 2); $class = new \ReflectionClass($controller[0]); $method = $class->getMethod($controller[1]); $annotation = $this->reader->getMethodAnnotation($method, 'PSX\\PSXBundle\\Configuration\\Outgoing'); $response = $event->getResponse(); $writer = $this->getWriter($event->getRequest()); if ($response instanceof DataResponse) { if ($annotation instanceof Outgoing) { $file = $this->rootDir . '/' . $annotation->getFile(); $data = $this->assimilator->assimilate(JsonSchema::fromFile($file), $response->getData()); $response->headers->set('Content-Type', $writer->getContentType()); $response->setContent($writer->write($data)); } else { $data = $this->normalizeData($response->getData()); $response->headers->set('Content-Type', $writer->getContentType()); $response->setContent($writer->write($data)); } } else { throw new RuntimeException('Can only transform responses of PSX\\PSXBundle\\DataResponse'); } } }
/** * @param FilterResponseEvent $event */ public function onResponseLoad(FilterResponseEvent $event) { if (!$event->getRequest()->attributes->has('AJAX_PROCESSING')) { return; } $event->setResponse(new Response($this->adapter->getResponse($event->getRequest()->attributes->get('ajax_commands')))); }
/** * Redirects login attempts on already-logged-in session to the destination. */ public function onRespond(FilterResponseEvent $event) { // Return early in most cases. if ($event->getRequest()->getMethod() !== 'POST') { return; } if (!$this->currentUser->isAuthenticated()) { return; } if (!$event->isMasterRequest()) { return; } if (!$event->getRequest()->query->has('destination')) { return; } if ($event->getResponse() instanceof RedirectResponse) { return; } // There has to be a better way to figure out if we landed on the 403/404 page. $page_403 = $this->configFactory->get('system.site')->get('page.403'); $page_404 = $this->configFactory->get('system.site')->get('page.404'); $path = $this->currentPath->getPath(); $route = $this->currentRouteMatch->getRouteName(); if ($route == 'system.403' || $page_403 && $path == $page_403 || $route == 'system.404' || $page_404 && $path == $page_404) { // RedirectResponseSubscriber will convert to absolute URL for us. $event->setResponse(new RedirectResponse($this->redirectDestination->get(), RedirectResponse::HTTP_SEE_OTHER)); } }
/** * Handles the onKernelResponse event. * * @param FilterResponseEvent $event A FilterResponseEvent instance */ public function onKernelResponse(FilterResponseEvent $event) { $master = HttpKernelInterface::MASTER_REQUEST === $event->getRequestType(); if ($this->onlyMasterRequests && !$master) { return; } if ($this->onlyException && null === $this->exception) { return; } $exception = $this->exception; $this->exception = null; if (null !== $this->matcher && !$this->matcher->matches($event->getRequest())) { return; } if ($profile = $this->profiler->collect($event->getRequest(), $event->getResponse(), $exception)) { if ($master) { $this->profiler->saveProfile($profile); foreach ($this->children as $child) { $child->setParent($profile); $this->profiler->saveProfile($child); } $this->children = array(); } else { $this->children[] = $profile; } } }
/** * 输出debugBar,只有当页面有</body>标签时有效。 * * @param FilterResponseEvent $event */ public function onKernelResponse(FilterResponseEvent $event) { $response = $event->getResponse(); $request = $event->getRequest(); if (!$event->isMasterRequest()) { return; } if ($request->isXmlHttpRequest()) { return; } if ($response->isRedirection() || $response->headers->has('Content-Type') && false === strpos($response->headers->get('Content-Type'), 'html') || 'html' !== $request->getRequestFormat()) { return; } $path = null; if ($this->app['debug_bar.auto_res']) { $scriptName = $event->getRequest()->server->get('SCRIPT_NAME'); $path = $scriptName . $this->app['debug_bar.path']; } else { $path = $this->app['debug_bar.path']; } $render = $this->app['debug_bar']->getJavascriptRenderer($path); ob_start(); echo $render->renderHead(); echo $render->render(); $debugContent = ob_get_contents(); ob_end_clean(); $content = $response->getContent(); if (false === strpos($content, '</body>')) { $content .= $debugContent; } else { $content = str_replace("</body>", $debugContent . '</body>', $content); } $event->getResponse()->setContent($content); }
/** * @param FilterResponseEvent $event */ public function onKernelResponse(FilterResponseEvent $event) { $allowedMethods = $this->loader->getAllowedMethods(); if (isset($allowedMethods[$event->getRequest()->get('_route')])) { $event->getResponse()->headers->set('Allow', implode(', ', $allowedMethods[$event->getRequest()->get('_route')])); } }
/** * Parses content of response and set the replaced html as new content. * * @param FilterResponseEvent $event */ public function replaceMarkup(FilterResponseEvent $event) { $format = $event->getRequest()->getRequestFormat(null); if (!array_key_exists($format, $this->markupParser)) { return; } $response = $event->getResponse(); $response->setContent($this->markupParser[$format]->parse($response->getContent(), $event->getRequest()->getLocale())); }
/** * kernel.responseイベント */ public function onKernelResponse(FilterResponseEvent $event) { // kernel.responseイベント発生時に出力フォーマットを判定し、 // csvであればContent-Dispositionヘッダを追加、かつ、レスポンスボディをSJIS-winに変換する if ($event->getRequest()->getRequestFormat() === 'csv') { $response = $event->getResponse(); $response->setContent(mb_convert_encoding($response->getContent(), 'SJIS-win', mb_internal_encoding())); $response->headers->set('Content-Disposition', sprintf('attachment; filename=%s.csv', $event->getRequest()->get('_filename'))); } }
/** * Check if snippets are allowed for this request. * * @param FilterResponseEvent $event */ protected function isEnabled(FilterResponseEvent $event) { if (!$event->isMasterRequest()) { return false; } if (Zone::isFrontend($event->getRequest())) { return true; } return $event->getRequest()->attributes->get('allow_snippets', false); }
/** * @param FilterResponseEvent $event */ public function onKernelResponse(FilterResponseEvent $event) { $request = $event->getRequest(); if (!$request->attributes->get(FOSRestBundle::ZONE_ATTRIBUTE, true)) { return; } $allowedMethods = $this->loader->getAllowedMethods(); if (isset($allowedMethods[$event->getRequest()->get('_route')])) { $event->getResponse()->headers->set('Allow', implode(', ', $allowedMethods[$event->getRequest()->get('_route')])); } }
/** * Add resolved tags to X-Robots-Tag response header. * * @param FilterResponseEvent $event */ public function addRobotTags(FilterResponseEvent $event) { if (!$event->isMasterRequest()) { return; } if ($this->cloak && !$this->requestChecker->isCrawler($event->getRequest())) { return; } if ($tags = $this->tagResolver->resolve($event->getRequest())) { $event->getResponse()->headers->set('X-Robots-Tag', implode(', ', $tags)); } }
public function onKernelResponse(FilterResponseEvent $event) { $response = $event->getResponse(); $request = $event->getRequest(); // exclude render tags in the WDT and Profiler $controller = $request->attributes->get('_controller'); if ($controller && 'WebProfilerBundle' === substr($controller, 0, 17)) { return; } // do not highlight master responses that are not HTML based $contentType = $response->headers->get('Content-Type'); if (HttpKernelInterface::MASTER_REQUEST === $event->getRequestType() && $contentType && !preg_match('{^(text/html|application/xhtml+xml)\\b}', $contentType)) { return; } // skip non-cacheable responses if (!$response->isCacheable()) { return; } $response->setContent(sprintf(' <div class="esi-debug"> <div class="esi-debug-details"> ESI: %s, Rendered: %s, Cache-Control: %s </div> %s </div> <style> .esi-debug { border: 1px solid red; } .esi-debug-details { background: red; position: absolute; color: white; } .esi-debug:hover { background: rgba(255, 0, 0, .25); border-color #CC0000; cursor: pointer; } .esi-debug:hover .esi-debug-details { background: #CC0000; z-index: 9999; } </style> ', $event->getRequest()->getRequestUri(), date('Y-m-d H:i:s'), $response->headers->get('cache-control'), $response->getContent())); }
/** * This method is executed on kernel.response event * * @param FilterResponseEvent $event * * @see {http://symfony.com/doc/current/components/http_kernel/introduction.html#the-kernel-response-event} */ public function onResponse(FilterResponseEvent $event) { $request = $event->getRequest(); if ($request->attributes->get('response_source') === 'cache') { //Prevents re-caching response from cache $event->stopPropagation(); return; } if (!$event->isMasterRequest()) { return; //Caching should only occur on master requests, see https://github.com/kiler129/SupercacheBundle/issues/10 } $this->responseHandler->cacheResponse($event->getRequest(), $event->getResponse()); }
public function onKernelResponse(FilterResponseEvent $event) { if (HttpKernel::MASTER_REQUEST != $event->getRequestType()) { // don't do anything if it's not the master request return; } if (false === strpos($event->getRequest()->getRequestUri(), 'login')) { if ($event->getRequest()->isXmlHttpRequest() && $event->getResponse()->getStatusCode() == "302") { $event->getResponse()->setStatusCode(401); $response = new \Symfony\Component\HttpFoundation\Response(); $response->setStatusCode(401); $event->setResponse($response); } } }
public function doResponse(FilterResponseEvent $event) { $response = $event->getResponse(); $url = $event->getRequest()->getPathInfo(); $prefix = ConfigQuery::read("back_office_path"); $defaultEnabled = intval(ConfigQuery::read("back_office_path_default_enabled", "1")); $contentType = $response->headers->get('Content-Type'); // skip if the default thelia prefixe is enabled if ($defaultEnabled === 1) { return; } $isValid = strpos($url, '/' . BackOfficePath::DEFAULT_THELIA_PREFIX) === 0 && $prefix !== null && $prefix !== ""; if ($isValid) { if ($response instanceof RedirectResponse) { $targetUrl = $response->getTargetUrl(); if (strpos($targetUrl, '/' . BackOfficePath::DEFAULT_THELIA_PREFIX) !== false) { $newUrl = $this->replaceUrl($targetUrl, BackOfficePath::DEFAULT_THELIA_PREFIX, $prefix); $response->setTargetUrl($newUrl); } } else { $content = $this->replaceUrl($response->getContent(), BackOfficePath::DEFAULT_THELIA_PREFIX, $prefix); $response->setContent($content); } } }
public function onKernelResponse(FilterResponseEvent $event) { $response = $event->getResponse(); $request = $event->getRequest(); if ($response->headers->has('X-Debug-Token') && null !== $this->urlGenerator) { try { $response->headers->set('X-Debug-Token-Link', $this->urlGenerator->generate('_profiler', array('token' => $response->headers->get('X-Debug-Token')), UrlGeneratorInterface::ABSOLUTE_URL)); } catch (\Exception $e) { $response->headers->set('X-Debug-Error', get_class($e) . ': ' . $e->getMessage()); } } if (!$event->isMasterRequest()) { return; } // do not capture redirects or modify XML HTTP Requests if ($request->isXmlHttpRequest()) { return; } if ($response->headers->has('X-Debug-Token') && $response->isRedirect() && $this->interceptRedirects) { $session = $request->getSession(); if (null !== $session && $session->isStarted() && $session->getFlashBag() instanceof AutoExpireFlashBag) { // keep current flashes for one more request if using AutoExpireFlashBag $session->getFlashBag()->setAll($session->getFlashBag()->peekAll()); } $response->setContent($this->twig->render('@WebProfiler/Profiler/toolbar_redirect.html.twig', array('location' => $response->headers->get('Location')))); $response->setStatusCode(200); $response->headers->remove('Location'); } if (self::DISABLED === $this->mode || !$response->headers->has('X-Debug-Token') || $response->isRedirection() || $response->headers->has('Content-Type') && false === strpos($response->headers->get('Content-Type'), 'html') || 'html' !== $request->getRequestFormat()) { return; } $this->injectToolbar($response, $request); }
public function onKernelResponse(FilterResponseEvent $event) { if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) { return; } $response = $event->getResponse(); $request = $event->getRequest(); // do not capture redirects or modify XML HTTP Requests if ($request->isXmlHttpRequest()) { return; } if ($response->headers->has('X-Debug-Token') && $response->isRedirect() && $this->interceptRedirects) { $session = $request->getSession(); if ($session && $session->getFlashBag() instanceof AutoExpireFlashBag) { // keep current flashes for one more request if using AutoExpireFlashBag $session->getFlashBag()->setAll($session->getFlashBag()->peekAll()); } $response->setContent($this->templating->render('WebProfilerBundle:Profiler:toolbar_redirect.html.twig', array('location' => $response->headers->get('Location')))); $response->setStatusCode(200); $response->headers->remove('Location'); } if (self::DISABLED === $this->mode || !$response->headers->has('X-Debug-Token') || $response->isRedirection() || $response->headers->has('Content-Type') && false === strpos($response->headers->get('Content-Type'), 'html') || 'html' !== $request->getRequestFormat()) { return; } $this->injectToolbar($response); }
public function onCoreResponse(FilterResponseEvent $event) { if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) { return; } $response = $event->getResponse(); $request = $event->getRequest(); // do not capture redirects or modify XML HTTP Requests if ($request->isXmlHttpRequest()) { return; } if ($response->headers->has('X-Debug-Token') && $response->isRedirect() && $this->interceptRedirects) { if (null !== $session = $request->getSession()) { // keep current flashes for one more request $session->setFlashes($session->getFlashes()); } $response->setContent($this->templating->render('WebProfilerBundle:Profiler:toolbar_redirect.html.twig', array('location' => $response->headers->get('Location')))); $response->setStatusCode(200); $response->headers->remove('Location'); } if (!$response->headers->has('X-Debug-Token') || '3' === substr($response->getStatusCode(), 0, 1) || ($response->headers->has('Content-Type') && false === strpos($response->headers->get('Content-Type'), 'html')) || 'html' !== $request->getRequestFormat() ) { return; } $this->injectToolbar($response); }
public function addLocaleCookie(FilterResponseEvent $event) { $cookies = $event->getRequest()->cookies; if (isset($this->locale) && (false === $cookies->has('locale') || $cookies->get('locale') !== $this->locale)) { $event->getResponse()->headers->setCookie(new Cookie('locale', $this->locale, 0, '/', null, false, false)); } }
public function onRenderAdminProductCategoryEditBefore(FilterResponseEvent $event) { $app = $this->app; $request = $event->getRequest(); $response = $event->getResponse(); $id = $request->attributes->get('id'); $CategoryContent = null; if ($id) { $CategoryContent = $app['category_content.repository.category_content']->find($id); } if (is_null($CategoryContent)) { $CategoryContent = new \Plugin\CategoryContent\Entity\CategoryContent(); } // DomCrawlerにHTMLを食わせる $html = $response->getContent(); $crawler = new Crawler($html); $form = $app['form.factory']->createBuilder('admin_category')->getForm(); $form['content']->setData($CategoryContent->getContent()); $form->handleRequest($request); $twig = $app->renderView('CategoryContent/Resource/template/Admin/category.twig', array('form' => $form->createView())); $oldCrawler = $crawler->filter('form')->first(); // DomCrawlerからHTMLを吐き出す $html = $crawler->html(); $oldHtml = ''; $newHtml = ''; if (count($oldCrawler) > 0) { $oldHtml = $oldCrawler->html(); $newHtml = $oldHtml . $twig; } $html = str_replace($oldHtml, $newHtml, $html); $response->setContent($html); $event->setResponse($response); }
/** * Handles the onKernelResponse event. * * @param FilterResponseEvent $event A FilterResponseEvent instance */ public function onKernelResponse(FilterResponseEvent $event) { $master = $event->isMasterRequest(); if ($this->onlyMasterRequests && !$master) { return; } if ($this->onlyException && null === $this->exception) { return; } $request = $event->getRequest(); $exception = $this->exception; $this->exception = null; if (null !== $this->matcher && !$this->matcher->matches($request)) { return; } if (!($profile = $this->profiler->collect($request, $event->getResponse(), $exception))) { return; } $this->profiles[$request] = $profile; if (null !== $this->requestStack) { $this->parents[$request] = $this->requestStack->getParentRequest(); } elseif (!$master) { // to be removed when requestStack is required array_pop($this->requests); $this->parents[$request] = end($this->requests); } }
/** * Filters the Response. * * @param FilterResponseEvent $event A FilterResponseEvent instance */ public function onKernelResponse(FilterResponseEvent $event) { $request = $event->getRequest(); $response = $event->getResponse(); if ('HEAD' === $request->getMethod()) { // cf. RFC2616 14.13 $length = $response->headers->get('Content-Length'); $response->setContent(''); if ($length) { $response->headers->set('Content-Length', $length); } } if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) { return; } if (null === $response->getCharset()) { $response->setCharset($this->charset); } if ($response->headers->has('Content-Type')) { return; } $format = $request->getRequestFormat(); if (null !== $format && ($mimeType = $request->getMimeType($format))) { $response->headers->set('Content-Type', $mimeType); } }
/** * Adds the headers to the response once it's created */ public function onKernelResponse(FilterResponseEvent $event) { if (!$event->isMasterRequest()) { return; } if (!preg_match('{\\bFirePHP/\\d+\\.\\d+\\b}', $event->getRequest()->headers->get('User-Agent')) && !$event->getRequest()->headers->has('X-FirePHP-Version')) { $this->sendHeaders = false; $this->headers = array(); return; } $this->response = $event->getResponse(); foreach ($this->headers as $header => $content) { $this->response->headers->set($header, $content); } $this->headers = array(); }
public function onKernelResponse(FilterResponseEvent $event) { if ($this->url || !$event->isMasterRequest() || !\sfContext::hasInstance()) { return; } $response_headers = $event->getResponse()->headers; if ($response_headers->has('x-debug-token-link') && strpos(\sfContext::getInstance()->getResponse()->getContentType(), 'javascript') === false && !$event->getRequest()->isXmlHttpRequest()) { $this->url = $response_headers->get('x-debug-token-link'); $link = json_encode($response_headers->get('x-debug-token-link')); echo <<<JAVASCRIPT <script> (function() { var bar_node = document.getElementById('sfWebDebugDetails'), link_node, li_node; if(bar_node) { // We have a debug bar link_node = document.createElement('a'); link_node.href = {$link}; link_node.appendChild(document.createTextNode('Symfony 2')); li_node = document.createElement('li'); li_node.appendChild(link_node); bar_node.insertBefore(li_node,bar_node.firstChild); } }()) </script> JAVASCRIPT; } }
public function onKernelResponse(FilterResponseEvent $event) { if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) { return; } $response = $event->getResponse(); $request = $event->getRequest(); // do not capture redirects or modify XML HTTP Requests if ($request->isXmlHttpRequest()) { return; } // do not capture admin cms urls if (preg_match('/.*\\/admin\\/.*/', $request->getRequestUri())) { return; } try { $isGranted = $this->authorizationChecker->isGranted('ROLE_ADMIN'); } catch (AuthenticationCredentialsNotFoundException $e) { $isGranted = false; } if (self::DISABLED === $this->mode || $response->isRedirection() || $response->headers->has('Content-Type') && false === strpos($response->headers->get('Content-Type'), 'html') || 'html' !== $request->getRequestFormat()) { return; } $this->injectToolbar($response, $request); }
public function onKernelResponse(FilterResponseEvent $e) { if (!$this->isRestRoute($e->getRequest())) { return; } $e->getDispatcher()->dispatch('sdispatcher.rest_response', $e); }
/** * Modifies the response to apply HTTP expiration header fields. * * @param FilterResponseEvent $event The notified event */ public function onKernelResponse(FilterResponseEvent $event) { if (!($configuration = $event->getRequest()->attributes->get('_cache'))) { return; } $response = $event->getResponse(); if (!$response->isCacheable()) { return; } if (null !== $configuration->getSMaxAge()) { $response->setSharedMaxAge($configuration->getSMaxAge()); } if (null !== $configuration->getMaxAge()) { $response->setMaxAge($configuration->getMaxAge()); } if (null !== $configuration->getExpires()) { $date = \DateTime::createFromFormat('U', strtotime($configuration->getExpires()), new \DateTimeZone('UTC')); $response->setExpires($date); } if (null !== $configuration->getVary()) { $response->setVary($configuration->getVary()); } if ($configuration->isPublic()) { $response->setPublic(); } $event->setResponse($response); }
public function onQuickUploadResponse(FilterResponseEvent $event) { $request = $event->getRequest(); if ($request->get('responseType') === 'json') { return; } $response = $event->getResponse(); $funcNum = $request->get('CKEditorFuncNum'); $funcNum = preg_replace('/[^0-9]/', '', $funcNum); if ($response instanceof JsonResponse) { $responseData = $response->getData(); $fileUrl = isset($responseData['url']) ? $responseData['url'] : ''; $errorMessage = isset($responseData['error']['message']) ? $responseData['error']['message'] : ''; ob_start(); ?> <script type="text/javascript"> window.parent.CKEDITOR.tools.callFunction(<?php echo json_encode($funcNum); ?> , <?php echo json_encode($fileUrl); ?> , <?php echo json_encode($errorMessage); ?> ); </script> <?php $event->setResponse(Response::create(ob_get_clean())); } }
/** * Renders the ajax commands right before preparing the result. * * @param \Symfony\Component\HttpKernel\Event\FilterResponseEvent $event * The response event, which contains the possible AjaxResponse object. */ public function onResponse(FilterResponseEvent $event) { $response = $event->getResponse(); if ($response instanceof AjaxResponse) { $response->prepareResponse($event->getRequest()); } }