2017-09-29 2 views
0

Dans Laravel Passport, après avoir obtenu le jeton d'accès du serveur, capable d'accéder aux informations utilisateur du client. Maintenant, je suis coincé avec la façon de le rediriger vers le tableau de bord client?Laravel 5.4 Passeport - Comment rediriger vers le tableau de bord client après avoir obtenu des informations d'utilisateur à partir du jeton d'accès

Voici ma fonction de rappel:

Route::get('/callback', function (Illuminate\Http\Request $request) { 
    $http = new GuzzleHttp\Client; 

    $response = $http->post('http://localhost.server:8080/oauth/token', [ 
     'form_params' => [ 
      /* Auth code grant*/ 
      'client_id' => '<client_id>', 
      'client_secret' => '<client_secret>', 
      'grant_type' => 'authorization_code', 
      'redirect_uri' => 'http://localhost.client:8000/callback', 
      'code' => $request->code, 
     ], 
    ]); 

     $auth_grant = json_decode((string) $response->getBody(), true); 
     $token_type = $auth_grant['token_type']; 
     $access_token = $auth_grant['access_token']; 

     $user_auth = $http->request('GET', 'http://localhost:8080/api/user', [ 
      'headers' => [ 
       'Accept' => 'application/json', 
       'Content-Type' => 'application/json', 
       'Authorization' => $token_type.' '.$access_token, 
      ], 
     ]); 
     $usrAuth = json_decode((string) $user_auth->getBody(), true); 
}); 

Remarque: Avant la redirection vers Dashboard, souhaitez stocker les informations de l'utilisateur dans le Auth et veut plus tard de vérifier tous les parcours à travers le middleware VarifyUser. Cela authentifiant l'utilisateur à travers Auth::check.

Route::group(['middleware' => ['verify_user', 'language']], function(){ 
// If you want to check loggining user, have to use 'verify_user' middleware 
    route::group(['namespace' => 'Index'], function(){ 
    Route::get('/index', '[email protected]'); 
    }); 

    route::group(['namespace' => 'Group'], function(){ 
    // Group page 
    Route::get('/group-registration', '[email protected]'); 

    // Register group 
    Route::post('/registerGroup', '[email protected]'); 
    }); 
} 

VerifyUser middleware:

<?php 

namespace App\Http\Middleware; 

// Requirement 
use Illuminate\Support\Facades\Auth; 
use Closure; 

class VerifyUser 
{ 
    /** 
    * Handle an incoming request. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @param \Closure $next 
    * @return mixed 
    */ 
    public function handle($request, Closure $next) 
    { 
     if(!Auth::check()){ 
     return redirect('/login'); 
     } 

     return $next($request); 
    } 
} 
+0

vous pouvez utiliser redirect() -> à() à la fin –

+0

Merci. Mais en fait, avant la redirection, je veux stocker les informations de l'utilisateur dans '' Auth'' et plus tard vouloir authentifier l'utilisateur par '' Auth :: check''. – PS1212

Répondre

0

Ajouter réponse redirigée à la fin des méthodes

Route::get('/callback', function (Illuminate\Http\Request $request) { 
    // callback handle 
    .... 

    // here, add this to redirect after callback success 
    return redirect('dashboard'); 
}); 
+0

Merci. Mais en fait, avant de rediriger vers le tableau de bord, je veux stocker les informations de l'utilisateur dans Auth et plus tard, je veux vérifier tous les autres itinéraires via le middleware VerifyUser. Cela authentifiant l'utilisateur via Auth :: check. – PS1212

+0

Bien sûr, c'est très possible. J'ai créé l'esprit pour plus de détails code https://gist.github.com/rslhdyt/cfdee2f3645691e8c2ce92927fcfb876 – rslhdyt

+0

Merci pour votre réponse. Mais vous utilisez la socialite. Comment le faire dans Passport? – PS1212