新しい UserGroup が生成されたら、新しい RoleSecurityIdentity と ROLE を作成します。お気に入り:
new RoleSecurityIdentity('ROLE_GROUP-'.$groupName);
管理者がメディアなどの新しいオブジェクトを作成する場合、管理者はグループをメディアに割り当てて表示できます。
$acl->insertObjectAce($groupSecurityIdentity, MaskBuilder::MASK_VIEW);
グループを削除した場合、RoleSecurityIdentity のすべてのエースを取り消す方法がわからないという問題があります。
用意されている機能などはありますか?まだ見つけられなかったので、これをコーディングしました:
$connection = $this->getDoctrine()->getManager()->getConnection();
// find securityIdentity ID
$secIdSearch = $connection->prepare('select * from acl_security_identities where identifier = "'.$groupRole.'"');
$secIdSearch->execute();
$secIdFetch = $secIdSearch->fetch();
$securityIdentitiyId = $secIdFetch['id'];
if($securityIdentitiyId):
// Delete all connected Object Entities for this RoleIdentitiys
$connection->prepare('DELETE FROM acl_entries where security_identity_id ='.$securityIdentitiyId)->execute();
// Remove the Role Identitiy itself.
$connection->prepare('DELETE FROM acl_security_identities where id ='.$securityIdentitiyId)->execute();
endif;
本当に汚れているように見えるだけでなく、Ace を削除したオブジェクトに新しい ACL を保存したい場合、
Notice: Undefined offset: 6 in /../../Acl/Dbal/MutableAclProvider.php line 842
ace_order が正しくないためです。
すでに解決策はありますか?それとも、自分のやり方でエースを再注文する必要がありますか?