1313
1414use Ekino \Bundle \DrupalBundle \Event \DrupalEvent ;
1515use Psr \Log \LoggerInterface ;
16- use Symfony \Component \HttpFoundation \Request ;
16+ use Symfony \Component \HttpFoundation \RequestStack ;
1717use Symfony \Component \Security \Core \Authentication \Token \UsernamePasswordToken ;
1818use Symfony \Component \Security \Core \User \UserInterface ;
1919
@@ -30,9 +30,9 @@ class UserRegistrationHookListener
3030 protected $ logger ;
3131
3232 /**
33- * @var Request
33+ * @var RequestStack
3434 */
35- protected $ request ;
35+ protected $ requestStack ;
3636
3737 /**
3838 * @var array
@@ -41,13 +41,13 @@ class UserRegistrationHookListener
4141
4242 /**
4343 * @param LoggerInterface $logger
44- * @param Request $request
44+ * @param RequestStack $requestStack
4545 * @param array $providerKeys
4646 */
47- public function __construct (LoggerInterface $ logger , Request $ request , array $ providerKeys )
47+ public function __construct (LoggerInterface $ logger , RequestStack $ requestStack , array $ providerKeys )
4848 {
4949 $ this ->logger = $ logger ;
50- $ this ->request = $ request ;
50+ $ this ->requestStack = $ requestStack ;
5151 $ this ->providerKeys = $ providerKeys ;
5252 }
5353
@@ -64,12 +64,14 @@ public function onLogin(DrupalEvent $event)
6464 throw new \RuntimeException ('An instance of UserInterface is expected ' );
6565 }
6666
67+ $ request = $ this ->requestStack ->getMasterRequest ();
68+
6769 // The ContextListener from the Security component is hijacked to insert a valid token into session
6870 // so next time the user go to a valid symfony2 url with a proper security context, then the following token
6971 // will be used
7072 foreach ($ this ->providerKeys as $ providerKey ) {
7173 $ token = new UsernamePasswordToken ($ user , null , $ providerKey , $ user ->getRoles ());
72- $ this -> request ->getSession ()->set ('_security_ ' .$ providerKey , serialize ($ token ));
74+ $ request ->getSession ()->set ('_security_ ' .$ providerKey , serialize ($ token ));
7375 }
7476 }
7577
@@ -78,8 +80,10 @@ public function onLogin(DrupalEvent $event)
7880 */
7981 public function onLogout (DrupalEvent $ event )
8082 {
83+ $ request = $ this ->requestStack ->getMasterRequest ();
84+
8185 foreach ($ this ->providerKeys as $ providerKey ) {
82- $ this -> request ->getSession ()->set ('_security_ ' .$ providerKey , null );
86+ $ request ->getSession ()->set ('_security_ ' .$ providerKey , null );
8387 }
8488 }
8589}
0 commit comments