diff --git a/DependencyInjection/Security/AutoLoginFactory.php b/DependencyInjection/Security/AutoLoginFactory.php index 10e19f1..375b900 100644 --- a/DependencyInjection/Security/AutoLoginFactory.php +++ b/DependencyInjection/Security/AutoLoginFactory.php @@ -37,11 +37,17 @@ public function create(ContainerBuilder $container, $id, $config, $userProvider, ->replaceArgument(0, $tokenStorageReference) ->replaceArgument(2, $id) ->replaceArgument(3, $config['token_param']) - ->replaceArgument(6, array( + ->replaceArgument(7, array( 'override_already_authenticated' => $config['override_already_authenticated'], )) ; + if ($config['remember_me']) { + $container + ->getDefinition($listenerId) + ->addTag('security.remember_me_aware', array('id' => $id, 'provider' => $userProvider)); + } + return array($providerId, $listenerId, $defaultEntryPoint); } @@ -72,6 +78,7 @@ public function addConfiguration(NodeDefinition $node) ->scalarNode('auto_login_user_provider')->defaultNull()->end() ->scalarNode('provider')->end() ->scalarNode('token_param')->defaultValue('_al')->end() + ->scalarNode('remember_me')->defaultFalse()->end() ->booleanNode('override_already_authenticated')->defaultFalse()->end() ; } diff --git a/README.md b/README.md index 32d8824..2afc29c 100644 --- a/README.md +++ b/README.md @@ -47,6 +47,13 @@ The AutoLoginFactory defines the following listener options: * `override_already_authenticated`: Boolean option determines whether an auto-login token should override an existing, authenticated session. This option defaults to false. + * `remember_me`: Boolean option that determines whether symfony's remember me + functionality should be enabled. Symfony's built-in remember me service is + looking for `remember_me_parameter` set to true in request (default key is + `_remember_me`) so to make it work you should add to your login link + `&_rememeber_me=1` or set `always_remember_me: true` in your remember_me part + of firewall configuration + [SecurityBundle documentation]: http://symfony.com/doc/current/book/security.html#using-multiple-user-providers @@ -71,6 +78,7 @@ security: jmikola_auto_login: auto_login_user_provider: acme.auto_login_user_provider token_param: al + remember_me: true #if you want to enable remember me functionality ``` In this example, we customized the token's query parameter. We also needed to @@ -96,6 +104,9 @@ security: token_param: al ``` +If you want to redirect user after login to exact url instead of default also add `&_target_path=` paramater to the +link. + ### FOSUserBundle Configuration Example If you are using [FOSUserBundle][], defining a service ID for your user provider diff --git a/Resources/config/security.xml b/Resources/config/security.xml index 6b1b93a..600c4bf 100755 --- a/Resources/config/security.xml +++ b/Resources/config/security.xml @@ -7,6 +7,7 @@ Jmikola\AutoLogin\Http\Firewall\AutoLoginListener Jmikola\AutoLogin\Authentication\Provider\AutoLoginProvider + Symfony\Component\Security\Http\Authentication\DefaultAuthenticationSuccessHandler @@ -16,6 +17,7 @@ + @@ -26,6 +28,11 @@ + + + + +