eZ\Bundle\EzPublishCoreBundle\EventListener\SessionInitByPostListener::onSiteAccessMatch PHP Method

onSiteAccessMatch() public method

public onSiteAccessMatch ( PostSiteAccessMatchEvent $event )
$event eZ\Publish\Core\MVC\Symfony\Event\PostSiteAccessMatchEvent
    public function onSiteAccessMatch(PostSiteAccessMatchEvent $event)
    {
        if (!$this->session || $event->getRequestType() !== HttpKernelInterface::MASTER_REQUEST) {
            return;
        }
        $sessionName = $this->session->getName();
        $request = $event->getRequest();
        if (!$this->session->isStarted() && !$request->hasPreviousSession() && $request->request->has($sessionName)) {
            $this->session->setId($request->request->get($sessionName));
            $this->session->start();
        }
    }

Usage Example

 public function testOnSiteAccessMatchNewSessionName()
 {
     $sessionName = 'eZSESSID';
     $sessionId = 'foobar123';
     $request = new Request();
     $request->request->set($sessionName, $sessionId);
     $event = new PostSiteAccessMatchEvent(new SiteAccess(), $request, HttpKernelInterface::MASTER_REQUEST);
     $this->session->expects($this->once())->method('getName')->will($this->returnValue($sessionName));
     $this->session->expects($this->once())->method('isStarted')->will($this->returnValue(false));
     $this->session->expects($this->once())->method('setId')->with($sessionId);
     $this->session->expects($this->once())->method('start');
     $this->listener->onSiteAccessMatch($event);
 }