私は、laravelアプリケーションで行ベースのアクセス制御を設定したいと考えています(現在5.2、5.5 ltsを待っています)。これはコントローラーで行うことができますが、フレームワークでそれを少し深くする方法があるのだろうかと思っていました。Laravelの行ベースのアクセス制御の結果
のは、これらのモデルがあるとしましょう:
P - project
U - user (assigned to many projects)
D - Device (assigned to one project)
F - FAQ document (assigned to one project)
現在ログインしているユーザーは、自分のプロジェクトに所属し、それらのデバイスとFAQドキュメントを参照してくださいする必要があります。
私の現在の試みはコントローラでこれを行うことです。現在のユーザーを取得し、一般的な「すべてのプロジェクトにアクセスする」権限を確認し、存在しない場合は、質問されたモデルのプロジェクトに参加して結果を制限します。これは、このモデルで実行されているすべてのクエリで複製する必要があり、私はこの種の冗長性が完璧ではないと感じています。
これらのモデルを強制するメソッドwithAccess()
(私の例ではデバイスとFAQドキュメント)を使ってインターフェイス特性のようなものを作成する方法はありますか?このメソッドを実装し、モデル定義で一度クエリを実行しますか?
私はミドルウェア(フィルタとして機能するシステムワイドミドルウェア)の作成を希望したいと思います。実際には、行ベースのアクセス制御によって何を意味するのか分かりませんでした。 – webDev
私が理解しているように、ミドルウェアは、プロジェクトに属していないデバイスにアクセスしたい場合など、アクセスが全くない場合にリクエストをフィルタリングするのに適しています。しかし、デバイスのリストにアクセスする場合はどうすればよいですか?ミドルウェアはどのように役立つでしょうか? (例えば。結果セットをフィルタリングする) – McGo
あなたはそのミドルウェアを使用して何もできません。成功すると、あなたのデバイスのリストを次のリクエストに渡して、コントローラまたはビューで取得します(次のページ) – webDev