Files
espocrm/custom/Espo/Modules/Advanced/Classes/Acl/BpmnProcess/OwnershipChecker.php
2026-01-19 17:46:06 +01:00

67 lines
2.1 KiB
PHP

<?php
namespace Espo\Modules\Advanced\Classes\Acl\BpmnProcess;
use Espo\Core\Acl\DefaultOwnershipChecker;
use Espo\Core\Acl\OwnershipOwnChecker;
use Espo\Core\Acl\OwnershipTeamChecker;
use Espo\Core\ORM\Entity as CoreEntity;
use Espo\Entities\User;
use Espo\Modules\Advanced\Entities\BpmnProcess;
use Espo\ORM\Entity;
use Espo\ORM\EntityManager;
/**
* @implements OwnershipOwnChecker<BpmnProcess>
* @implements OwnershipTeamChecker<BpmnProcess>
*/
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);
}
}