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