diff --git a/application/Espo/Core/Select/AccessControl/Applier.php b/application/Espo/Core/Select/AccessControl/Applier.php index acb03fc641..924432621c 100644 --- a/application/Espo/Core/Select/AccessControl/Applier.php +++ b/application/Espo/Core/Select/AccessControl/Applier.php @@ -32,7 +32,6 @@ namespace Espo\Core\Select\AccessControl; use Espo\Core\Select\OrmSelectBuilder; use Espo\Core\{ - Exceptions\Error, Select\SelectManager, Select\AccessControl\FilterFactory as AccessControlFilterFactory, Select\AccessControl\FilterResolverFactory as AccessControlFilterResolverFactory, @@ -43,6 +42,8 @@ use Espo\{ Entities\User, }; +use RuntimeException; + class Applier { private string $entityType; @@ -111,7 +112,7 @@ class Applier return; } - throw new Error("No access filter '{$filterName}' for '{$this->entityType}'."); + throw new RuntimeException("No access filter '{$filterName}' for '{$this->entityType}'."); } private function applyMandatoryFilter(QueryBuilder $queryBuilder): void diff --git a/application/Espo/Core/Select/AccessControl/BypassFilterResolver.php b/application/Espo/Core/Select/AccessControl/BypassFilterResolver.php index 002e1d2268..dd09004889 100644 --- a/application/Espo/Core/Select/AccessControl/BypassFilterResolver.php +++ b/application/Espo/Core/Select/AccessControl/BypassFilterResolver.php @@ -29,10 +29,8 @@ namespace Espo\Core\Select\AccessControl; -class BypassFilterResolver implements FilterResolver -{ - public function resolve(): ?string - { - return null; - } -} +/** + * @deprecated Use `\Espo\Core\Select\AccessControl\FilterResolvers\Bypass` instead. + * @todo Remove in v8.0. + */ +class BypassFilterResolver extends \Espo\Core\Select\AccessControl\FilterResolvers\Bypass {} diff --git a/application/Espo/Core/Select/AccessControl/FilterFactory.php b/application/Espo/Core/Select/AccessControl/FilterFactory.php index caa6169138..26fd6f83f7 100644 --- a/application/Espo/Core/Select/AccessControl/FilterFactory.php +++ b/application/Espo/Core/Select/AccessControl/FilterFactory.php @@ -45,6 +45,8 @@ use Espo\{ Entities\User, }; +use RuntimeException; + class FilterFactory { private $injectableFactory; @@ -60,15 +62,12 @@ class FilterFactory $this->aclManager = $aclManager; } - /** - * @throws Error - */ public function create(string $entityType, User $user, string $name): Filter { $className = $this->getClassName($entityType, $name); if (!$className) { - throw new Error("Access control filter '{$name}' for '{$entityType}' does not exist."); + throw new RuntimeException("Access control filter '{$name}' for '{$entityType}' does not exist."); } $bindingData = new BindingData(); @@ -92,9 +91,6 @@ class FilterFactory return $this->injectableFactory->createWithBinding($className, $bindingContainer); } - /** - * @throws Error - */ public function has(string $entityType, string $name): bool { return (bool) $this->getClassName($entityType, $name); @@ -102,12 +98,11 @@ class FilterFactory /** * @return class-string - * @throws Error */ private function getClassName(string $entityType, string $name): ?string { if (!$name) { - throw new Error("Empty access control filter name."); + throw new RuntimeException("Empty access control filter name."); } /** @var ?class-string */ diff --git a/application/Espo/Core/Select/AccessControl/FilterResolvers/Bypass.php b/application/Espo/Core/Select/AccessControl/FilterResolvers/Bypass.php new file mode 100644 index 0000000000..21bdef06d3 --- /dev/null +++ b/application/Espo/Core/Select/AccessControl/FilterResolvers/Bypass.php @@ -0,0 +1,40 @@ +