0

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は空です...

あなたの助けのためのタンク。

4

0 に答える 0