2017-02-14 7 views
0

でルートグループ内のカスタムミドルウェアを追加する私は今、これらのルートはログインユーザーにのみ使用可能ですauthどのようlaravel

Route::group(['middleware'=>'auth', function() 
{ 
    //Routes 
}); 

のミドルウェアを持ってlaravelでルートグループを持っています。ユーザーにログインして特権を持つ状況があります。私はログインしたユーザーだけが訪問するルートを持っていて、特権がある場合はOWNER

私はセッションとストアド特権値を開始しました。

私はこの

Route::group(['middleware'=>'auth', function() 
{ 
    //Routes 
    if(session::get('privilege') 
    { 
     //Routes 
    } 
}); 

これは働いていないされていませんどちらも、それは適切な方法だような何かをしました。ミドルウェアをミドルウェアの中にどのように追加すればいいですか?

+1

あなた自身のミドルウェアを作成し、それをauthで使用することもできます。 – Kumar

答えて

1

あなたはあなたのためのミドルウェア・ファイルを作成しますOWNER

php artisan make:middleware Owner 

というカスタムミドルウェアを作成する必要があります。

<?php 

namespace App\Http\Middleware; 

use Closure; 

class Owner 
{ 
/** 
* Handle an incoming request. 
* 
* @param \Illuminate\Http\Request $request 
* @param \Closure $next 
* @return mixed 
*/ 
public function handle($request, Closure $next) 
{ 
    if (Auth::user()->privilege == "OWNER") { 
     return $next($request); 
    } 

    return redirect('home'); 

} 

}があり

More about Laravel Middelware here

+0

そして 'ルート:: get() - >ミドルウェア( '所有者'); – Alen

+0

Jup thats right! –

1

: はその後public functionでuは、カスタムミドルウェアは、このようになりますので、最後に

if (Auth::user()->privilege == "OWNER") { 
     return $next($request); 
    } 

return redirect('home'); 

ような何かを行うことができhandleと呼ばれますあなたのルートファイルの中に論理がないはずです - これらは単にルートを定義する必要があります。他には何もない。次に、あなたのミドルウェアでは、あなたは三番目の引数を経由して、そのパラメータにアクセスすることができます

Route::group(['middleware' => 'auth', function() { 

    Route::get('/my-route', '[email protected]')->middleware('role:some_role'); 

    Route::get('/my-other-route', '[email protected]')->middleware('role:some_other_role'); 

}); 

:何がすべきことは、ユーザーが持っている、あなたがこのようなミドルウェアに渡されるパラメータを指定することができる権限/役割を検証するミドルウェアを定義していますhandleメソッドの場合その値を使用すると、特権/役割を検証することができ、ユーザは、ユーザがそのルートにアクセスする必要があるかどうかを決定、その後持ち、:

public function handle($request, Closure $next, $role) 
{ 
    // Do something with $role 

    return $next($request); 
} 

独自のカスタムミドルウェアの定義についてわからない場合は、こちらのドキュメントをチェックアウト: https://laravel.com/docs/middleware

関連する問題