IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Modification du mot de passe sur symfony 5.4.1 setPassword est indéfini.


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 211
    Par défaut Modification du mot de passe sur symfony 5.4.1 setPassword est indéfini.
    Bonjour,

    J'ai un problème pour la modification du mot de passe sur symfony 5.4.1 alors que je fais un $user = $this->getUser(); il me dit que dit que setPassword est indéfini. Cela ne me renvoie pas d'erreur mais ça fout en l'air mes mots de passe.

    Je vous remercie de votre aide

    Dans ma function modifPassword tout en bas

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
     
    <?php
     
    namespace App\Controller;
     
    use App\Entity\Article;
    use App\Form\ArticleType;
    use App\Form\EditProfileType;
    use Doctrine\ORM\EntityManagerInterface;
    use Doctrine\Persistence\ManagerRegistry;
    use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
    use Symfony\Component\HttpFoundation\Request;
    use Symfony\Component\HttpFoundation\Response;
    use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
    use Symfony\Component\Routing\Annotation\Route;
     
    class UserController extends AbstractController
    {
        private $passwordHasher;
     
        public function __construct(private ManagerRegistry $doctrine, UserPasswordHasherInterface $passwordHasher)
        {
            $this->passwordHasher = $passwordHasher;
        }
     
        #[Route('/user', name: 'user')]
        public function index(): Response
        {
            return $this->render('account/index.html.twig');
        }
     
        #[Route('user/article/ajout', name: 'user_article_ajout')]
        public function ajoutArticle(
                Request $request, 
                EntityManagerInterface $em
                ): Response
        {
     
            $article = new Article;
     
            $form = $this->createForm(ArticleType::class, $article);
     
            $form->handleRequest($request);
     
            if($form->isSubmitted() && $form->isValid()){
     
                $article->setAuthor($this->getUser());
                $article->setPublished(false);
                $article->setPortcategory(false);
     
                $em = $this->doctrine->getManager();
                $em->persist($article);
                $em->flush();
     
                return $this->redirectToRoute('user');
            }
     
            return $this->render('user/article/ajout.html.twig', [
                'form' => $form->createView()
            ]);
        }
     
        #[Route('user/profile/modifier', name: 'user_profile_edit')]
        public function modifProfile(
                Request $request, 
                EntityManagerInterface $em
                ): Response
        {
     
            $user = $this->getUser();
     
            $form = $this->createForm(EditProfileType::class, $user);
     
            $form->handleRequest($request);
     
            if($form->isSubmitted() && $form->isValid()){
     
                $em = $this->doctrine->getManager();
                $em->persist($user);
                $em->flush();
     
                $this->addFlash('profile_message', 'Votre profil a été mis à jour');
                return $this->redirectToRoute('account');
            }
     
            return $this->render('user/edit_profile.html.twig', [
                'form' => $form->createView()
            ]);
        }
     
        #[Route('user/password/modifier', name: 'user_password_edit')]
     
        public function modifPassword(
                Request $request, 
                EntityManagerInterface $em
                )
        {
            if($request->isMethod('POST')){
                $em = $this->doctrine->getManager();
                $user = $this->getUser();
     
                // On vérifie que les 2 password sont bien identiques 
                if($request->request->get('password1') == $request->request->get('password2')){
     
                    $user->setPassword($this->passwordHasher->hashPassword($user, $user->getPassword()));
                    $em->flush();
                    $this->addFlash('password_success', 'Le mot de passe a bien été mis à jour');
     
                    return $this->redirectToRoute('account');
     
                }else{
                    $this->addFlash('password_error', 'Les deux mots de passe ne sont pas identiques');
                }
            }
     
            return $this->render('user/edit_password.html.twig');
        }
    }

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 188
    Par défaut
    Bonjour,

    Au lieu de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $user->setPassword($this->passwordHasher->hashPassword($user, $user->getPassword()));
    J'aurai mis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $user->setPassword($this->passwordHasher->encodePassword($user, $request->request->get('password1')));

    En espérant t'avoir aidé

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 211
    Par défaut
    Je m'excuse de venir un peu tard mais non car encodePassword est déprécié dans cette version de symfony.

Discussions similaires

  1. Mettre un mot de passe sur un partage réseau
    Par maxonman dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 06/10/2005, 10h22
  2. Mot de passe sur disque USB
    Par MJEFF dans le forum Windows XP
    Réponses: 7
    Dernier message: 30/09/2005, 15h39
  3. Mot de Passe sur un bouton de com. pour ouvrir un formulaire
    Par Droopynnette dans le forum Access
    Réponses: 1
    Dernier message: 29/09/2005, 11h38
  4. Pb de mot de passe sur un alias interbase
    Par dolzy dans le forum Bases de données
    Réponses: 4
    Dernier message: 21/09/2005, 22h53
  5. Mot de passe sur une carte à puce!?
    Par Le_Che dans le forum C++Builder
    Réponses: 13
    Dernier message: 20/05/2005, 10h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo