Laravelでは、N個のフィルターのうち少なくとも1つが成功した場合にルートへのアクセスを許可する方法はありますか? 例えば:
Route::get('/user/{id}', array('uses' => 'UserController@profile', 'before' => 'requireAdmin|requireIsMe'));
このフィルターは、ルートへのアクセスを許可するために と の両方を必要requireAdmin
としますが、アクセスを許可するには または のいずれかで十分でrequireIsMe
あることを示す方法が必要です。これは可能ですか、または両方を組み合わせた新しいフィルターを作成する必要がありますか (すべてのフィルターの組み合わせに対してこれを行う必要があるため、これはひどい解決策です)。requireAdmin
requireIsMe
フィルターは次のようになります。
Route::filter('requireAdmin', function () {
if(Session::get('user')->GetRole() != Role.Admin)
return Redirect::to('/');
});
Route::filter('requireIsMe', function($id) {
if(Session::get('user')->GetId() != $id)
return Redirect::to('/');
});
私が必要としているのは、これらの 2 つのフィルターが与えられた場合、リクエストを通常どおり続行できるようにするために、そのうちの1 つだけを通過させる必要があることをルートに伝える方法があるかどうかです (この例では、一致する ID を持つ管理者とユーザーの両方が必要です)。に進むことができます/user/{id}
)。これは可能ですか?または、この種のフィルタリングを処理するよりスマートな方法はありますか?