Laravel 5

Problème lors d'une reconnexion

Avatar de Hugo
Hugo

Bonjour,

Dans mon projet un utilisateur possède un statut (user, management, admin). J'ai une erreur lorsque j'essaye de me reconnecter avec un utilisateur "admin" (2ème connexion).

Je suis obligé de supprimer mes cookies afin de pouvoir me reconnecter avec cette utilisateur. Mon erreur : "La page n’est pas redirigée correctement Firefox a détecté que le serveur redirige la demande pour cette adresse d’une manière qui n’aboutira pas. La cause de ce problème peut être la désactivation ou le refus des cookies."

J'ai essayé avec d'autre navigateur mais même problème.

Voici ma fonction de redirection :

 `    //Redirige vers la page en fonction du statut de l'utilisateur qui se connecte
    protected function redirectTo()
    {
      if (Auth::user()->statut=='user') {
        return '/';
      } elseif (Auth::user()->statut=='management'){
        return '/management';
      }elseif (Auth::user()->statut=='admin'){
        return '/admin';
      }
    }`

Mon middleware "admin" :

public function handle($request, Closure $next)
{
    if ($this->auth->user()->statut != 'admin') {
      if ($this->auth->user()->statut = 'user') {
        return redirect()->route('user');
      }elseif ($this->auth->user()->statut = 'management') {
        return redirect()->route('management');
      }
}
return $next($request);
}

Merci de votre futur aide !

Posté il y a 7 mois
Avatar de CinquièmeDimension
CinquièmeDimension

Salut,

Dans ton middleware admin j'aurai mit un switch mais c'est un détail (dans ta redirection aussi, remarque).

Attention également à bien mettre des == dans tes tests du même middleware. C'est peut-être ça qui cause des erreurs.

Posté il y a 7 mois
Avatar de Hugo
Hugo

J'ai changé mes middleware avec des == et ça marche niquel ! C'est vrai que les switch sont plus logique, je penserai à faire ça les prochaines fois.

Est il possible d'avoir une explication ? Car ma première connexion marchait quand même très bien.

En tout cas merci encore !

Posté il y a 7 mois
Avatar de CinquièmeDimension
CinquièmeDimension

Ben en mettant des simple = le résultat sera toujours true (je pense). Vu que ce n'est pas une vérification mais une déclaration.

Donc, en gros, tu lui dit:

$this->auth->user()->statut = 'user' et t'as pas le choix!

Donc vu qu'il a pas le choix, ben il dit TRUE

Donc, pour rappel :

  • = déclaration
  • == test
  • === test avec type
Posté il y a 7 mois
Avatar de Hugo
Hugo

Ok parfait je comprend mieux ! Merci Beaucoup

Posté il y a 7 mois

Vous ne pouvez pas répondre à ce sujet.