From 0d4b461af7fb6029cf0ee5439a91175997ad6363 Mon Sep 17 00:00:00 2001 From: Olivier PARPAILLON Date: Fri, 22 Nov 2024 10:14:18 +0100 Subject: [PATCH] a lot of ui and flash message. Useless af --- config/packages/framework.yaml | 1 + src/Controller/AdminController.php | 19 +- src/Controller/RegistrationController.php | 3 +- src/Security/LoginFormAuthenticator.php | 23 +- templates/admin/user.html.twig | 244 ++++++++++++---------- templates/main/header.html.twig | 2 +- templates/main/inscription.html.twig | 2 +- 7 files changed, 172 insertions(+), 122 deletions(-) diff --git a/config/packages/framework.yaml b/config/packages/framework.yaml index 28095da..8dc0285 100644 --- a/config/packages/framework.yaml +++ b/config/packages/framework.yaml @@ -11,6 +11,7 @@ framework: handler_id: null cookie_secure: auto cookie_samesite: lax + enabled: true #esi: true #fragments: true diff --git a/src/Controller/AdminController.php b/src/Controller/AdminController.php index e09766e..92512f8 100644 --- a/src/Controller/AdminController.php +++ b/src/Controller/AdminController.php @@ -9,6 +9,7 @@ use App\Entity\Ville; use App\Repository\ParticipantRepository; use App\Repository\SiteRepository; use App\Repository\VilleRepository; +use Doctrine\Common\Collections\Collection; use Doctrine\ORM\EntityManagerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\RedirectResponse; @@ -245,13 +246,22 @@ class AdminController extends AbstractController } } #[Route('/admin/user/export', name: 'participant_export')] - public function export(ParticipantRepository $participantRepository): Response + public function export(ParticipantRepository $participantRepository, Request $request): Response { - $participants = $participantRepository->findAll(); - $csv = "Nom,Prénom,Pseudo,Téléphone,Email,Administrateur,Actif,Rôles,Password\n"; +// $participants = $participantRepository->findAll(); + $userList = $request->request->all('userList'); + if (empty($userList)) { + // Aucun utilisateur sélectionné + $this->addFlash('warning', 'Veuillez sélectionner au moins un utilisateur.'); + return $this->redirectToRoute('app_adminUser'); + } + $participants = $participantRepository->findBy([ + 'idParticipant' => $userList, + ]); + $csv = "Nom,Prénom,Pseudo,Téléphone,Email,Administrateur,Actif,Rôles\n"; foreach ($participants as $participant) { $csv .= sprintf( - "%s,%s,%s,%s,%s,%s,%s,%s,%s\n", + "%s,%s,%s,%s,%s,%s,%s,%s\n", $participant->getNom(), $participant->getPrenom(), $participant->getPseudo(), @@ -260,7 +270,6 @@ class AdminController extends AbstractController $participant->isAdministrateur() ? '1' : '0', $participant->isActif() ? '1' : '0', implode('|', $participant->getRoles()), - $participant->getPassword() ); } $response = new Response($csv); diff --git a/src/Controller/RegistrationController.php b/src/Controller/RegistrationController.php index 6d86c52..9f983df 100644 --- a/src/Controller/RegistrationController.php +++ b/src/Controller/RegistrationController.php @@ -32,6 +32,7 @@ class RegistrationController extends AbstractController $user->setRoles(['ROLE_USER']); $user->setActif(false); $user->setPending(true); + $fullName = $form->get('nom')->getData() . " " . $form->get('prenom')->getData(); if ($user->getRoles() == 'ROLE_ADMIN') { $user->setAdministrateur(true); } else { @@ -48,7 +49,7 @@ class RegistrationController extends AbstractController // do anything else you need here, like send an email - return $this->redirectToRoute('inscription'); + return $this->render('main/inscription.html.twig', ['fullName' => $fullName]); // return $security->login($user, 'form_login', 'main'); } diff --git a/src/Security/LoginFormAuthenticator.php b/src/Security/LoginFormAuthenticator.php index afb23bb..d049c36 100644 --- a/src/Security/LoginFormAuthenticator.php +++ b/src/Security/LoginFormAuthenticator.php @@ -17,16 +17,19 @@ use Symfony\Component\Security\Core\User\UserProviderInterface; use Symfony\Component\Routing\Generator\UrlGeneratorInterface; use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; +use Symfony\Component\HttpFoundation\RequestStack; class LoginFormAuthenticator extends AbstractAuthenticator { private $entityManager; private $urlGenerator; + private RequestStack $requestStack; - public function __construct(EntityManagerInterface $entityManager, UrlGeneratorInterface $urlGenerator) + public function __construct(EntityManagerInterface $entityManager, UrlGeneratorInterface $urlGenerator, RequestStack $requestStack) { $this->entityManager = $entityManager; $this->urlGenerator = $urlGenerator; + $this->requestStack = $requestStack; } public function supports(Request $request): ?bool @@ -46,12 +49,14 @@ class LoginFormAuthenticator extends AbstractAuthenticator 'pseudo' => $identifier ]); - if (!$user || $user->isActif() || $user->getPending()) { - throw new UserNotFoundException('Utilisateur non trouvé'); + if (!$user) { + $this->addFlash('error', 'Utilisateur inexistant'); + throw new AuthenticationException('Identifiant ou mot de passe incorrect.'); } - if (!$user) { - throw new AuthenticationException('Identifiant ou mot de passe incorrect.'); + if ($user->isActif() || $user->getPending()) { + $this->addFlash('error', "L'utilisateur à été désactivé par un administrateur ou est en attente."); + throw new UserNotFoundException('Utilisateur non trouvé'); } // Utilisation de UserBadge au lieu de Participant directement @@ -70,5 +75,13 @@ class LoginFormAuthenticator extends AbstractAuthenticator { return new RedirectResponse($this->urlGenerator->generate('app_login')); } + + private function addFlash(string $type, string $message): void + { + $session = $this->requestStack->getSession(); + if ($session) { + $session->getFlashBag()->add($type, $message); + } + } } diff --git a/templates/admin/user.html.twig b/templates/admin/user.html.twig index f54fb7d..306a7a5 100644 --- a/templates/admin/user.html.twig +++ b/templates/admin/user.html.twig @@ -11,8 +11,13 @@

Gestion des utilisateurs

-
+
+ -
-
-
- - - - - - - - - - - - - - - - - {% for participant in participants %} - {% if not participant.pending %} + + +
+
NomPrénomPseudoSiteTéléphoneEmailAdministrateurActifRôlesActions
+ - - - - - - - - - - + + + + + + + + + + + - {% endif %} - {% else %} - - - - {% endfor %} - -
{{ participant.nom }}{{ participant.prenom }}{{ participant.pseudo }}{{ participant.site ? participant.site.nom : "N/A" }}{{ participant.telephone }}{{ participant.email }} - {{ participant.administrateur ? 'Oui' : 'Non' }} - - {{ participant.actif ? 'Oui' : 'Non' }} - - {{ participant.roles|join(', ') }} - - - Logo - - - Logo - - NomPrénomPseudoSiteTéléphoneEmailAdministrateurActifRôlesActions
Aucun participant trouvé
-
+ + + {% for participant in participants %} + {% if not participant.pending %} + + + {{ participant.nom }} + {{ participant.prenom }} + {{ participant.pseudo }} + {{ participant.site ? participant.site.nom : "N/A" }} + {{ participant.telephone }} + {{ participant.email }} + + {{ participant.administrateur ? 'Oui' : 'Non' }} + + + {{ participant.actif ? '❌' : '✔️' }} + + + {{ participant.roles|join(', ') }} + + + + Logo + + + Logo + + + + {% endif %} + {% else %} + + Aucun participant trouvé + + {% endfor %} + + +
+ {# Tableau user en attente #}
@@ -157,52 +159,76 @@
- -