1

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})。これは可能ですか?または、この種のフィルタリングを処理するよりスマートな方法はありますか?

4

2 に答える 2

0

よくわかりませんが、この2つを呼び出し、どちらかがそうであればtrueを返すフィルターを作成できます;)

于 2013-07-10T19:23:12.150 に答える