src/Controller/UserController.php line 63

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 Doctrine\ORM\EntityManagerInterface;
  7. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  8. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Symfony\Component\HttpFoundation\Response;
  11. use Symfony\Component\Routing\Annotation\Route;
  12. use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  13. #[Route('/user')]
  14. class UserController extends AbstractController
  15. {
  16.     #[Route('/'name'app_user_index'methods: ['GET'])]
  17.     public function index(UserRepository $userRepository): Response
  18.     {
  19.         return $this->render('user/index.html.twig', [
  20.             'users' => $userRepository->findAll(),
  21.         ]);
  22.     }
  23.     /**
  24.     * @IsGranted("ROLE_ADMIN")
  25.     */
  26.     #[Route('/new'name'app_user_new'methods: ['GET''POST'])]
  27.     public function new(Request $requestEntityManagerInterface $entityManagerUserPasswordHasherInterface $userPasswordHasher): Response
  28.     {
  29.         $user = new User();
  30.         $form $this->createForm(UserType::class, $user);
  31.         $form->handleRequest($request);
  32.         if ($form->isSubmitted() && $form->isValid()) {
  33.             $password$form->get('password')->getData();
  34.             $user->setPassword($userPasswordHasher->hashPassword($user$password));
  35.             $entityManager->persist($user);
  36.             $entityManager->flush();
  37.             return $this->redirectToRoute('app_user_index', [], Response::HTTP_SEE_OTHER);
  38.         }
  39.         return $this->renderForm('user/new.html.twig', [
  40.             'user' => $user,
  41.             'form' => $form,
  42.         ]);
  43.     }
  44.     #[Route('/{id}'name'app_user_show'methods: ['GET'])]
  45.     public function show(User $user): Response
  46.     {
  47.         return $this->render('user/show.html.twig', [
  48.             'user' => $user,
  49.         ]);
  50.     }
  51.     #[Route('/{id}/edit'name'app_user_edit'methods: ['GET''POST'])]
  52.     public function edit(Request $requestUser $userEntityManagerInterface $entityManager): Response
  53.     {
  54.         $form $this->createForm(UserType::class, $user);
  55.         $form->handleRequest($request);
  56.         if ($form->isSubmitted() && $form->isValid()) {
  57.             $entityManager->flush();
  58.             return $this->redirectToRoute('app_user_index', [], Response::HTTP_SEE_OTHER);
  59.         }
  60.         return $this->renderForm('user/edit.html.twig', [
  61.             'user' => $user,
  62.             'form' => $form,
  63.         ]);
  64.     }
  65.     #[Route('/{id}'name'app_user_delete'methods: ['POST'])]
  66.     public function delete(Request $requestUser $userEntityManagerInterface $entityManager): Response
  67.     {
  68.         if ($this->isCsrfTokenValid('delete'.$user->getId(), $request->request->get('_token'))) {
  69.             $entityManager->remove($user);
  70.             $entityManager->flush();
  71.         }
  72.         return $this->redirectToRoute('app_user_index', [], Response::HTTP_SEE_OTHER);
  73.     }
  74. }