2017-03-08 4 views
0

My Userモデルは、匿名(例:$user->isAnonymous())のメールが登録されている可能性があります。 api.authミドルウェアを使用することにより、両方の匿名と完全に登録されたユーザーは、与えられたルートにアクセスすることができます。今、私は匿名ユーザーがアクセスできないように、ルートを制限したいです。Dingo APIを使用した「ゲスト」タイプのミドルウェア

(重要「匿名ユーザーは」まだ認証されていることに気づき、匿名が認証されていないを参照していない)

質問は、私は最高のディンゴに適合するように、このロジックを置く場所であり、パッケージ?私は自分のミドルウェアを作成したり、Dingoを拡張したり、Dingoのカスタムプロバイダを作ったりしていますか?

質問ボーナス:私は最高の結果が1つのミドルウェアを持っていると思い(例えばapi.auth)のみ匿名でないているユーザ、および第二ミドルウェア(。例えばauth.all)の認可を承認両方の匿名非匿名のユーザー

答えて

1

私はあなたが

public function handle($request, Closure $next) 
{ 
    if (Auth::check()){ 
     if(!Auth::user()->email) { 
      return redirect('/'); //no email. kick them out! 
     } 
    } 
    return $next($request); 
} 

か何か同様の操作を行うことができミドルウェアについては、この

Route::group(['middleware' => 'auth:api'], function(){ 
    Route::get(...); //all authenticated users can see this 

    Route::group(['middleware' => 'known'], function() { 
     //assuming the middleware name is 'known' in kernel.php 
     Route::get(....); //Only known users (non-anonymous) will get in here 
    }); 
}); 

のようなネストされたミドルウェアのために行くだろう。

+0

ありがとう!間違いなく最も簡単な方法で問題を解決し、シンプルな方法があります。誰かがより良いアイデアを持っているかどうかを確認するために、残りの部分はそのままそこに残します。 – Zoon

関連する問題