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