Suppression d'un compte

Ce sujet est résolu
Default
,

Bonjour,

Voila je rencontre un petit problème avec mon code

Ce que je fais

Je cherche à supprimer un compte


    /**
     * @Route("/{id}/suppresionProfil", name="profil_suppression", methods={"DELETE"})
     */
    public function suppressionProfil(Request $request, User $user): Response
    {

        if ($this->isCsrfTokenValid('delete'.$user->getId(), $request->request->get('_token'))) {
            $entityManager = $this->getDoctrine()->getManager();
            $entityManager->remove($user);
            $entityManager->flush();

            $this->addFlash('sup', 'Votre compte a bien été supprimée');
        }

        return $this->redirectToRoute('accueil');
    }

Ce que j'obtiens

Je redirige bien l'utilisateur sur la page accueil et voilà l'erreur qui s'affiche :

You cannot refresh a user from the EntityUserProvider that does not contain an identifier. The user object has to be serialized with its own identifier mapped by Doctrine.

Pourtant en bdd le compte a bien été supprimé, et si je réactualise la page, je suis bien sur l'accueil

Merci par avance,

9 Réponse

129923
,

Salut,

J'etais dans le même cas que vous. En cherchant un peu j'ai fini par trouver la solution.
vous devez supprimer la session de l'utilisateur :

use Symfony\Component\HttpFoundation\Session\Session;

$session = new Session();
$session->invalidate();

Et pour que l'utilisateur ne se vois plus connecté on peux ajouter la redirection vers le logout

        return $this->redirectToRoute( 'security.logout' );
Default
,

Bonjour, j'ai l'impression qu'il faut supprimer l'utilisateur en session...

152061
,

J'ai eu le même problème.
Je l'ai solutionner en supprimant le user "manuellement" par l'administrateur.

Autrement j'ai créer une table "DemandeSuppressionUser" qui a une propriété qui est lié au User qui demande la suppression.

Maintenant s'il y'a une solution pour supprimer l'utilisateur de la session comme le recomande @dubitoph , moi je la veux bien !

Default
,

Devdeb22, ça veut dire que tu fais travailler un admin ?

c'est une possibilité,
je comprends pourquoi j'ai l'erreur mais je n'ai trouvé aucune doc pour rectifier cela

J'ai même fais une fonction "fantôme" la suppression passe par cette fonction et est juste renvoyée sur la page accueil avec une redirect qui fait un peu une sorte de refresh, je l'avais utilisé pour un problème d'actualisation de notif.

Si je trouve je t'écris qq part

152061
,

Oui effectivement, je fais travailler l'admin !

Default
,

Salut Aka aka et merci pour ta réponse, j'avais laissé en stand by, je viens d'essayer et oui ça marche
merci beaucoup
par contre pourquoi redirectoRoute security.logout ?

129923
,

Pour ma pars j'ai mis le nom d'utilisateur dans le menu et si je retourne pas sur le logout le nom reste jusqu'au prochain rafrechissement de page.

Default
,

ah oui je vois, j'ai fais autrement. j'ai mis une condition entre app.user ou pas.
merci beaucoup

129923
,

Si c'est la solution place le post en resolut ^^ ☺