symfony2 ACLシステムを使ってこれを実現するうまい方法が分かっているのでしょうか? Symfony2のACLと別の条件の組み合わせ
は私がROLE_USER
で編集可能にする必要がある
Comment
エンティティ(私のドメインオブジェクト)を持っているが、これはのみ掲載されたコメントの5分以内に許可されている - そうでない場合は、コメントのみ
ROLE_ADMIN
で編集することができます。
ROLE_USER
とROLE_ADMIN
でのみ編集できるようにするには、それぞれRoleSecurityIdentity
としてください。
私の問題は、ROLE_USER
の時間係数を組み込むときに発生します。私の最初の問題は、ACLテーブルだけでなく、ドメインオブジェクトからの情報が必要だということですが、Comment
が投稿された時刻を保持できるカスタムObjectIdentity
クラスを作成することによってこれが解決できると思います。
は今難しい部分
のために私はまた、作成時に見て知っているカスタムPermissionGrantingStrategy
を作成する必要があると思います。これは、Comment
タイプがチェックされているときにロードされなければなりませんが、ロードする方法はわかりません。この種のものを設定するための工場があるかどうかは誰にも分かりますか?したがって、エンティティに特定のPermissionGrantingStrategy
が関連付けられている場合、そのエンティティが使用されます。それ以外の場合は、デフォルトが使用されます。
これは長いものですが、ACL文書が現時点ではあまり表示されていないので、これを達成する方法を知っていれば、多くのおかげです。私のフォールバックの解決策は、Commentを編集できるかどうかをチェックし、ACLをまったく気にかけないようにするためのサービスを提供することです。
セキュリティコンテキストのisGranted(コメントを編集するためのコントロールを条件付きで表示するためにフロントエンドで使用することもできます)を介して、プラグインがうまくプラグインできます。私はそれを今夜のショットを与え、それが動作する場合は答えをチェックしますが、それはあなたが勝者になっているように見えます:)ありがとう! – Kasheen
[OK]をこのソリューションを実装した後私はそれが行く方法だと思いますが、私は投票者を作成するときに落とし穴の多くを見つけたので、私は他人に正当性を保証することはできません)。 – Kasheen