ACL 管理用に 3 つの関数を作成しようとしています。
public function postPersist(LifeCycleEventArgs $event){
$em = $event->getEntity();
$entity = $event->getEntity();
$aclProvider = $this->container->get('security.acl.provider');
$objectIdentity = ObjectIdentity::fromDomainObject($entity);
try {
$acl = $aclProvider->findAcl($objectIdentity);
} catch (AclNotFoundException $e) {
$acl = $aclProvider->createAcl($objectIdentity);
}
$securityContext = $this->container->get('security.context');
$token = $securityContext->getToken();
$securityIdentity = UserSecurityIdentity::fromToken($token);
$acl->insertObjectAce($securityIdentity, MaskBuilder::MASK_OWNER);
$aclProvider->updateAcl($acl);
}
1 人のユーザーが何かを作成するたびに、サービスによって ACL が作成されます。(Eventlistener)
しかし今、私は少し問題があります。ホールMySQL-DBを削除すると、新しいエンティティを作成するたびに、次のエラーメッセージが表示されます。
指定されたオブジェクト ID の ACL がありません。
次に、この関数から try と catch を削除し、createACL のみを許可します。
オブジェクト ID は既に ACL に関連付けられています
私はこれを理解していません、もちろん私のDBは空です...
あなたの助けのためのタンク。