Bonjour, j'ai une application symfony 6 avec easyAdmin et je souhaite qu'après le login, les users 'ROLE_USER' soit redirect sur la page /home et les users 'ROLE_ADMIN' sur la page /admin mais je ne trouve pas comment faire.

mon Login controller :

"namespace App\Controller;

use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;

class LoginController extends BaseController
{
/**

  • @Route("/", name="login")
    */
    public function index(AuthenticationUtils $authenticationUtils): Response
    {

    // get the login error if there is one
    $error = $authenticationUtils->getLastAuthenticationError();
    
    // last username entered by the user
    $lastUsername = $authenticationUtils->getLastUsername();
    
        return $this->render('login/index.html.twig', [
            'lastUsername' => $lastUsername,
            'error'         => $error,
         ]);

    }
    }"

pour l'instant je redirect sur la page /admin depuis le template et j'ai bloqué l'accès à la page /admin aux 'ROLE_USER' dans mon security.yaml. Donc les users n'ayant pas les droits sont redirect par default sur la page home mais l'url affiche quand même '/admin'...
Y'a t il une 'bonne' manière de faire ?

2 réponses


Bonjour,

il y a différentes façons de gérer ça, mais si tu as un seul mode d'authentification, le simple serait de faire ça dans l'authenticator (généré avec le make:auth) dans la méthode 'onAuthenticationSuccess'.

Mada
Auteur

Bonjour gillesr,

Le problème c'est que je n'ai pas utilisé le make:auth...
J'ai fais un make:user puis un make:controller LoginController qui me sert juste à renvoyer le form et les erreurs de login.