Bonjour,

Je travail sur Symfony et j'aimerais implementé une fonctionnalité:

J'ai une entité User et j'y ai inclu un champs lastVisit (Correspondant a la derniere visite du User)

Je veux y enrégistré la date juste avant la déconnexion. J'ai essayé d'utiliser le LougoutListener mais je ne sais pas comment récuperer le User avant de déconnecter

<?php
//App\Listener\LogoutListener.php

namespace App\Listener;

use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
use Symfony\Component\Security\Http\Logout\LogoutHandlerInterface;

class LogoutListener implements LogoutHandlerInterface
{

    /**
     * @{inheritDoc}
     */
    public function logout(Request $request, Response $response, TokenInterface $token)
    {
        $user = $token->getUser();
    }
}

Ici $user contient anonymous (Déjà déconnecté).

Qu'elqu'un aurait une solution svv? Merci d'avance

5 réponses


Digivia
Réponse acceptée

Hello,

J'ai déja mis en place cela, mais à la connexion. C'est à dire que j'enregistre la date à laquelle a eu lieu la dernière connexion. J'avais fait ça dans mon guard, dans la méthode onAuthenticationSuccess.
Si tu veux vraiment tracker la date de déconnexion, le listener est une bonne solution. Pour accéder à ton user, il faudrait plutôt que tu fasses

$user = $token->getToken()->getUser();

Là tu vas récupérer une instance de ton User.
Par contre, si tu écoutes après la déconnexion, il est normal que tu obtiennes un User null... Il faut que tu écoutes avant la déconnexion.

aosow
Auteur

Merci pour cette piste. Ça a marché.

aosow
Auteur

Bonjour @digivia, cette solution ne marche pas quand je suis du coté de l'administration. Je ne comprend pas pourquoi

Du côté de l'administration? C'est à dire??

aosow
Auteur

J'ai résolu le probleme. Merci