私はクライアントのために非常に広範なアプリを構築しており、ある種のグループ権限制御を作成する必要があります。CartalystとそのSentryパッケージを使うことにしました。
ここまでは順調ですね!
今私が抱えている問題は、ユーザーグループのアクセス許可を検出する最良の方法は何であるかということです。複数あるので、1つのフィルターを使用してそれを実行することはできません。
たとえば、私は次のようなことをします:
管理者レベルのアクセスが必要なページの場合
Route::group(array('before' => 'is_admin'), function()
{
Route::get('admin', array('as'=>'admin', 'uses'=>'admin@index'));
// Other methods that require admin-level access
});
より多くのレベルのアクセスなどが必要なページの場合。
Route::group(array('before' => 'is_moderator'), function()
{
Route::get('orodja/plosca', array('as'=>'moderator', 'uses'=>'moderator@index'));
// Other methods that require moderator-level access
});
このアプローチで私が抱えている問題は、すべてのコントローラーアクションに対して新しいルートを定義する必要があることであり、これは実際にはベストプラクティスのようには見えません。
次に、すべてのコントローラーをに登録しController::detect()
てRESTフルにすることを考えましたが、ここでの問題は、フィルターをコントローラーのコンストラクターメソッドにのみ適用でき、単一のアクションには適用できないことです。1つのコントローラーに異なるアクセスレベルのメソッドがある場合はどうなりますか?
だから私の質問は:この問題を回避する最良の方法は何ですか?コントローラーコンストラクターではなく、単一のコントローラーメソッドにアクションフィルターを適用する方法はありますか?
私の英語をありがとう、そしてごめんなさい!