/vendor/symfony/src/Symfony/Bundle/FrameworkBundle/EventListener/TestSessionListener.php
https://github.com/xbojer/gfw · PHP · 77 lines · 42 code · 12 blank · 23 comment · 6 complexity · 47343f871f2daeb6f3e73679d7b2c50e MD5 · raw file
- <?php
- /*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
- namespace Symfony\Bundle\FrameworkBundle\EventListener;
- use Symfony\Component\HttpFoundation\Cookie;
- use Symfony\Component\HttpKernel\HttpKernelInterface;
- use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
- use Symfony\Component\HttpKernel\Event\GetResponseEvent;
- use Symfony\Component\DependencyInjection\ContainerInterface;
- /**
- * TestSessionListener.
- *
- * Saves session in test environment.
- *
- * @author Bulat Shakirzyanov <mallluhuct@gmail.com>
- * @author Fabien Potencier <fabien@symfony.com>
- */
- class TestSessionListener
- {
- protected $container;
- public function __construct(ContainerInterface $container)
- {
- $this->container = $container;
- }
- public function onKernelRequest(GetResponseEvent $event)
- {
- if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) {
- return;
- }
- // bootstrap the session
- if ($this->container->has('session')) {
- $this->container->get('session');
- }
- $cookies = $event->getRequest()->cookies;
- if ($cookies->has(session_name())) {
- session_id($cookies->get(session_name()));
- } else {
- session_id('');
- }
- }
- /**
- * Checks if session was initialized and saves if current request is master
- * Runs on 'kernel.response' in test environment
- *
- * @param FilterResponseEvent $event
- */
- public function onKernelResponse(FilterResponseEvent $event)
- {
- if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) {
- return;
- }
- if ($session = $event->getRequest()->getSession()) {
- $session->save();
- $session->close();
- $params = session_get_cookie_params();
- $event->getResponse()->headers->setCookie(new Cookie(session_name(), session_id(), 0 === $params['lifetime'] ? 0 : time() + $params['lifetime'], $params['path'], $params['domain'], $params['secure'], $params['httponly']));
- }
- }
- }