2016-10-07 8 views
0

Laravelの認証コードはどこにありますか?私たちにはこのような状況を管理するための多くのオプションとプラグインがありますが、どこにすべてのロジックを置くべきかはわかりません。見てみましょう:認可コードはどこに置くべきですか? FormRequest、ポリシー、コントローラ、ミドルウェア...?

正しい結果で多くの可能性があることを知っていますが、この状況ではどちらが最適なソリューションかを知りたいのです。

vuejsとLaravelでAPIとして実行されるヘルプデスクアプリケーションがあると想定して、ユーザー、グループ、役割、権限を持っているとします。そして、おそらく、ユーザーはそのチケットを見ることしかできません。

  1. view、update、createメソッドでTicketPolicyを実行する必要がありますか?たぶん私たちはリポジトリを使うべきでしょうか?チケットのモデルでis_user_allowedメソッドが使用されている可能性がありますか?
  2. Route :: get( 'tickets/{ticket}'、 'TicketsController @ show') - >ミドルウェア( 'can:show')のようなルートファイルでミドルウェアを使用する必要がありますか?あるいは、コントローラーのメソッドの表示、編集、更新、および保存で$ this-> authorize($ ticket)を呼び出す必要がありますか?
  3. FormRequest @ authorizeメソッドを使って、$ user-> authorize( 'show'、$ ticket)のようなものを使うべきでしょうか?
  4. グループやロールが必要な場合はどうすればよいですか? Entrustやポリシーのようなプラグインを使うべきでしょうか?

あなたはどう思いますか?

+0

これらのすべてが良いtbhです。 –

答えて

0

標準的なMVCパターンに収まらない特定のロジックをグループ化するクラスを配置するのに最適な場所は、Laravelにとって全く新しいフォルダです。おそらく私はどこかでそれを読むので、私は私のサービスに名前をつけます。 Laravel(とおそらく他の現代のフレームワーク)の素晴らしい点の1つは、柔軟性です。フォルダをポップして新しい名前空間を追加し、必要なものがあればそれを含めることができます。

あなたの例では、アプリケーションのさまざまなリソースにアクセスするために必要なすべてのロジックを含むApp \ Services \ Permissionsクラスを実装します。次に、リクエスト、ミドルウェア、または珍しいモデルであれば、必要なときはどこでもメソッドを呼び出すことができます。

関連する問題