src/Controller/UserController.php line 64

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\User;
  4. use App\Form\UserType;
  5. use App\Repository\UserRepository;
  6. use DateTimeZone;
  7. use Exception;
  8. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Symfony\Component\HttpFoundation\Response;
  11. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  12. use Symfony\Component\Routing\Annotation\Route;
  13. /**
  14.  * @Route("/user")
  15.  */
  16. class UserController extends AbstractController
  17. {
  18.     /**
  19.      * @Route("/", name="app_user_index", methods={"GET"})
  20.      */
  21.     public function index(UserRepository $userRepository): Response
  22.     {
  23.         return $this->render('user/index.html.twig', [
  24.             'users' => $userRepository->findAll(),
  25.         ]);
  26.     }
  27.     /**
  28.      * @Route("/new", name="app_user_new", methods={"GET", "POST"})
  29.      * @throws Exception
  30.      */
  31.     public function new(Request $requestUserRepository $userRepositoryUserPasswordHasherInterface $userPasswordHasher): Response
  32.     {
  33.         $user = new User();
  34.         $form $this->createForm(UserType::class, $user);
  35.         $form->handleRequest($request);
  36.         if ($form->isSubmitted() && $form->isValid()) {
  37.             $user->setPassword(
  38.                 $userPasswordHasher->hashPassword(
  39.                     $user,
  40.                     $form->get('password')->getData()
  41.                 )
  42.             );
  43.             $user->setCreatedAt(new \DateTimeImmutable(null, new DateTimeZone('Europe/Paris')));
  44.             $userRepository->add($user);
  45.             return $this->redirectToRoute('app_user_index', [], Response::HTTP_SEE_OTHER);
  46.         }
  47.         return $this->renderForm('user/new.html.twig', [
  48.             'user' => $user,
  49.             'form' => $form,
  50.         ]);
  51.     }
  52.     /**
  53.      * @Route("/{id}", name="app_user_show", methods={"GET"})
  54.      */
  55.     public function show(User $user): Response
  56.     {
  57.         if ($this->getUser() !== $user){
  58.             return  $this->redirectToRoute('app_home');
  59.         }
  60.         return $this->render('user/show.html.twig', [
  61.             'user' => $user,
  62.         ]);
  63.     }
  64.     /**
  65.      * @Route("/{id}/edit", name="app_user_edit", methods={"GET", "POST"})
  66.      * @throws Exception
  67.      */
  68.     public function edit(Request $requestUser $userUserRepository $userRepositoryUserPasswordHasherInterface $userPasswordHasher): Response
  69.     {
  70.         $form $this->createForm(UserType::class, $user);
  71.         $form->handleRequest($request);
  72.         if ($form->isSubmitted() && $form->isValid()) {
  73.             $user->setPassword(
  74.                 $userPasswordHasher->hashPassword(
  75.                     $user,
  76.                     $form->get('password')->getData()
  77.                 )
  78.             );
  79.             $user->setCreatedAt(new \DateTimeImmutable(null, new DateTimeZone('Europe/Paris')));
  80.             $userRepository->add($user);
  81.             return $this->redirectToRoute('app_user_index', [], Response::HTTP_SEE_OTHER);
  82.         }
  83.         return $this->renderForm('user/edit.html.twig', [
  84.             'user' => $user,
  85.             'form' => $form,
  86.         ]);
  87.     }
  88.     /**
  89.      * @Route("/{id}", name="app_user_delete", methods={"POST"})
  90.      */
  91.     public function delete(Request $requestUser $userUserRepository $userRepository): Response
  92.     {
  93.         if ($this->isCsrfTokenValid('delete'.$user->getId(), $request->request->get('_token'))) {
  94.             $userRepository->remove($user);
  95.         }
  96.         return $this->redirectToRoute('app_user_index', [], Response::HTTP_SEE_OTHER);
  97.     }
  98. }