2016-04-30 17 views
0

ユーザーが現在ログインしていてスーパー管理者であることを確認するミドルウェアを作成しています。ミドルウェアでは、どのように現在ログインしているユーザーを取得できますか?

これは私のミドルウェアコードです。

namespace App\Http\Middleware; 

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

class CheckAdmin 
{ 
    /** 
    * Handle an incoming request. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @param \Closure $next 
    * @param string|null $guard 
    * @return mixed 
    */ 
    public function handle($request, Closure $next, $guard = null) 
    { 
     if (Auth::guard($guard)->guest()) { 

      // also need to check a field of user 

      return redirect()->guest('login'); 
     } else { 
      return $next($request); 
     } 
    } 
} 

実は、それは私がアプリのルーティングにそれを使用するとき、それがうまく働いている

デフォルトのミドルウェア認証(すなわち「AUTH」)と同じです。 (アプリ/ Http/routes.php)

私はcuddy pluginミドルウェアオプションと一緒に使用する必要があります。ゲストユーザーだけをリダイレクトする必要がありますが、そうではありません。助けてください!デフォルトのチェックによって

答えて

0

認証ミドルウェア、ユーザーがゲストであり、uは、ユーザーがログインしているかどうかを確認し、それがどうあるべきか、ここでいくつかのユーザフィールドを確認したい場合は、ページが今

if (Auth::guard($guard)->guest()) { 
     if ($request->ajax() || $request->wantsJson()) { 
      return response('Unauthorized.', 401); //if ajax request 
     } else { 
      return redirect()->guest('login'); //redirect 
     } 
    } 

下記参照ログインする彼をリダイレクトする場合

public function handle($request, Closure $next, $guard = null) 
{ 
    if(Auth::check()) { //If is logged in 
     $user = Auth::user(); 
     if($user->isSuperAdmin()) 
      return $next($request); 
    } 
    return redirect('/whatever'); 
} 

「認証」ミドルウェア+このカスタムミドルウェアを添付している場合。カスタムミドルウェアで "Auth :: check()"を取り除くことができます。

Route::group(['middleware' => ['web', 'auth', 'custom']], function() { 
    Route::get('/url/only/for/super/users', '[email protected]'); 
}); 

public function handle($request, Closure $next, $guard = null) 
{ 
     $user = Auth::user(); 
     if($user->isSuperAdmin()) 
      return $next($request); 
    return redirect('/whatever'); 
} 
0

あなたはAUTH()ヘルパー、see helpersのようにどこでも使用することができますlaravelには多くのヘルパー関数があります。だからどこでもこのコードを使うことができます:

auth()->user();