2017-09-05 13 views
0

JavaScriptを使用して、ユーザーのfacebookアカウントにアクセストークンを受け取っています。Laravel:Sociailite Authのミドルウェアを作成する

トークンを取得すると、トークンを使用してサーバーに要求を送信し、Socialiteを使用しているユーザーに関する情報を取得します。

$user = Socialite::driver('facebook')->userFromToken($request->token); 
     return $user->getName(); 

今、私はグループのAPIにしようとしているが、ミドルウェアの目的は、ユーザーがために認証されているかどうかを確認することです

...など、認証されたユーザだけが、たとえば/my-profileため、my-dataを作ることができることを呼び出しますAPIのグループではなく、すべてのメソッドに同じ条件を入力して呼び出します。

if ($user->getName()) { 
...Execute... 
} 

私はautehnticatedユーザーのためのルートのリストについては、以下の条件を置くことができますどのように任意のアイデア?

私の条件は簡単です:

$user = Socialite::driver('facebook')->userFromToken($request->token); 
if ($user->getName()) { 
return true; 
} 
else { return false; } 
+0

チェックを役に立てば幸い – Sletheren

答えて

0

さて、 まずミドルウェアを作成します。その後

php artisan make:middleware name_of_your_middleware 

を、作成されたミドルウェア・ファイル内:

public function handle($request, Closure $next) 
    { 
     $user = Socialite::driver('facebook')->userFromToken($request->token); 

     if ($user->getName()) { 
      return $next($request); 
     } 
     return redirect('some_other_route_for_error');    
    } 

次に、ミドルウェアをのルートmiddelwareに割り当てますあなたのルートファイルで

protected $routeMiddleware = [ 
    //....... 
    'name_of_your_middleware' => \Illuminate\Auth\Middleware\Authenticate::class, 
]; 

(api.php):

Route::group(['middleware'=>['name_of_your_middleware']],function(){ 
    //your routes 
}); 

が、それは以下の答え:)

関連する問題