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