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 @@
| Nom | -Prénom | -Pseudo | -Site | -Téléphone | -Administrateur | -Actif | -Rôles | -Actions | -
|---|