<?php
namespace App\Controller;
use Symfony\Component\Security\Core\Security;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
class SecurityController extends AbstractController
{
#[Route(path: '/connexion', name: 'app_login')]
public function login(AuthenticationUtils $authenticationUtils, Security $security): Response
{
// Si l'utilisateur est déjà connecté, le rediriger selon son rôle
if ($security->getUser()) {
// Ordre de priorité pour la redirection
if ($security->isGranted('ROLE_SUPER_ADMIN') || $security->isGranted('ROLE_ADMIN')) {
return $this->redirectToRoute('app_dashboard');
} elseif ($security->isGranted('ROLE_COMPTABLE')) {
return $this->redirectToRoute('app_comptabilite_index');
} elseif ($security->isGranted('ROLE_RH')) {
return $this->redirectToRoute('app_rh_dashboard');
} elseif ($security->isGranted('ROLE_CAISSIER')) {
return $this->redirectToRoute('app_caisse_dashboard');
} elseif ($security->isGranted('ROLE_MAGASINIER')) {
return $this->redirectToRoute('app_produit_index');
} elseif ($security->isGranted('ROLE_VENDEUR')) {
return $this->redirectToRoute('app_panier');
} elseif ($security->isGranted('ROLE_LIVREUR')) {
return $this->redirectToRoute('app_livreur_dashboard');
}
}
// Récupérer l'erreur de connexion s'il y en a une
$error = $authenticationUtils->getLastAuthenticationError();
// Dernier nom d'utilisateur saisi par l'utilisateur
$lastUsername = $authenticationUtils->getLastUsername();
return $this->render('security/login.html.twig', [
'last_username' => $lastUsername,
'error' => $error
]);
}
#[Route(path: '/logout', name: 'app_logout')]
public function logout(): void
{
throw new \LogicException('Cette méthode peut rester vide - elle sera interceptée par la clé de déconnexion de votre firewall.');
}
}