public function it_does_not_set_cookie_when_it_does_not(FilterResponseEvent $event) { $event->getRequestType()->willReturn(HttpKernelInterface::MASTER_REQUEST)->shouldBeCalled(); $event->getRequest()->willReturn($this->unsecureRequest)->shouldBeCalled(); $event->getResponse()->shouldNotBeCalled(); $this->onKernelResponse($event); }
/** * Process the _tags request attribute, which is set when using the Tag * annotation. * * - For a safe (GET or HEAD) request, the tags are set on the response. * - For a non-safe request, the tags will be invalidated. * * @param FilterResponseEvent $event */ public function onKernelResponse(FilterResponseEvent $event) { $request = $event->getRequest(); $response = $event->getResponse(); $tags = array(); // Only set cache tags or invalidate them if response is successful if ($response->isSuccessful()) { $tags = $this->getAnnotationTags($request); } $configuredTags = $this->matchRule($request, $response); if ($configuredTags) { $tags = array_merge($tags, $configuredTags['tags']); foreach ($configuredTags['expressions'] as $expression) { $tags[] = $this->evaluateTag($expression, $request); } } if ($request->isMethodSafe()) { $this->tagHandler->addTags($tags); if (HttpKernelInterface::MASTER_REQUEST === $event->getRequestType()) { // For safe requests (GET and HEAD), set cache tags on response $this->tagHandler->tagResponse($response); } } elseif (count($tags)) { // For non-safe methods, invalidate the tags $this->tagHandler->invalidateTags($tags); } }
/** * Moves flash messages from the session to a cookie inside a Response Kernel listener. * * @param FilterResponseEvent $event */ public function onKernelResponse(FilterResponseEvent $event) { if ($event->getRequestType() !== HttpKernel::MASTER_REQUEST) { return; } // Flash messages are stored in the session. If there is none, there // can't be any flash messages in it. $session->getFlashBag() would // create a session, we need to avoid that. if (!$this->session->isStarted()) { return; } $flashBag = $this->session->getFlashBag(); $flashes = $flashBag->all(); if (empty($flashes)) { return; } $response = $event->getResponse(); $cookies = $response->headers->getCookies(ResponseHeaderBag::COOKIES_ARRAY); if (isset($cookies[$this->options['host']][$this->options['path']][$this->options['name']])) { $rawCookie = $cookies[$this->options['host']][$this->options['path']][$this->options['name']]->getValue(); $flashes = array_merge($flashes, json_decode($rawCookie)); } $cookie = new Cookie($this->options['name'], json_encode($flashes), 0, $this->options['path'], $this->options['host'], $this->options['secure'], false); $response->headers->setCookie($cookie); }
/** * Filters the Response. * * @param FilterResponseEvent $event A FilterResponseEvent instance */ public function onKernelResponse(FilterResponseEvent $event) { if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType() || null === $this->esi) { return; } $this->esi->addSurrogateControl($event->getResponse()); }
public function saveBasket(Event\FilterResponseEvent $event) { if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) { return false; } $order = $this->get('basket.order'); $cookieName = $this->get('cfg')->basket->cookieName; $token = $this->get('request')->cookies->get($cookieName); // Skip if the order is empty if (count($order->items) < 1) { // If the cookie was in the request, delete it and clear the cookie if ($token) { $this->deleteBasket(); $this->get('http.cookies')->add(new Cookie($cookieName, null, new \DateTime('-1 hour'))); } return false; } // See if a basket already exists. $basket = $this->_services['order.basket.loader']->getByToken($token); // Update with current order details. if ($basket) { $basketID = $basket->basket_id; $this->_services['order.basket.edit']->update($basketID, $order); } else { // Create a new basket $basketID = $this->_services['order.basket.create']->create($order); $basket = $this->_services['order.basket.loader']->getByID($basketID); } // Create the cookie $token = $this->_services['order.basket.token']->generate($basketID, $basket->created_at); $cookieName = $this->_services['cfg']->basket->cookieName; $expire = new \DateTime('+' . $this->_services['cfg']->basket->cookieLength); $cookie = new Cookie($cookieName, $token, $expire); $this->_services['http.cookies']->add($cookie); }
/** * Unwraps an enforced response. */ public function onKernelResponse(FilterResponseEvent $event) { $response = $event->getResponse(); if ($response instanceof EnforcedResponse && $event->getRequestType() === HttpKernelInterface::MASTER_REQUEST) { $event->setResponse($response->getResponse()); } }
/** * @param FilterResponseEvent $event */ public function onCoreResponse(FilterResponseEvent $event) { if (HttpKernelInterface::MASTER_REQUEST === $event->getRequestType()) { $response = $event->getResponse(); $response->headers->add(array("X-RequestId" => $this->requestId)); } }
public function onKernelResponse(FilterResponseEvent $event) { $request = $event->getRequest(); if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) { return; } $response = $event->getResponse(); if ($request->isXmlHttpRequest()) { $this->debugbar->sendDataInHeaders(); return; } // if ($response->isRedirection() // OR !$response->headers->has('content-type') // OR false === strpos($response->headers->get('content-type'), 'text/html') // ) { // if ($this->debugbar->hasStackedData()) { // //esto es para que solo guarde la ultima // $this->debugbar->getStackedData(); // } // $this->debugbar->stackData(); // // return; // } $base = $request->getBasePath() . '/debugbar/'; $debugbarRenderer = $this->debugbar->getJavascriptRenderer($base); $this->injectScripts($response, $debugbarRenderer); }
public function onKernelResponse(FilterResponseEvent $event) { if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) { return; } $ssoSession = $this->container->getParameter('sso_session'); $request = $this->container->get('request_stack')->getCurrentRequest(); if (!$request->cookies->has($ssoSession)) { $id = sha1(uniqid('', true)); $cookie = new Cookie($ssoSession, $id, 0, '/', '.ceten.fr'); $event->getResponse()->headers->setCookie($cookie); } else { $id = $request->cookies->get($ssoSession); } $user = null; if (null !== ($token = $this->container->get('security.context')->getToken())) { $user = $token->getUser(); if (!$user instanceof User) { $user = null; } } $em = $this->container->get('doctrine.orm.entity_manager'); $session = $em->getRepository('CetenCetenBundle:Session')->findOneBy(array('name' => $id)); if (!$session) { $session = new Session(); $session->setName($id); } $session->setUser($user); if (!$session->getId()) { $em->persist($session); } $em->flush(); }
public function onKernelResponse(FilterResponseEvent $event) { if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) { return; } $request = $event->getRequest(); $response = $event->getResponse(); $options = $this->configurationResolver->getOptions($request); if (!$options) { return; } if ($options['allow_origin'] !== true) { $response->setVary('Origin', false); } if (!$this->checkOrigin($request, $options)) { return; } // add CORS response headers $response->headers->set('Access-Control-Allow-Origin', $request->headers->get('Origin')); if ($options['allow_credentials']) { $response->headers->set('Access-Control-Allow-Credentials', 'true'); } if ($options['expose_headers']) { $response->headers->set('Access-Control-Expose-Headers', strtolower(implode(', ', $options['expose_headers']))); } }
/** * @param FilterResponseEvent $event */ public function onCoreResponse(FilterResponseEvent $event) { if (HttpKernelInterface::MASTER_REQUEST === $event->getRequestType()) { $this->profiler->stopProfiling(); if ($this->profiling) { $timers = $this->profiler->getTimers(); $requestTime = microtime(true) - $this->start; $timers['request'] = (int) ($requestTime * 1000); $counters = $this->profiler->getCounters(); $counters['request'] = 1; if ($this->statsd) { $sample = $this->sampling / 100; $route = $event->getRequest()->attributes->get('_route'); foreach ($timers as $key => $value) { $this->statsd->timing($key, $value, $sample); if ($route) { $this->statsd->timing("per_route.{$key}.{$route}", $value, $sample); } } foreach ($counters as $key => $value) { $this->statsd->updateStats($key, $value, $sample); if ($route) { $this->statsd->updateStats("per_route.{$key}.{$route}", $value, $sample); } } } if ($this->logger) { $this->logger->log($event->getRequest(), $timers, $counters); } } } }
public function onCoreResponse(FilterResponseEvent $event) { if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) { return; } $response = $event->getResponse(); $request = $event->getRequest(); if ($response->headers->has('X-Debug-Token') && $response->isRedirect() && $this->interceptRedirects) { // keep current flashes for one more request $request->getSession()->setFlashes($request->getSession()->getFlashes()); $response->setContent( sprintf('<html><head></head><body><h1>This Request redirects to<br /><a href="%1$s">%1$s</a>.</h1><h4>The redirect was intercepted by the web debug toolbar to help debugging.<br/>For more information, see the "intercept-redirects" option of the Profiler.</h4></body></html>', $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() || $request->isXmlHttpRequest() ) { return; } $this->injectToolbar($response); }
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); } }
/** * 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; } } }
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); }
/** * Triggers authentication clean up on response. * * @see \Drupal\Core\Authentication\AuthenticationProviderInterface::cleanup() */ public function onRespond(FilterResponseEvent $event) { if ($event->getRequestType() == HttpKernelInterface::MASTER_REQUEST) { $request = $event->getRequest(); $this->authenticationProvider->cleanup($request); } }
/** * Process onReslonse event, updates user history information * * @param FilterResponseEvent $event * @return bool|void */ public function onResponse(FilterResponseEvent $event) { if (HttpKernel::MASTER_REQUEST != $event->getRequestType()) { // Do not do anything return; } $request = $event->getRequest(); $response = $event->getResponse(); // do not process requests other than in html format // with 200 OK status using GET method and not _internal and _wdt if (!$this->matchRequest($response, $request)) { return false; } $postArray = ['url' => $request->getRequestUri(), 'user' => $this->user]; /** @var $historyItem NavigationHistoryItem */ $historyItem = $this->em->getRepository('Oro\\Bundle\\NavigationBundle\\Entity\\NavigationHistoryItem')->findOneBy($postArray); if (!$historyItem) { /** @var $historyItem \Oro\Bundle\NavigationBundle\Entity\NavigationItemInterface */ $historyItem = $this->navItemFactory->createItem(NavigationHistoryItem::NAVIGATION_HISTORY_ITEM_TYPE, $postArray); } $historyItem->setTitle($this->titleService->getSerialized()); // force update $historyItem->doUpdate(); $this->em->persist($historyItem); $this->em->flush($historyItem); return true; }
/** * Sets a cookie to the response containing the CRSF token. * * @param FilterResponseEvent $event */ public function onKernelResponse(FilterResponseEvent $event) { if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType() || !$this->routeMatcher->match($event->getRequest(), $this->routes)) { return; } $event->getResponse()->headers->setCookie(new Cookie($this->cookieName, $this->angularCsrfTokenManager->getToken()->getValue(), $this->cookieExpire, $this->cookiePath, $this->cookieDomain, $this->cookieSecure, false)); }
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 onResponse(FilterResponseEvent $event) { if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) { return; } $response = $event->getResponse(); $request = $event->getRequest(); if (!$this->container->hasParameter('newscoop.gimme.allow_origin')) { return false; } $alowedHosts = $this->container->getParameter('newscoop.gimme.allow_origin'); if (count($alowedHosts) == 0) { return false; } if (in_array('*', $alowedHosts)) { $response->headers->set('Access-Control-Allow-Origin', '*'); $event->setResponse($response); } else { foreach ($alowedHosts as $host) { if ($request->server->get('HTTP_ORIGIN') == $host) { $response->headers->set('Access-Control-Allow-Origin', $host); $event->setResponse($response); } } } }
/** * Logs master response on event KernelEvents::RESPONSE * * @param FilterResponseEvent $event */ public function onKernelResponse(FilterResponseEvent $event) { if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) { return; } $this->logResponse($event->getResponse()); }
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); }
/** * 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); } }
public function onKernelResponse(FilterResponseEvent $event) { return; // disabled theming for the time being while it gets refactored. if ($event->getRequestType() == HttpKernelInterface::MASTER_REQUEST) { $response = $event->getResponse(); if ($request->isXmlHttpRequest()) { return; } if ($response instanceof RedirectResponse || $response instanceof PlainResponse || $response instanceof AbstractBaseResponse) { // dont theme redirects, plain responses or Ajax responses return; } $request = $event->getRequest(); // if (!$request->isXmlHttpRequest() // && strpos($response->getContent(), '</body>') === false // && !$response->isRedirection() // && 'html' === $request->getRequestFormat() // && (($response->headers->has('Content-Type') && false !== strpos($response->headers->get('Content-Type'), 'html')) || !$response->headers->has('Content-Type') )) { // $content = $this->templating->render($this->activeTheme.'::master.html.twig', array('maincontent' => $response->getContent())); // $response->setContent('ddd'.$content); // } $content = $this->templating->render($this->activeTheme . '::master.html.twig', array('maincontent' => $response->getContent())); $response->setContent($content); } }
public function onKernelResponse(FilterResponseEvent $event) { if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) { return; } $session = $event->getRequest()->getSession(); $session->save(); }
/** * 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; } $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[] = $profile; if (null !== $exception) { foreach ($this->profiles as $profile) { $this->profiler->saveProfile($profile); } return; } // keep the profile as the child of its parent if (!$master) { array_pop($this->requests); $parent = end($this->requests); // when simulating requests, we might not have the parent if ($parent) { $profiles = isset($this->children[$parent]) ? $this->children[$parent] : array(); $profiles[] = $profile; $this->children[$parent] = $profiles; } } if (isset($this->children[$request])) { foreach ($this->children[$request] as $child) { $profile->addChild($child); } $this->children[$request] = array(); } if ($master) { $this->saveProfiles($profile); } }
public function onKernelResponse(FilterResponseEvent $event) { if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) { return; } $response = $event->getResponse(); $response->headers->set('Access-Control-Allow-Origin', '*'); $response->headers->set('Access-Control-Allow-Headers', 'accept, origin, x-requested-with, token, content-type'); }
/** * @param FilterResponseEvent $event */ public function onKernelResponse(FilterResponseEvent $event) { if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) { return; } $response = $event->getResponse(); $this->getPreflightResponse($event->getRequest(), $response); $event->setResponse($response); }
public function onKernelResponse(FilterResponseEvent $event) { if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) { return; } $request = $event->getRequest(); if (!$request->cookies->has('hl') || $request->cookies->get('hl') !== $request->getLocale()) { $event->getResponse()->headers->setCookie(new Cookie('hl', $request->getLocale(), time() + 86400 * 365)); } }
/** * Removes is_logged_in cookie if needed. * * @param FilterResponseEvent $e */ public function onFilterResponse(FilterResponseEvent $e) { if ($e->getRequestType() !== HttpKernelInterface::MASTER_REQUEST) { return; } if ($this->needsCookieCleanup) { $e->getResponse()->headers->clearCookie('is_logged_in'); $this->needsCookieCleanup = false; } }