email filter move to folder

This commit is contained in:
Yuri Kuznetsov
2022-10-12 18:35:43 +03:00
parent a7d3073861
commit 4e31fc89d4
18 changed files with 446 additions and 299 deletions
@@ -29,7 +29,9 @@
namespace Espo\Classes\Acl\EmailFilter;
use Espo\Entities\EmailAccount;
use Espo\Entities\User;
use Espo\Entities\EmailFilter;
use Espo\ORM\Entity;
@@ -39,41 +41,48 @@ use Espo\Core\{
};
/**
* @implements OwnershipOwnChecker<\Espo\Entities\EmailFilter>
* @implements OwnershipOwnChecker<EmailFilter>
*/
class OwnershipChecker implements OwnershipOwnChecker
{
private $entityManager;
private EntityManager $entityManager;
public function __construct(EntityManager $entityManager)
{
$this->entityManager = $entityManager;
}
/**
* @param EmailFilter $entity
*/
public function checkOwn(User $user, Entity $entity): bool
{
if (!$entity->has('parentId') || !$entity->has('parentType')) {
if ($entity->isGlobal()) {
return false;
}
$parentType = $entity->get('parentType');
$parentId = $entity->get('parentId');
$parentType = $entity->getParentType();
$parentId = $entity->getParentId();
if (!$parentType || !$parentId) {
return false;
}
$parent = $this->entityManager->getEntity($parentType, $parentId);
$parent = $this->entityManager->getEntityById($parentType, $parentId);
if (!$parent) {
return false;
}
if ($parent->getEntityType() === 'User') {
if ($parent->getEntityType() === User::ENTITY_TYPE) {
return $parent->getId() === $user->getId();
}
if ($parent->has('assignedUserId') && $parent->get('assignedUserId') === $user->getId()) {
if (
$parent instanceof EmailAccount &&
$parent->has('assignedUserId') &&
$parent->get('assignedUserId') === $user->getId()
) {
return true;
}