PHP Code:
namespace Espo\Custom\Acl;
use \Espo\Entities\User;
use \Espo\ORM\Entity;
class YourChildEntity extends \Espo\Core\Acl\Base
{
public function checkIsOwner(User $user, Entity $entity)
{
if ($entity->has('parentEntityId')) {
$parentEntityId = $entity->get('parentEntityId');
if (!$parentEntityId) return false;
$parentEntity = $this->getEntityManager()->getEntity('ParentEnity', $parentEntityId);
if ($parentEntity && $this->getAclManager()->getImplementation('ParentEnity')->checkIsOwner($user, $parentEntity)) {
return true;
}
return false;
} else {
return parent::checkIsOwner($user, $entity);
}
}
public function checkInTeam(User $user, Entity $entity)
{
if ($entity->has('parentEntityId')) {
$parentEntityId = $entity->get('parentEntityId');
if (!$parentEntityId) return false;
$parentEntity = $this->getEntityManager()->getEntity('ParentEnity', $parentEntityId);
if ($parentEntity && $this->getAclManager()->getImplementation('ParentEnity')->checkInTeam($user, $parentEntity)) {
return true;
}
return false;
} else {
return parent::checkInTeam($user, $entity);
}
}
}
and under Espo\Custom\Resources\metadat\app\acl.json define a mapping between the childentity and it is parent entity:
PHP Code:
{
"mandatory": {
"scopeLevel": {
"ChildEntity": "ParentEntity"
}
}
}
Leave a comment: