type fixes

This commit is contained in:
Yuri Kuznetsov
2021-11-09 13:48:04 +02:00
parent 54286984e9
commit fa63270530
25 changed files with 101 additions and 8 deletions
@@ -93,6 +93,7 @@ class AccessChecker implements AccessEntityCREDChecker
}
if ($parent->getEntityType() === 'Note') {
/** @var Note $parent */
$result = $this->checkEntityReadNoteParent($user, $parent);
if ($result !== null) {
@@ -42,6 +42,9 @@ use Espo\Core\{
AclManager,
};
/**
* @implements AccessEntityCREDSChecker<User>
*/
class AccessChecker implements AccessEntityCREDSChecker
{
use DefaultAccessCheckerDependency;
@@ -132,6 +135,8 @@ class AccessChecker implements AccessEntityCREDSChecker
public function checkEntityStream(User $user, Entity $entity, ScopeData $data): bool
{
/** @var User $entity */
return $this->aclManager->checkUserPermission($user, $entity, 'user');
}
}
@@ -45,6 +45,9 @@ use Espo\Core\{
Portal\Acl\Traits\DefaultAccessCheckerDependency,
};
/**
* @implements AccessEntityCREDChecker<User>
*/
class AccessChecker implements AccessEntityCREDChecker
{
use DefaultAccessCheckerDependency;
@@ -94,6 +97,7 @@ class AccessChecker implements AccessEntityCREDChecker
}
if ($parent->getEntityType() === 'Note') {
/** @var Note $parent */
$result = $this->checkEntityReadNoteParent($user, $parent);
if ($result !== null) {
@@ -44,6 +44,8 @@ class Company implements WhereBuilder
{
public function build(Entity $entity): ?WhereItem
{
assert($entity instanceof CoreEntity);
$orBuilder = OrGroup::createBuilder();
$toCheck = false;
@@ -47,6 +47,8 @@ class Person implements WhereBuilder
{
public function build(Entity $entity): ?WhereItem
{
assert($entity instanceof CoreEntity);
$orBuilder = OrGroup::createBuilder();
$toCheck = false;
@@ -39,6 +39,9 @@ use Espo\Core\{
use Espo\Repositories\Email as EmailRepository;
/**
* @implements Loader<\Espo\Entities\Email>
*/
class AddressDataLoader implements Loader
{
private $entityManager;
@@ -39,6 +39,9 @@ use Espo\Core\{
use Espo\Repositories\Import as ImportRepository;
/**
* @implements Loader<\Espo\Entities\Import>
*/
class CountsLoader implements Loader
{
private $entityManager;
@@ -36,6 +36,9 @@ use Espo\ORM\Entity;
use Espo\Entities\User;
/**
* @implements LinkHook<\Espo\Entities\Team>
*/
class BeforeLinkUserCheck implements LinkHook
{
public function process(Entity $entity, string $link, Entity $foreignEntity): void
@@ -44,6 +47,8 @@ class BeforeLinkUserCheck implements LinkHook
return;
}
assert($foreignEntity instanceof User);
$this->processUserCheck($foreignEntity);
}
@@ -29,6 +29,11 @@
namespace Espo\Core\Acl;
/**
* @template TEntity of \Espo\ORM\Entity
* @extends AccessEntityCreateChecker<TEntity>, AccessEntityCreateChecker<TEntity>, AccessEntityReadChecker<TEntity>,
* AccessEntityEditChecker<TEntity>, AccessEntityDeleteChecker<TEntity>
*/
interface AccessEntityCREDChecker extends
AccessEntityCreateChecker,
@@ -29,6 +29,11 @@
namespace Espo\Core\Acl;
/**
* @template TEntity of \Espo\ORM\Entity
* @extends AccessEntityCreateChecker<TEntity>, AccessEntityCreateChecker<TEntity>, AccessEntityReadChecker<TEntity>,
* AccessEntityEditChecker<TEntity>, AccessEntityDeleteChecker<TEntity>, AccessEntityStreamChecker<TEntity>
*/
interface AccessEntityCREDSChecker extends
AccessEntityCreateChecker,
@@ -30,13 +30,17 @@
namespace Espo\Core\Acl;
use Espo\ORM\Entity;
use Espo\Entities\User;
/**
* @template TEntity of Entity
*/
interface AccessEntityCreateChecker extends AccessCreateChecker
{
/**
* Check 'create' access for an entity.
*
* @phpstan-param TEntity $entity
*/
public function checkEntityCreate(User $user, Entity $entity, ScopeData $data): bool;
}
@@ -30,13 +30,17 @@
namespace Espo\Core\Acl;
use Espo\ORM\Entity;
use Espo\Entities\User;
/**
* @template TEntity of Entity
*/
interface AccessEntityDeleteChecker extends AccessDeleteChecker
{
/**
* Check 'delete' access for an entity.
*
* @phpstan-param TEntity $entity
*/
public function checkEntityDelete(User $user, Entity $entity, ScopeData $data): bool;
}
@@ -30,13 +30,17 @@
namespace Espo\Core\Acl;
use Espo\ORM\Entity;
use Espo\Entities\User;
/**
* @template TEntity of Entity
*/
interface AccessEntityEditChecker extends AccessEditChecker
{
/**
* Check 'edit' access for an entity.
*
* @phpstan-param TEntity $entity
*/
public function checkEntityEdit(User $user, Entity $entity, ScopeData $data): bool;
}
@@ -30,13 +30,17 @@
namespace Espo\Core\Acl;
use Espo\ORM\Entity;
use Espo\Entities\User;
/**
* @template TEntity of Entity
*/
interface AccessEntityReadChecker extends AccessReadChecker
{
/**
* Check 'read' access for entity.
*
* @phpstan-param TEntity $entity
*/
public function checkEntityRead(User $user, Entity $entity, ScopeData $data): bool;
}
@@ -30,13 +30,17 @@
namespace Espo\Core\Acl;
use Espo\ORM\Entity;
use Espo\Entities\User;
/**
* @template TEntity of Entity
*/
interface AccessEntityStreamChecker extends AccessStreamChecker
{
/**
* Check 'stream' access for an entity.
*
* @phpstan-param TEntity $entity
*/
public function checkEntityStream(User $user, Entity $entity, ScopeData $data): bool;
}
@@ -34,7 +34,13 @@ use Espo\ORM\{
Entity,
};
/**
* @template TEntity of Entity
*/
interface WhereBuilder
{
/**
* @phpstan-param TEntity $entity
*/
public function build(Entity $entity): ?WhereItem;
}
@@ -35,8 +35,13 @@ use Espo\Core\FieldProcessing\Loader\Params;
/**
* Processes loading special fields before output.
*
* @template TEntity of Entity
*/
interface Loader
{
/**
* @phpstan-param TEntity $entity
*/
public function process(Entity $entity, Params $params): void;
}
@@ -31,7 +31,13 @@ namespace Espo\Core\Record\Hook;
use Espo\ORM\Entity;
/**
* @template TEntity of Entity
*/
interface LinkHook
{
/**
* @phpstan-param TEntity $entity
*/
public function process(Entity $entity, string $link, Entity $foreignEntity): void;
}
+1 -1
View File
@@ -87,7 +87,7 @@ class Pdf implements EntryPoint
->setHeader('Content-Disposition', 'inline; filename="' . basename($fileName) . '"');
if (!$request->getServerParam('HTTP_ACCEPT_ENCODING')) {
$response->setHeader('Content-Length', strlen($contents));
$response->setHeader('Content-Length', (string) strlen($contents));
}
$response->writeBody($contents);
@@ -30,8 +30,8 @@
namespace Espo\Hooks\Common;
use Espo\ORM\Entity;
use Espo\Core\FieldProcessing\SaveProcessor;
use Espo\Core\ORM\Entity as CoreEntity;
class FieldProcessing
{
@@ -50,6 +50,10 @@ class FieldProcessing
return;
}
if (!$entity instanceof CoreEntity) {
return;
}
$this->saveProcessor->process($entity, $options);
}
}
@@ -30,6 +30,7 @@
namespace Espo\Hooks\Common;
use Espo\ORM\Entity;
use Espo\Core\ORM\Entity as CoreEntity;
use Espo\Core\{
Utils\Metadata,
@@ -60,6 +61,10 @@ class Webhook
return;
}
if (!$entity instanceof CoreEntity) {
return;
}
if ($entity->isNew()) {
$this->webhookManager->processCreate($entity);
}
@@ -78,6 +83,10 @@ class Webhook
return;
}
if (!$entity instanceof CoreEntity) {
return;
}
$this->webhookManager->processDelete($entity);
}
}
+3
View File
@@ -31,6 +31,7 @@ namespace Espo\Hooks\Note;
use Espo\Tools\Notification\NoteMentionHookProcessor;
use Espo\ORM\Entity;
use Espo\Entities\Note;
class Mentions
{
@@ -49,6 +50,8 @@ class Mentions
return;
}
assert($entity instanceof Note);
$this->processor->beforeSave($entity);
}
}
@@ -31,6 +31,7 @@ namespace Espo\Hooks\Note;
use Espo\ORM\Entity;
use Espo\Tools\Notification\NoteHookProcessor;
use Espo\Entities\Note;
class Notifications
{
@@ -49,6 +50,8 @@ class Notifications
return;
}
assert($entity instanceof Note);
$this->processor->afterSave($entity);
}
}
+2
View File
@@ -47,6 +47,8 @@ class Numbers
public function beforeSave(Entity $entity): void
{
assert($entity instanceof Sms);
$this->processNumbers($entity);
}
+1 -1
View File
@@ -76,7 +76,7 @@ class Attachment extends Database implements
}
}
protected function processBeforeSaveNew(Entity $entity): void
protected function processBeforeSaveNew(AttachmentEntity $entity): void
{
if (!$entity->get('storage')) {
$defaultStorage = $this->config->get('defaultFileStorage');