Salut les amis,
Voilà je suis en train de me former sur la gestion des événements sur Symfony.
Jusqu'à maintenant tous se passe bien !
J'ai le code suivant :
Lorsqu'un utilisateur se connecte à l'application, un listerner détecte l’événement de connexion et met à jour le champs last_login_at dans la bdd
Jusqu’à maintenant tous se passe bien.
Le problème apparaît lorsque l'utilisateur souhaite se déconnecter.
En effet à la déconnexion, la méthode onSecurityAuthenticationSuccess du listener est toujours appelé.
Problème une fois déconnecté on ne peut plus récupérer un user (dans la session)
Conséquence : ça bug !
Ce que je voudrait :
C'est pouvoir
- Enregistrer la date de la dernière connexion dans la bdd
- N'appelé la méthode onSecurityAuthenticationSuccess seulement à la connexion et non pas à la connexion et à la déconnexion
- De plus j'ai un champs is_in_line dans la bdd et je voudrais qu'à la déconnexion, je puis détecter l'évenement "deconnexion" et mettre à jour ce champs
Comment puis-je faire ça ?
Voici mon code pour le listerner
public function onSecurityAuthenticationSuccess(AuthenticationEvent $event){
$user = $event->getAuthenticationToken()->getUser();
if ($user) {
//dd($user);
$user->setLastLoginAt(new \Datetime('now'));
$this->em->persist($user);
$this->em->flush();
}
}