File tree Expand file tree Collapse file tree 2 files changed +19
-5
lines changed
Expand file tree Collapse file tree 2 files changed +19
-5
lines changed Original file line number Diff line number Diff line change 1414use Psr \Container \ContainerInterface ;
1515use Symfony \Component \HttpFoundation \Session \SessionInterface ;
1616use Symfony \Component \HttpFoundation \Session \Storage \NativeSessionStorage ;
17+ use Symfony \Component \HttpKernel \Event \GetResponseEvent ;
1718
1819/**
1920 * Sets the session in the request.
@@ -33,10 +34,12 @@ public function __construct(ContainerInterface $container)
3334 $ this ->container = $ container ;
3435 }
3536
36- protected function getSession (): ? SessionInterface
37+ public function onKernelRequest ( GetResponseEvent $ event )
3738 {
38- if (!$ this ->container ->has ('session ' )) {
39- return null ;
39+ parent ::onKernelRequest ($ event );
40+
41+ if (!$ event ->isMasterRequest () || !$ this ->container ->has ('session ' )) {
42+ return ;
4043 }
4144
4245 if ($ this ->container ->has ('session_storage ' )
@@ -46,6 +49,13 @@ protected function getSession(): ?SessionInterface
4649 ) {
4750 $ storage ->setOptions (['cookie_secure ' => true ]);
4851 }
52+ }
53+
54+ protected function getSession (): ?SessionInterface
55+ {
56+ if (!$ this ->container ->has ('session ' )) {
57+ return null ;
58+ }
4959
5060 return $ this ->container ->get ('session ' );
5161 }
Original file line number Diff line number Diff line change @@ -59,7 +59,7 @@ public function testSessionIsSet()
5959 $ listener = new SessionListener ($ container );
6060
6161 $ event = $ this ->createMock (RequestEvent::class);
62- $ event ->expects ($ this ->once ( ))->method ('isMasterRequest ' )->willReturn (true );
62+ $ event ->expects ($ this ->exactly ( 2 ))->method ('isMasterRequest ' )->willReturn (true );
6363 $ event ->expects ($ this ->once ())->method ('getRequest ' )->willReturn ($ request );
6464
6565 $ listener ->onKernelRequest ($ event );
@@ -203,12 +203,16 @@ public function testGetSessionIsCalledOnce()
203203 $ listener = new SessionListener ($ container );
204204 $ listener ->onKernelRequest ($ event );
205205
206+ // storage->setOptions() should have been called already
207+ $ container ->set ('session_storage ' , null );
208+ $ sessionStorage = null ;
209+
206210 $ subRequest = $ masterRequest ->duplicate ();
207211 // at this point both master and subrequest have a closure to build the session
208212
209213 $ masterRequest ->getSession ();
210214
211- // calling the factory on the subRequest should not trigger a second call to storage->sesOptions ()
215+ // calling the factory on the subRequest should not trigger a second call to storage->setOptions ()
212216 $ subRequest ->getSession ();
213217 }
214218}
You can’t perform that action at this time.
0 commit comments