У меня проблема с тузами в классе. Я создал туз для
класс как это:
$userIdentity = UserSecurityIdentity::fromAccount($user);
$classIdentity = new ObjectIdentity('some_identifier', 'Class\FQCN');
$acl = $aclProvider->createAcl($classIdentity);
$acl->insertClassAce($userIdentity, MaskBuilder::MASK_CREATE);
$aclProvider->updateAcl($acl);
Теперь я пытаюсь проверить права пользователя. Я нашел этот путь
делать то, что не задокументировано, но дает ожидаемое
результаты по классу:
$securityContext->isGranted('CREATE', $classIdentity); // returns true
$securityContext->isGranted('VIEW', $classIdentity); // returns true
$securityContext->isGranted('DELETE', $classIdentity); // returns false
Этот метод хорошо адаптирован к проверке разрешений "СОЗДАТЬ", где
нет доступного экземпляра объекта для передачи в метод. Тем не мение,
должна быть возможность проверить, предоставляется ли другое разрешение на
база конкретного экземпляра:
$entity = new Class\FQCN();
$em->persist($entity);
$em->flush();
$securityContext->isGranted('VIEW', $entity); // returns false
Здесь тест не пройден. Я ожидал, что пользователь, который имеет данный
маска разрешения для класса будет иметь одинаковые разрешения для каждого
экземпляр этого класса, как указано в документации (
PermissionGrantingStrategy сначала проверяет все ваши ACE объектной области, если
ни один из них не применим, проверки ACE на уровне класса будут проверены "), но
похоже, дело не в этом.