私はSymfony3でAPIバックエンドを構築しようとしており、オブジェクト(この例ではUser)を更新するためにフィールドレベルの権限をPUTエンドポイントに適用する方法について質問があります。 PUT要求は/ユーザー/ {にuserId}エンドポイントに送信される場合Symfony3エンティティフィールドレベルの権限
マイユーザエンティティは、Iが配列に要求JSONをデシリアライズ等
複数のフィールド、のfirstName、lastNameの、ユーザ名を有し、通過配列(およびデータベースからフェッチされたUser)を、リクエストデータをUserプロパティに適用するノーマライザに変換します。
私はADMINがすべてのフィールドを更新できるようにしたいと考えていますが、ユーザー自身が最初と最後の名前のみを更新できるようにしたいと思います。
私のコードのどこかで、Userオブジェクトに更新を適用する前にチェックする必要があります。ユーザー名フィールドがPUTリクエストに存在する場合、そのアップデートをユーザーオブジェクトに適用する前に、要求しているユーザーが管理者であるかどうかを確認する必要があります。
ノーマライザーにセキュリティを注入するのは明らかな解決策のようですが、セキュリティはノーマライザーの関心事ではないはずです。
リクエストをデシリアライズした後、ノーマライザに渡す前にパーミッションをチェックし、ユーザがアクセス権を持たない場合は配列からフィールドを削除することができます。そうでなければadminから[username]を削除します。これを達成するための正しい方法についての考え/提案を探してい
....
ありがとう!