type fixes

This commit is contained in:
Yuri Kuznetsov
2022-03-07 13:11:07 +02:00
parent 78c5ec8a0c
commit 3546ade6ab
11 changed files with 58 additions and 35 deletions

View File

@@ -78,6 +78,9 @@ class AclManager
protected $mapHashMap = [];
/**
* @var class-string
*/
protected $userAclClassName = Acl::class;
protected const PERMISSION_ASSIGNMENT = 'assignment';
@@ -287,7 +290,7 @@ class AclManager
return $this->checkScope($user, $subject, $action);
}
/** @var mixed */
/** @var mixed $entity */
$entity = $subject;
if ($entity instanceof Entity) {

View File

@@ -44,13 +44,16 @@ use Espo\Core\{
class AccessCheckerFactory
{
/**
* @var class-string
*/
private $defaultClassName = DefaultAccessChecker::class;
private $classFinder;
private ClassFinder $classFinder;
private $metadata;
private Metadata $metadata;
private $injectableFactory;
private InjectableFactory $injectableFactory;
public function __construct(
ClassFinder $classFinder,
@@ -76,6 +79,9 @@ class AccessCheckerFactory
return $this->injectableFactory->createWithBinding($className, $bindingContainer);
}
/**
* @return class-string
*/
private function getClassName(string $scope): string
{
$className1 = $this->metadata->get(['aclDefs', $scope, 'portalAccessCheckerClassName']);

View File

@@ -47,6 +47,12 @@ use Espo\Core\{
/**
* A default implementation for access checking for portal.
*
* @implements AccessEntityCreateChecker<Entity>
* @implements AccessEntityReadChecker<Entity>
* @implements AccessEntityEditChecker<Entity>
* @implements AccessEntityDeleteChecker<Entity>
* @implements AccessEntityStreamChecker<Entity>
*/
class DefaultAccessChecker implements
@@ -56,9 +62,9 @@ class DefaultAccessChecker implements
AccessEntityDeleteChecker,
AccessEntityStreamChecker
{
private $aclManager;
private PortalAclManager $aclManager;
private $scopeChecker;
private ScopeChecker $scopeChecker;
public function __construct(
PortalAclManager $aclManager,

View File

@@ -43,11 +43,14 @@ use Espo\Core\{
class OwnershipCheckerFactory
{
/**
* @var class-string
*/
private $defaultClassName = DefaultOwnershipChecker::class;
private $metadata;
private Metadata $metadata;
private $injectableFactory;
private InjectableFactory $injectableFactory;
public function __construct(
Metadata $metadata,
@@ -71,6 +74,9 @@ class OwnershipCheckerFactory
return $this->injectableFactory->createWithBinding($className, $bindingContainer);
}
/**
* @return class-string
*/
private function getClassName(string $scope): string
{
$className = $this->metadata->get(['aclDefs', $scope, 'portalOwnershipCheckerClassName']);

View File

@@ -60,21 +60,18 @@ use RuntimeException;
class AclManager extends InternalAclManager
{
/**
* @var class-string
*/
protected $userAclClassName = Acl::class;
private $internalAclManager = null;
private ?InternalAclManager $internalAclManager = null;
private $portal = null;
private ?Portal $portal = null;
/**
* @var TableFactory
*/
private $portalTableFactory;
private TableFactory $portalTableFactory;
/**
* @var MapFactory
*/
private $portalMapFactory;
private MapFactory $portalMapFactory;
public function __construct(
AccessCheckerFactory $accessCheckerFactory,

View File

@@ -44,9 +44,12 @@ use Espo\Core\Exceptions\Error;
*/
class AclManagerContainer
{
/**
* @var array<string,AclManager>
*/
private $data = [];
private $injectableFactory;
private InjectableFactory $injectableFactory;
public function __construct(InjectableFactory $injectableFactory)
{

View File

@@ -38,7 +38,7 @@ use Espo\Core\{
class Container extends BaseContainer
{
private $portalIsSet = false;
private bool $portalIsSet = false;
public function setPortal(PortalEntity $portal): void
{

View File

@@ -38,7 +38,6 @@ use Espo\Core\{
use Espo\Entities\{
Preferences,
Portal,
};
class Language implements Loader
@@ -49,18 +48,14 @@ class Language implements Loader
private $preferences;
private $portal;
public function __construct(
InjectableFactory $injectableFactory,
Config $config,
Preferences $preferences,
Portal $portal
Preferences $preferences
) {
$this->injectableFactory = $injectableFactory;
$this->config = $config;
$this->preferences = $preferences;
$this->portal = $portal;
}
public function load(): LanguageService
@@ -70,8 +65,6 @@ class Language implements Loader
'useCache' => $this->config->get('useCache') ?? false,
]);
$language->setPortal($this->portal);
return $language;
}
}

View File

@@ -38,10 +38,16 @@ use stdClass;
class Config extends BaseConfig
{
private $portalParamsSet = false;
private bool $portalParamsSet = false;
/**
* @var array<string,mixed>
*/
private $portalData = [];
/**
* @var string[]
*/
private $portalParamList = [
'companyLogoId',
'tabList',
@@ -57,6 +63,10 @@ class Config extends BaseConfig
'defaultCurrency',
];
/**
* @param mixed $default
* @return mixed
*/
public function get(string $name, $default = null)
{
if (array_key_exists($name, $this->portalData)) {
@@ -88,8 +98,10 @@ class Config extends BaseConfig
/**
* Override parameters for a portal. Can be called only once.
*
* @param array<string,mixed> $data
*/
public function setPortalParameters(array $data = [])
public function setPortalParameters(array $data = []): void
{
if ($this->portalParamsSet) {
throw new Error("Can't set portal params second time.");

View File

@@ -29,11 +29,7 @@
namespace Espo\Core\Portal\Utils;
use Espo\Entities\Portal;
class Language extends \Espo\Core\Utils\Language
{
public function setPortal($portal)
{
}
}

View File

@@ -93,6 +93,7 @@ class Config
/**
* Get a parameter value.
*
* @param mixed $default
* @return mixed
*/
public function get(string $name, $default = null)