So you have a Symfony2 project under construction. Login works. Now you want to execute some code right after the user successfully logs in.
The solution: Make a custom event listener.
An event listener is actually a service with a proper tag associated with it. So first step is to register the listener. The configuration file shown corresponds to the listener in file
Acme/UserBundle/Listener/LoginListener.php. You can read more about services here.
Let’s go through the configuration.
class defines the listener class.
With arguments we inject services that this listener depends on. In this case the security.context service for retrieving the User object and
doctrine service for EntityManager.
tags is important. Every listener must be tagged with kernel.event_listener and must specify it’s event. For successful login that event is security.interactive_login. You can also specify the optional method tag.
Ok, our listener is registered. Let’s create it.
The above code should be pretty self-explanatory. The only required method is onSecurityInteractiveLogin(InteractiveLoginEvent $event). You do not need the other stuff, but you probably will if you want to modify the User object, or something else in the DB.