ninecompta/src/Controller/UserController.php

115 lines
3.8 KiB
PHP
Raw Normal View History

2024-11-23 16:06:38 +01:00
<?php
namespace App\Controller;
2024-11-26 20:42:13 +01:00
use App\Entity\User;
use App\Form\UserType;
use App\Repository\UserRepository;
use Doctrine\ORM\EntityManagerInterface;
2024-11-23 16:06:38 +01:00
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
2024-11-26 20:42:13 +01:00
use Symfony\Component\HttpFoundation\Request;
2024-11-23 16:06:38 +01:00
use Symfony\Component\HttpFoundation\Response;
2024-11-26 20:42:13 +01:00
use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
2024-11-23 16:06:38 +01:00
use Symfony\Component\Routing\Attribute\Route;
class UserController extends AbstractController
{
#[Route('/admin/user', name: 'app_admin_user')]
2024-11-26 20:42:13 +01:00
public function list(UserRepository $userRepository): Response
2024-11-23 16:06:38 +01:00
{
2024-11-26 20:42:13 +01:00
$users = $userRepository->findAll();
2024-11-23 16:06:38 +01:00
return $this->render('user/list.html.twig', [
'usemenu' => true,
'usesidebar' => true,
'title' => 'Liste des Utilisateurs',
'routesubmit' => 'app_admin_user_submit',
'routeupdate' => 'app_admin_user_update',
2024-11-26 20:42:13 +01:00
'users' => $users,
2024-11-23 16:06:38 +01:00
]);
}
2024-11-26 20:42:13 +01:00
#[Route('/admin/user/submit', name: 'app_admin_user_submit')]
public function submit(Request $request, UserPasswordHasherInterface $passwordHasher, EntityManagerInterface $em): Response
2024-11-23 16:06:38 +01:00
{
2024-11-26 20:42:13 +01:00
$user = new User();
$form = $this->createForm(UserType::class, $user, ['mode' => 'submit']);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$user = $form->getData();
$hashedPassword = $passwordHasher->hashPassword(
$user,
$user->getPassword()
);
$user->setPassword($hashedPassword);
$em->persist($user);
$em->flush();
return $this->redirectToRoute('app_admin_user');
}
2024-11-23 16:06:38 +01:00
return $this->render('user/edit.html.twig', [
2024-11-26 20:42:13 +01:00
'usemenu' => true,
'usesidebar' => true,
2024-11-23 16:06:38 +01:00
'title' => 'Création Utilisateur',
'routecancel' => 'app_admin_user',
'routedelete' => 'app_admin_user_delete',
2024-11-26 20:42:13 +01:00
'mode' => 'submit',
'form' => $form,
2024-11-23 16:06:38 +01:00
]);
}
2024-11-26 20:42:13 +01:00
#[Route('/admin/user/update/{id}', name: 'app_admin_user_update')]
public function update(int $id, Request $request, UserPasswordHasherInterface $passwordHasher, EntityManagerInterface $em): Response
2024-11-23 16:06:38 +01:00
{
2024-11-26 20:42:13 +01:00
$user = $em->getRepository(User::class)->find($id);
if (!$user) {
return $this->redirectToRoute('app_admin_user');
}
2024-11-26 21:37:44 +01:00
$hashedPassword = $user->getPassword();
2024-12-06 08:09:07 +01:00
$user->setPassword('');
2024-11-26 20:42:13 +01:00
$form = $this->createForm(UserType::class, $user, ['mode' => 'update']);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$user = $form->getData();
2024-12-06 08:09:07 +01:00
if ($user->getPassword()) {
2024-11-26 21:37:44 +01:00
$hashedPassword = $passwordHasher->hashPassword(
$user,
$user->getPassword()
);
}
2024-11-26 20:42:13 +01:00
$user->setPassword($hashedPassword);
$em->persist($user);
$em->flush();
2024-11-23 16:06:38 +01:00
2024-11-26 20:42:13 +01:00
return $this->redirectToRoute('app_admin_user');
}
2024-11-23 16:06:38 +01:00
2024-11-26 20:42:13 +01:00
return $this->render('user/edit.html.twig', [
'usemenu' => true,
'usesidebar' => true,
2024-12-06 08:09:07 +01:00
'title' => 'Modification Utilisateur = '.$user->getUsername(),
2024-11-26 20:42:13 +01:00
'routecancel' => 'app_admin_user',
'routedelete' => 'app_admin_user_delete',
'mode' => 'update',
'form' => $form,
]);
2024-11-23 16:06:38 +01:00
}
2024-12-06 08:09:07 +01:00
#[Route('/admin/user/delete/{id}', name: 'app_admin_user_delete')]
public function delete(int $id): Response
2024-11-23 16:06:38 +01:00
{
2024-11-26 20:43:55 +01:00
return $this->redirectToRoute('app_admin_user');
2024-11-26 20:42:13 +01:00
}
2024-11-23 16:06:38 +01:00
2024-11-26 20:42:13 +01:00
#[Route('/user', name: 'app_user_profil')]
public function profil(): Response
{
2024-11-26 20:43:55 +01:00
return $this->redirectToRoute('app_home');
2024-11-23 16:06:38 +01:00
}
}