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();
        }
    }

Aucune réponse