I am using Auth0's Symfony library to allow users to log in with their social network providers. It works really well.
Using this firewall configuration, a user who visits /private
is successfully taken through the login flow and I can then use $this->getUser()
to see their details.
YAML
security: password_hashers: Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface: 'auto' providers: users_in_memory: { memory: null } auth0_provider: id: Auth0\Symfony\Security\UserProvider firewalls: private: pattern: ^/private$ context: user stateless: false provider: auth0_provider custom_authenticators: - auth0.authenticator main: lazy: true provider: users_in_memory
I want some unauthenticated pages to show user information. For example, if the user is logged in then /home
should say "Hello $username". If not, it should say "Log in here".
The answer was annoyingly simple - but not documented by Symfony or Auth0.
Change the main firewall to not be lazy:
YAML
main: lazy: false provider: users_in_memory
That then places all the Auth0 information into the $_SESSION
global variable. You can retrieve the user's details with:
PHP
if ( isset( $_SESSION["_sf2_attributes"]["auth0_session"]["user"] ) ) { $user = $_SESSION["_sf2_attributes"]["auth0_session"]["user"]; $username = $user["nickname"]; $avatar = $user["picture"]; }
I'm sure there's a more official way to do this, but this quick and dirty hack seems to work pretty well.