@@ -214,6 +214,16 @@ private function createFirewalls($config, ContainerBuilder $container)
214
214
$ firewalls = $ config ['firewalls ' ];
215
215
$ providerIds = $ this ->createUserProviders ($ config , $ container );
216
216
217
+ // make the ContextListener aware of the configured user providers
218
+ $ definition = $ container ->getDefinition ('security.context_listener ' );
219
+ $ arguments = $ definition ->getArguments ();
220
+ $ userProviders = array ();
221
+ foreach ($ providerIds as $ userProviderId ) {
222
+ $ userProviders [] = new Reference ($ userProviderId );
223
+ }
224
+ $ arguments [1 ] = $ userProviders ;
225
+ $ definition ->setArguments ($ arguments );
226
+
217
227
// load firewall map
218
228
$ mapDef = $ container ->getDefinition ('security.firewall.map ' );
219
229
$ map = $ authenticationProviders = array ();
@@ -278,7 +288,7 @@ private function createFirewall(ContainerBuilder $container, $id, $firewall, &$a
278
288
$ contextKey = $ firewall ['context ' ];
279
289
}
280
290
281
- $ listeners [] = new Reference ($ this ->createContextListener ($ container , $ contextKey, $ defaultProvider ));
291
+ $ listeners [] = new Reference ($ this ->createContextListener ($ container , $ contextKey ));
282
292
}
283
293
284
294
// Logout listener
@@ -361,15 +371,14 @@ private function createFirewall(ContainerBuilder $container, $id, $firewall, &$a
361
371
return array ($ matcher , $ listeners , $ exceptionListener );
362
372
}
363
373
364
- private function createContextListener ($ container , $ contextKey, $ providerId )
374
+ private function createContextListener ($ container , $ contextKey )
365
375
{
366
376
if (isset ($ this ->contextListeners [$ contextKey ])) {
367
377
return $ this ->contextListeners [$ contextKey ];
368
378
}
369
379
370
380
$ listenerId = 'security.context_listener. ' .count ($ this ->contextListeners );
371
381
$ listener = $ container ->setDefinition ($ listenerId , new DefinitionDecorator ('security.context_listener ' ));
372
- $ listener ->replaceArgument (1 , array (new Reference ($ providerId )));
373
382
$ listener ->replaceArgument (2 , $ contextKey );
374
383
375
384
return $ this ->contextListeners [$ contextKey ] = $ listenerId ;
0 commit comments