Logout Hadlers

Ce sujet est résolu
97788
,

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éponse

87112
,

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.

97788
,

Merci pour cette piste. Ça a marché.

97788
,

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

87112
,

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

97788
,

J'ai résolu le probleme. Merci