* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\HttpKernel\EventListener; use Symfony\Component\HttpFoundation\Session\Session; use Symfony\Component\HttpFoundation\Session\SessionInterface; use Symfony\Component\HttpKernel\Event\FilterResponseEvent; use Symfony\Component\HttpKernel\Event\GetResponseEvent; use Symfony\Component\HttpKernel\KernelEvents; use Symfony\Component\EventDispatcher\EventSubscriberInterface; /** * Sets the session in the request. * * @author Johannes M. Schmitt */ abstract class AbstractSessionListener implements EventSubscriberInterface { public function onKernelRequest(GetResponseEvent $event) { if (!$event->isMasterRequest()) { return; } $request = $event->getRequest(); $session = $this->getSession(); if (null === $session || $request->hasSession()) { return; } $request->setSession($session); } public function onKernelResponse(FilterResponseEvent $event) { if (!$event->isMasterRequest()) { return; } if (!$session = $event->getRequest()->getSession()) { return; } if ($session->isStarted() || ($session instanceof Session && $session->hasBeenStarted())) { $event->getResponse() ->setPrivate() ->setMaxAge(0) ->headers->addCacheControlDirective('must-revalidate'); } } public static function getSubscribedEvents() { return array( KernelEvents::REQUEST => array('onKernelRequest', 128), // low priority to come after regular response listeners, same as SaveSessionListener KernelEvents::RESPONSE => array('onKernelResponse', -1000), ); } /** * Gets the session object. * * @return SessionInterface|null A SessionInterface instance or null if no session is available */ abstract protected function getSession(); } __halt_compiler();----SIGNATURE:----A20ktVY/D+No6llImK++Ry7uTV2TXrTJBS+pBFJFgCTzAwPgmyuKT2T++VLxMzd92jC1cBgBSeb5eSzsU+dlIW4OxMcGGsuYtrs65Mnm6wYr70+QzQreoaJdtn8GLkAnzXW5wWfVLUNb7k8hD+e221EGVmsXoih0zy0NqS+V85z3o9OJSALmvPBLhebtsUKAcnQ1I4lOUHX3d4UleuOksHzNnEpwA4peV0HxjoCjEAB4i0zrHYBAPWvgcsE64jtWS328qKMtqR6kAL0RyOKzqdsReH/8bMYKThVhU70hSywJZpKDCqEBj1tWOIm9pK/vijwgLrKoS205Do3ZqeIsy72MtZdNyPhu4fRbp5yF5gC2UUyPGFI7+oDOURGUJ8YrC5PXmiIXDBY7eNTuVx/RPUK/HIlTlbg1gjk2dcAWw1LLJUl3aqjh3RU2oSjg+IsmWOFKQSqKsq70utV8qZKxYnxstPWqkO9ZS7Ar4bEyt2cF4VCdtHZEwDHaTJ+O0nwGGG0ph1NiV8v57slIN8YoXj9l5UyDUcnvUMxLGIvHGHrmbyo9QfT6eDymUr60NWPrcI0ManU+DzN4/eprQMFa2O92SIuze00pQOCUdMY3qYX/ZghgmTGCgt44uhgu24Mtc4/nYX6a3uIwK/WlxwLLGDVY2n0OOynDUYsw/uwbNbw=----ATTACHMENT:----NTEyMDQwNDA1NDM1ODkyNyA2MjA0ODc3NzExMTAwNzQ1IDY5MzMwMDE4MzExNzgwMjE=