Symfony 5

kelkun89
6

Bonsoir tout le monde,

Je suis actuellement sur mon premier projet et je suis bloquer sur la redirection apres le login.

J'aimerais que les user (ROLE_USER) soit rediriger vers la page Y et que l'Admin (ROLE_ADMIN) soit rediriger sur la page x.

Je ne sait pas comment modifier la fonction en question, je la joint

 public function onAuthenticationSuccess(Request $request, TokenInterface $token, $providerKey)
    {
        if ($targetPath = $this->getTargetPath($request->getSession(), $providerKey)) {
            return new RedirectResponse($targetPath);
        }

        return new RedirectResponse($this->urlGenerator->generate('drivers_login'));
        throw new \Exception('TODO: provide a valid redirect inside '.__FILE__);

       
    }

    protected function getLoginUrl()
    {
        return $this->urlGenerator->generate('app_login');
    }

Actuellement ils sont tout les 2 redirigé sur la meme page.

Merci d'avance

5 Réponses

Nouvelle-Techno.fr
17

Bonjour,

Je mettrais quelquechose du style

 public function onAuthenticationSuccess(Request $request, TokenInterface $token, $providerKey)
    {
        // if ($targetPath = $this->getTargetPath($request->getSession(), $providerKey)) {
        //    return new RedirectResponse($targetPath);
        // }

        if(is_granted('ROLE_ADMIN'){
            return $this->redirectToRoute("route admin");
        }
        if(is_granted('ROLE_USER'){
            return $this->redirectToRoute("route user");
        }

        return new RedirectResponse($this->urlGenerator->generate('drivers_login'));
        throw new \Exception('TODO: provide a valid redirect inside '.__FILE__);

       
    }

 

kelkun89
6

Merci mais cela me fait une erreur de syntaxe

Nouvelle-Techno.fr
17

C'est à dire ?

Nouvelle-Techno.fr
17

Attends, j'ai fait une erreur, c'est comme ça

if($this->isGranted('ROLE_ADMIN'))

 

kelkun89
6

Merci du coups de pouce effectivement la syntaxe est accepte mais il me retoune une erreur de methode

Attempted to call an undefined method named "isGranted" of class "App\Security\DriversAuthenticator".

il faudrait peu etre une fonction qui detecte le role de l'utilisateur.

 

Répondre

Vous devez être inscrit.e et connecté.e pour répondre

M'inscrire Me connecter

Publicité