src/Controller/Admin/UserController.php line 20

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Admin;
  3. use App\Entity\User;
  4. use App\Form\UserEditType;
  5. use App\Form\UserType;
  6. use App\Repository\UserRepository;
  7. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\HttpFoundation\Response;
  10. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  11. use Symfony\Component\Routing\Annotation\Route;
  12. use Symfony\Component\Validator\Validator\ValidatorInterface;
  13. #[Route('admin/user')]
  14. class UserController extends AbstractController
  15. {
  16.     #[Route('/'name'user_index'methods: ['GET'])]
  17.     public function index(
  18.         UserRepository $userRepository
  19.     ): Response
  20.     {
  21.         return $this->render('admin/user/index.html.twig', [
  22.             'users' => $userRepository->findAll(),
  23.         ]);
  24.     }
  25.     #[Route('/new'name'user_new'methods: ['GET''POST'])]
  26.     public function new(
  27.         Request $request,
  28.         UserRepository $userRepository,
  29.         UserPasswordHasherInterface $passwordHasher,
  30.         ValidatorInterface $validator
  31.     ): Response
  32.     {
  33.         $user = new User();
  34.         $form $this->createForm(UserType::class, $user);
  35.         $form->handleRequest($request);
  36.         if ($form->isSubmitted() && $form->isValid()) {
  37.             $userPassword $user->getPassword();
  38.             $hashedPassword $passwordHasher->hashPassword(
  39.                 $user,
  40.                 $userPassword
  41.             );
  42.             $user->setPassword($hashedPassword);
  43.             $userRepository->add($usertrue);
  44.             return $this->redirectToRoute('user_index', [], Response::HTTP_SEE_OTHER);
  45.         }
  46.         return $this->renderForm('admin/user/new.html.twig', [
  47.             'user' => $user,
  48.             'form' => $form,
  49.         ]);
  50.     }
  51.     #[Route('/{id}'name'user_show'methods: ['GET'])]
  52.     public function show(
  53.         User $user
  54.     ): Response
  55.     {
  56.         return $this->render('admin/user/show.html.twig', [
  57.             'user' => $user,
  58.         ]);
  59.     }
  60.     #[Route('/{id}/edit'name'user_edit'methods: ['GET''POST'])]
  61.     public function edit(
  62.         Request $request,
  63.         User $userUserRepository $userRepository,
  64.         UserPasswordHasherInterface $passwordHasher
  65.     ): Response
  66.     {
  67.         $oldPassword $user->getPassword();
  68.         $user->setPassword('');
  69.         $form $this->createForm(UserEditType::class, $user);
  70.         if ($request->isMethod('POST')) {
  71.             $requestArray $request->request->all();
  72.             if($requestArray['user_edit']['password']['first'] == "" || $requestArray['user_edit']['password']['first'] == null) {
  73.                 $requestArray['user_edit']['password']['first'] = $oldPassword;
  74.                 $requestArray['user_edit']['password']['second'] = $oldPassword;
  75.                 $request->request->replace($requestArray);
  76.             }
  77.         }
  78.         $form->handleRequest($request);
  79.         if ($form->isSubmitted() && $form->isValid()) {
  80.             $userPassword $user->getPassword();
  81.             if ($user->getPassword() != $oldPassword) {
  82.                 $hashedPassword $passwordHasher->hashPassword(
  83.                     $user,
  84.                     $userPassword
  85.                 );
  86.                 $user->setPassword($hashedPassword);
  87.             }
  88.             $userRepository->add($usertrue);
  89.             return $this->redirectToRoute('user_index', [], Response::HTTP_SEE_OTHER);
  90.         }
  91.         return $this->renderForm('admin/user/edit.html.twig', [
  92.             'user' => $user,
  93.             'form' => $form,
  94.         ]);
  95.     }
  96.     #[Route('/{id}'name'user_delete'methods: ['POST'])]
  97.     public function delete(
  98.         Request $request,
  99.         User $user,
  100.         UserRepository $userRepository
  101.     ): Response
  102.     {
  103.         if ($this->isCsrfTokenValid('delete'.$user->getId(), $request->request->get('_token'))) {
  104.             $userRepository->remove($usertrue);
  105.         }
  106.         return $this->redirectToRoute('user_index', [], Response::HTTP_SEE_OTHER);
  107.     }
  108. }