. * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU Affero General Public License version 3. * * In accordance with Section 7(b) of the GNU Affero General Public License version 3, * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ namespace Espo\Core\Action\Actions; use Espo\Core\Action\Action; use Espo\Core\Action\Data; use Espo\Core\Action\Params; use Espo\Core\Exceptions\Error; use Espo\Core\Exceptions\Forbidden; use Espo\Core\Exceptions\ForbiddenSilent; use Espo\Core\Record\EntityProvider; use Espo\Tools\Lock\LockService; /** * @noinspection PhpUnused */ class Lock implements Action { public function __construct( private LockService $lockService, private EntityProvider $entityProvider, ) {} public function process(Params $params, Data $data): void { $entityType = $params->getEntityType(); $id = $params->getId(); if (!$this->lockService->isEnabled($entityType)) { throw new ForbiddenSilent("Not enabled."); } if (!$this->lockService->isAllowed($entityType)) { throw new ForbiddenSilent("Not allowed."); } $entity = $this->entityProvider->get($entityType, $id); try { $this->lockService->lock($entity); } catch (Error $e) { throw new Forbidden(previous: $e); } } }