3 namespace Drupal\session_test\EventSubscriber;
5 use Symfony\Component\EventDispatcher\EventSubscriberInterface;
6 use Symfony\Component\HttpKernel\KernelEvents;
7 use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
8 use Symfony\Component\HttpKernel\Event\GetResponseEvent;
11 * Defines a test session subscriber that checks whether the session is empty.
13 class SessionTestSubscriber implements EventSubscriberInterface {
16 * Stores whether $_SESSION is empty at the beginning of the request.
20 protected $emptySession;
23 * Set header for session testing.
25 * @param \Symfony\Component\HttpKernel\Event\GetResponseEvent $event
26 * The Event to process.
28 public function onKernelRequestSessionTest(GetResponseEvent $event) {
29 $session = $event->getRequest()->getSession();
30 $this->emptySession = (int) !($session && $session->start());
34 * Performs tasks for session_test module on kernel.response.
36 * @param \Symfony\Component\HttpKernel\Event\FilterResponseEvent $event
37 * The Event to process.
39 public function onKernelResponseSessionTest(FilterResponseEvent $event) {
40 // Set header for session testing.
41 $response = $event->getResponse();
42 $response->headers->set('X-Session-Empty', $this->emptySession);
46 * Registers the methods in this class that should be listeners.
49 * An array of event listener definitions.
51 public static function getSubscribedEvents() {
52 $events[KernelEvents::RESPONSE][] = ['onKernelResponseSessionTest'];
53 $events[KernelEvents::REQUEST][] = ['onKernelRequestSessionTest'];