diff --git a/application/Espo/Core/Application.php b/application/Espo/Core/Application.php index 3ac1591bcc..09595e13fa 100644 --- a/application/Espo/Core/Application.php +++ b/application/Espo/Core/Application.php @@ -100,32 +100,27 @@ class Application protected function getInjectableFactory(): InjectableFactory { - /** @var InjectableFactory */ - return $this->container->get('injectableFactory'); + return $this->container->getByClass(InjectableFactory::class); } protected function getApplicationUser(): ApplicationUser { - /** @var ApplicationUser */ - return $this->container->get('applicationUser'); + return $this->container->getByClass(ApplicationUser::class); } protected function getClientManager(): ClientManager { - /** @var ClientManager */ - return $this->container->get('clientManager'); + return $this->container->getByClass(ClientManager::class); } protected function getMetadata(): Metadata { - /** @var Metadata */ - return $this->container->get('metadata'); + return $this->container->getByClass(Metadata::class); } protected function getConfig(): Config { - /** @var Config */ - return $this->container->get('config'); + return $this->container->getByClass(Config::class); } protected function initAutoloads(): void diff --git a/application/Espo/Core/ApplicationState.php b/application/Espo/Core/ApplicationState.php index 3fc74bf88c..f5b57d3726 100644 --- a/application/Espo/Core/ApplicationState.php +++ b/application/Espo/Core/ApplicationState.php @@ -39,6 +39,9 @@ use LogicException; */ class ApplicationState { + private const KEY_USER = 'user'; + private const KEY_PORTAL = 'portal'; + public function __construct(private Container $container) {} @@ -47,7 +50,7 @@ class ApplicationState */ public function isPortal(): bool { - return $this->container->has('portal'); + return $this->container->has(self::KEY_PORTAL); } /** @@ -72,7 +75,7 @@ class ApplicationState } /** @var PortalEntity */ - return $this->container->get('portal'); + return $this->container->get(self::KEY_PORTAL); } /** @@ -80,7 +83,7 @@ class ApplicationState */ public function hasUser(): bool { - return $this->container->has('user'); + return $this->container->has(self::KEY_USER); } /** @@ -93,7 +96,7 @@ class ApplicationState } /** @var UserEntity */ - return $this->container->get('user'); + return $this->container->get(self::KEY_USER); } /** @@ -109,7 +112,7 @@ class ApplicationState */ public function isLogged(): bool { - if (!$this->container->has('user')) { + if (!$this->container->has(self::KEY_USER)) { return false; } diff --git a/application/Espo/Core/Console/Commands/AclCheck.php b/application/Espo/Core/Console/Commands/AclCheck.php index 8613a8aa10..230a9c7d50 100644 --- a/application/Espo/Core/Console/Commands/AclCheck.php +++ b/application/Espo/Core/Console/Commands/AclCheck.php @@ -30,25 +30,21 @@ namespace Espo\Core\Console\Commands; use Espo\Entities\User; -use Espo\Core\AclManager; use Espo\ORM\EntityManager; +use Espo\Core\AclManager; +use Espo\Core\Console\Command; +use Espo\Core\Console\Command\Params; +use Espo\Core\Console\IO; +use Espo\Core\Container; +use Espo\Core\Portal\Application as PortalApplication; -use Espo\Core\{ - Portal\Application as PortalApplication, - Container, - Console\Command, - Console\Command\Params, - Console\IO, -}; - +/** + * Checks access for websocket topic subscription. Prints `true` if access allowed. + */ class AclCheck implements Command { - private Container $container; - - public function __construct(Container $container) - { - $this->container = $container; - } + public function __construct(private Container $container) + {} public function run(Params $params, IO $io): void { @@ -59,24 +55,14 @@ class AclCheck implements Command $id = $options['id'] ?? null; $action = $options['action'] ?? null; - if (empty($userId)) { - return; - } - - if (empty($scope)) { - return; - } - - if (empty($id)) { + if (!$userId || !$scope || !$id) { return; } $container = $this->container; + $entityManager = $this->container->getByClass(EntityManager::class); - /** @var \Espo\ORM\EntityManager $entityManager */ - $entityManager = $container->get('entityManager'); - - $user = $entityManager->getEntity('User', $userId); + $user = $entityManager->getEntityById(User::ENTITY_TYPE, $userId); if (!$user) { return; @@ -88,13 +74,10 @@ class AclCheck implements Command foreach ($portalIdList as $portalId) { $application = new PortalApplication($portalId); - $containerPortal = $application->getContainer(); + $entityManager = $containerPortal->getByClass(EntityManager::class); - /** @var \Espo\ORM\EntityManager $entityManager */ - $entityManager = $containerPortal->get('entityManager'); - - $user = $entityManager->getEntity('User', $userId); + $user = $entityManager->getEntityById(User::ENTITY_TYPE, $userId); if (!$user) { return; @@ -114,8 +97,6 @@ class AclCheck implements Command if ($this->check($user, $scope, $id, $action, $container)) { $io->write('true'); - - return; } } @@ -127,22 +108,16 @@ class AclCheck implements Command Container $container ): bool { - /** @var EntityManager $entityManager */ - $entityManager = $container->get('entityManager'); + $entityManager = $container->getByClass(EntityManager::class); - $entity = $entityManager->getEntity($scope, $id); + $entity = $entityManager->getEntityById($scope, $id); if (!$entity) { return false; } - /** @var AclManager $aclManager */ - $aclManager = $container->get('aclManager'); + $aclManager = $container->getByClass(AclManager::class); - if ($aclManager->check($user, $entity, $action)) { - return true; - } - - return false; + return $aclManager->check($user, $entity, $action); } } diff --git a/application/Espo/Core/Loaders/InternalAclManager.php b/application/Espo/Core/Loaders/InternalAclManager.php index 8edd789682..5560d15bcf 100644 --- a/application/Espo/Core/Loaders/InternalAclManager.php +++ b/application/Espo/Core/Loaders/InternalAclManager.php @@ -29,24 +29,17 @@ namespace Espo\Core\Loaders; -use Espo\Core\{ - Container\Loader, - Container, - AclManager as AclManagerService, -}; +use Espo\Core\AclManager as AclManagerService; +use Espo\Core\Container; +use Espo\Core\Container\Loader; class InternalAclManager implements Loader { - private $container; - - public function __construct(Container $container) - { - $this->container = $container; - } + public function __construct(private Container $container) + {} public function load(): AclManagerService { - /** @var AclManagerService */ - return $this->container->get('aclManager'); + return $this->container->getByClass(AclManagerService::class); } } diff --git a/application/Espo/Core/ORM/EntityManagerProxy.php b/application/Espo/Core/ORM/EntityManagerProxy.php index 02851b1f31..cb06524cdd 100644 --- a/application/Espo/Core/ORM/EntityManagerProxy.php +++ b/application/Espo/Core/ORM/EntityManagerProxy.php @@ -46,10 +46,7 @@ class EntityManagerProxy private function getEntityManager(): EntityManager { if (!$this->entityManager) { - /** @var EntityManager $entityManager */ - $entityManager = $this->container->get('entityManager'); - - $this->entityManager = $entityManager; + $this->entityManager = $this->container->getByClass(EntityManager::class); } return $this->entityManager; @@ -71,7 +68,7 @@ class EntityManagerProxy } /** - * @param array $options + * @param array $options * @return void */ public function saveEntity(Entity $entity, array $options = []) diff --git a/application/Espo/Core/Portal/Application.php b/application/Espo/Core/Portal/Application.php index cddf4dc645..e47417c3ca 100644 --- a/application/Espo/Core/Portal/Application.php +++ b/application/Espo/Core/Portal/Application.php @@ -49,9 +49,7 @@ class Application extends BaseApplication date_default_timezone_set('UTC'); $this->initContainer(); - $this->initPortal($portalId); - $this->initAutoloads(); $this->initPreloads(); } @@ -85,8 +83,7 @@ class Application extends BaseApplication throw new Error("Portal ID was not passed to Portal\Application."); } - /** @var EntityManager $entityManager */ - $entityManager = $this->container->get('entityManager'); + $entityManager = $this->container->getByClass(EntityManager::class); $portal = $entityManager->getEntity(Portal::ENTITY_TYPE, $portalId); diff --git a/application/Espo/Tools/App/LanguageService.php b/application/Espo/Tools/App/LanguageService.php index 4ceeeaf461..bf017890e1 100644 --- a/application/Espo/Tools/App/LanguageService.php +++ b/application/Espo/Tools/App/LanguageService.php @@ -30,7 +30,6 @@ namespace Espo\Tools\App; use Espo\Core\Utils\Language as LanguageUtil; - use Espo\Core\Acl; use Espo\Core\Container; use Espo\Core\Utils\Metadata; @@ -39,22 +38,12 @@ use Espo\Entities\User; class LanguageService { - private Metadata $metadata; - private Acl $acl; - private User $user; - private Container $container; - public function __construct( - Metadata $metadata, - Acl $acl, - User $user, - Container $container - ) { - $this->metadata = $metadata; - $this->acl = $acl; - $this->user = $user; - $this->container = $container; - } + private Metadata $metadata, + private Acl $acl, + private User $user, + private Container $container + ) {} // @todo Use proxy. protected function getDefaultLanguage(): LanguageUtil