* @implements OwnershipTeamChecker */ class OwnershipChecker implements OwnershipOwnChecker, OwnershipTeamChecker { private DefaultOwnershipChecker $defaultOwnershipChecker; private EntityManager $entityManager; public function __construct( DefaultOwnershipChecker $defaultOwnershipChecker, EntityManager $entityManager ) { $this->defaultOwnershipChecker = $defaultOwnershipChecker; $this->entityManager = $entityManager; } /** * @param BpmnProcess $entity */ public function checkOwn(User $user, Entity $entity): bool { if (!$entity->getParentProcessId() || $entity->getParentProcessId() === $entity->getId()) { return $this->defaultOwnershipChecker->checkOwn($user, $entity); } $parent = $this->entityManager->getEntityById(BpmnProcess::ENTITY_TYPE, $entity->getParentProcessId()); if (!$parent instanceof CoreEntity) { return false; } return $this->defaultOwnershipChecker->checkOwn($user, $parent); } /** * @param BpmnProcess $entity */ public function checkTeam(User $user, Entity $entity): bool { if (!$entity->getParentProcessId() || $entity->getParentProcessId() === $entity->getId()) { return $this->defaultOwnershipChecker->checkTeam($user, $entity); } $parent = $this->entityManager->getEntityById(BpmnProcess::ENTITY_TYPE, $entity->getParentProcessId()); if (!$parent instanceof CoreEntity) { return false; } return $this->defaultOwnershipChecker->checkTeam($user, $parent); } }