パーミッション/承認 (認証ではない) は分野横断的な問題だと思います。
Onion アーキテクチャまたは Hexagonal アーキテクチャでは、どこでパーミッションを実行する必要がありますか? 必要な許可の例は次のとおりです。
- フロントエンドに返されるデータのフィルタリング (UI、API、またはその他)
- ビジネス オペレーションがまったく実行可能であることの検証
理想的には、単一責任の原則により、ビジネス オペレーションを実行してデータを返すコードは、ユーザーのアクセス許可をまったく認識する必要がありません。その機能の実装は、ビジネス オペレーションを実行する方法、またはリポジトリやドメイン サービスにクエリを実行する方法を知っている必要があります。それだけです。
ビジネス操作を実行したり、データを返したりするクラスと同じインターフェースを実装するラッパー/ファサードは、このパーミッションを置く場所でしょうか? それとももっと良い方法がありますか?
また、ベスト プラクティスがロールではなくアクティビティごとのアクセス許可である場合、単にデータを返すことを目的とするサービスによってアクセス許可を実行する必要があると言うのは有効ですか?