Laravel 5

Login et redirection en fonction de la page

  • Avatar de InsaneBobby
    Membre depuis :
    04/10/2018
    Messages :
    11

    Bonjour,

    Actuellement en train de developper une application sous laravel. J'ai un besoin spécique concerant l''authentification.
    En gros j'ai une table User avec 2 espaces (Front et Back) et mis en place 2 formulaires de connexion.

    La connexion côté Front redirige vers une page profil et la connexion Back vers un dashboard admin.

    Quelle est la meilleure méthode pour gérer ce type de cas sans être obligé de dupliquer tous le systèmes d'authentification ? Est ce que un midleware pourrait répondre à ce besoin ou il faut que je modifie RedirectIfAuthenticated avec la mise en place d'un contexte qui indiquerai d'ou vient le login ?

  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    2178

    Salut,

    Je pense que le plus simple est de créer une méthode redirectTo() dans LoginController.

    Par exemple :

    protected function redirectTo()
    {
    if(request()->has('front') {
    return '/profile';
    }
    return '/dashboard';
    }
  • Avatar de InsaneBobby
    Membre depuis :
    04/10/2018
    Messages :
    11

    Salut et merci pour ta réponse cela fonctionne.

    En revanche, j'ai modifié le LoginController en y intégrant Socialite. Le login par Facebook n'est possible que via le front.

    /
    Redirect the user to Social Network authentication page.

    @return \Illuminate\Http\Response
    /
    public function redirectToProvider($social_service)
    {
    return Socialite::driver($social_service)->redirect();
    }

    /

    Obtain the user information from Social Network.

    @return \Illuminate\Http\Response
    /
    public function handleProviderCallback($social_service)
    {

    $SocialUser = Socialite::driver($social_service)->user();
    $CheckUser = User::where('email',$SocialUser->getEmail())->first();

    if ($CheckUser){
    $CheckUser->{$social_service.'_id'} = $SocialUser->getId();
    $CheckUser->avatar = (empty($CheckUser->avatar )) ? $SocialUser->getAvatar() : $CheckUser->avatar;
    $CheckUser->save();
    Auth::login($CheckUser);
    }
    else {
    $NewUser = New User();
    $NewUser->nickname = (!empty($SocialUser->getNickname())) ? $SocialUser->getNickname() : $SocialUser->getName();
    $NewUser->password = Hash::make(str_random(8));
    $NewUser->email = $SocialUser->getEmail();
    $NewUser->avatar = $SocialUser->getAvatar();
    $NewUser->{$social_service.'_id'} = $SocialUser->getId();
    $NewUser->save();
    Auth::login($NewUser);

    }

    }

    Cela voudrait dire qu'il faut que je change également la fonction redirectToProvider ou dois je ajouter un comportement dans la fonction handleProviderCallback ?

    Merci pour ton aide ;-)

  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    2178

    Là je ne sais pas, je n'ai jamais utilisé Socialite encore...

  • Avatar de InsaneBobby
    Membre depuis :
    04/10/2018
    Messages :
    11

    Salut,

    Merci quand même , finalement j'ai ajouté un contexte dans mes controllers du Back, et je me sers de çà pour gérer les bonnes redirections.

Vous ne pouvez pas répondre à ce sujet.