src/Controller/DefaultController.php line 25

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Model\ChangePassword;
  4. use App\Form\ChangePasswordType;
  5. use App\Form\UserType;
  6. use App\Repository\UserRepository;
  7. use Doctrine\Persistence\ManagerRegistry;
  8. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  9. use Symfony\Component\HttpFoundation\RedirectResponse;
  10. use Symfony\Component\HttpFoundation\Request;
  11. use Symfony\Component\HttpFoundation\Response;
  12. use Symfony\Component\Routing\Annotation\Route;
  13. class DefaultController extends AbstractController
  14. {
  15.     /**
  16.      * Permet de diriger l'utilisateur vers la bonne page lors de la connexion
  17.      *
  18.      * @Route("/", name="home")
  19.      * @return RedirectResponse|Response
  20.      */
  21.     public function index(): RedirectResponse|Response
  22.     {
  23.         return $this->redirectToRoute('appel_a_projet_index');
  24.     }
  25.     /**
  26.      * @Route("/profil", name="profil")
  27.      *
  28.      * @return Response
  29.      */
  30.     public function profil(UserRepository $userRepository):Response
  31.     {
  32.         return $this->render('user/profile.html.twig', [
  33.             'user' => $userRepository->find($this->getUser()->getId())
  34.         ]);
  35.     }
  36.     /**
  37.      * @Route("/profil/edit", name="edit_profil", methods={"GET", "POST"})
  38.      *
  39.      * @param UserRepository $userRepository
  40.      * @return Response
  41.      */
  42.     public function editProfil(Request $requestUserRepository $userRepositoryManagerRegistry $doctrine): Response
  43.     {
  44.         if ($this->isGranted('ROLE_EXPERT')) {
  45.             return $this->createAccessDeniedException();
  46.         }
  47.         $user $userRepository->find($this->getUser()->getId());
  48.         $form $this->createForm(UserType::class, $user);
  49.         $form->handleRequest($request);
  50.         if ($form->isSubmitted() && $form->isValid()) {
  51.             // mise à jour du nom d'utilisateur si nécessaire
  52.             if ($user->getUsername() !== $user->getEmail()) {
  53.                 $user->setUsername($user->getEmail());
  54.             }
  55.             $doctrine->getManager()->flush();
  56.             $this->addFlash('success''Profil modifié avec succès.');
  57.             return $this->redirectToRoute('profil', [], Response::HTTP_SEE_OTHER);
  58.         }
  59.         return $this->renderForm('user/edit.html.twig', [
  60.             'user' => $user,
  61.             'form' => $form,
  62.         ]);
  63.     }
  64.     /**
  65.      * @Route("/profil/change-password", name="profil_change_password", methods={"GET", "POST"})
  66.      *
  67.      * @param UserRepository $userRepository
  68.      * @return Response
  69.      */
  70.     public function changePassword(Request $requestUserRepository $userRepositoryManagerRegistry $doctrine): Response
  71.     {
  72.         $user $userRepository->find($this->getUser()->getId());
  73.         $changePassword = new ChangePassword();
  74.         $form $this->createForm(ChangePasswordType::class, $changePassword);
  75.         $form->handleRequest($request);
  76.         if ($form->isSubmitted() && $form->isValid()) {
  77.             // mise à jour du nom d'utilisateur si nécessaire
  78.             $user->setRawPassword($changePassword->getNewPassword());
  79.             $doctrine->getManager()->flush();
  80.             $this->addFlash('success''Mot de passe modifié avec succès.');
  81.             return $this->redirectToRoute('profil', [], Response::HTTP_SEE_OTHER);
  82.         }
  83.         return $this->renderForm('user/edit_password.html.twig', [
  84.             'user' => $user,
  85.             'form' => $form,
  86.         ]);
  87.     }
  88. }