Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion DependencyInjection/Security/AutoLoginFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}

Expand Down Expand Up @@ -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()
;
}
Expand Down
11 changes: 11 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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
Expand All @@ -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=<URL|route>` paramater to the
link.

### FOSUserBundle Configuration Example

If you are using [FOSUserBundle][], defining a service ID for your user provider
Expand Down
7 changes: 7 additions & 0 deletions Resources/config/security.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
<parameters>
<parameter key="jmikola_auto_login.security.authentication.listener.class">Jmikola\AutoLogin\Http\Firewall\AutoLoginListener</parameter>
<parameter key="jmikola_auto_login.security.authentication.provider.class">Jmikola\AutoLogin\Authentication\Provider\AutoLoginProvider</parameter>
<parameter key="jmikola_auto_login.security.authentication.success_handler.class">Symfony\Component\Security\Http\Authentication\DefaultAuthenticationSuccessHandler</parameter>
</parameters>

<services>
Expand All @@ -16,6 +17,7 @@
<argument type="service" id="security.authentication.manager" />
<argument /> <!-- Provider-shared key -->
<argument /> <!-- Token query parameter -->
<argument type="service" id="jmikola_auto_login.security.authentication.success_handler" />
<argument type="service" id="logger" on-invalid="null" />
<argument type="service" id="event_dispatcher" on-invalid="null"/>
<argument /> <!-- Options -->
Expand All @@ -26,6 +28,11 @@
<argument type="service" id="security.user_checker" />
<argument /> <!-- Provider-shared key -->
</service>

<service id="jmikola_auto_login.security.authentication.success_handler" class="%jmikola_auto_login.security.authentication.success_handler.class%" public="false">
<argument type="service" id="security.http_utils" />
<argument type="collection" /> <!-- Options -->
</service>
</services>

</container>