diff --git a/application/Espo/Classes/Acl/ActionHistoryRecord/OwnershipChecker.php b/application/Espo/Classes/Acl/ActionHistoryRecord/OwnershipChecker.php index 96cef8df07..551e546d74 100644 --- a/application/Espo/Classes/Acl/ActionHistoryRecord/OwnershipChecker.php +++ b/application/Espo/Classes/Acl/ActionHistoryRecord/OwnershipChecker.php @@ -37,6 +37,9 @@ use Espo\Core\{ Acl\OwnershipOwnChecker, }; +/** + * @implements OwnershipOwnChecker<\Espo\Entities\ActionHistoryRecord> + */ class OwnershipChecker implements OwnershipOwnChecker { public function checkOwn(User $user, Entity $entity): bool diff --git a/application/Espo/Classes/Acl/Attachment/OwnershipChecker.php b/application/Espo/Classes/Acl/Attachment/OwnershipChecker.php index 611244ae92..0d96045133 100644 --- a/application/Espo/Classes/Acl/Attachment/OwnershipChecker.php +++ b/application/Espo/Classes/Acl/Attachment/OwnershipChecker.php @@ -37,6 +37,9 @@ use Espo\Core\{ Acl\OwnershipOwnChecker, }; +/** + * @implements OwnershipOwnChecker<\Espo\Entities\Attachment> + */ class OwnershipChecker implements OwnershipOwnChecker { private const ATTR_CREATED_BY_ID = 'createdById'; diff --git a/application/Espo/Classes/Acl/Email/OwnershipChecker.php b/application/Espo/Classes/Acl/Email/OwnershipChecker.php index 59b47fd0b9..3fca727773 100644 --- a/application/Espo/Classes/Acl/Email/OwnershipChecker.php +++ b/application/Espo/Classes/Acl/Email/OwnershipChecker.php @@ -40,6 +40,10 @@ use Espo\Core\{ Acl\OwnershipTeamChecker, }; +/** + * @implements OwnershipOwnChecker<\Espo\Entities\Email> + * @implements OwnershipTeamChecker<\Espo\Entities\Email> + */ class OwnershipChecker implements OwnershipOwnChecker, OwnershipTeamChecker { private $defaultOwnershipChecker; diff --git a/application/Espo/Classes/Acl/EmailFilter/OwnershipChecker.php b/application/Espo/Classes/Acl/EmailFilter/OwnershipChecker.php index bdfc8eb840..b2588f1ae7 100644 --- a/application/Espo/Classes/Acl/EmailFilter/OwnershipChecker.php +++ b/application/Espo/Classes/Acl/EmailFilter/OwnershipChecker.php @@ -38,6 +38,9 @@ use Espo\Core\{ ORM\EntityManager, }; +/** + * @implements OwnershipOwnChecker<\Espo\Entities\EmailFilter> + */ class OwnershipChecker implements OwnershipOwnChecker { private $entityManager; diff --git a/application/Espo/Classes/Acl/Note/OwnershipChecker.php b/application/Espo/Classes/Acl/Note/OwnershipChecker.php index 3e80ebce74..a1727055b0 100644 --- a/application/Espo/Classes/Acl/Note/OwnershipChecker.php +++ b/application/Espo/Classes/Acl/Note/OwnershipChecker.php @@ -37,11 +37,13 @@ use Espo\Core\{ Acl\OwnershipOwnChecker, }; +/** + * @implements OwnershipOwnChecker<\Espo\Entities\Note> + */ class OwnershipChecker implements OwnershipOwnChecker { public function checkOwn(User $user, Entity $entity): bool { - if ($entity->get('type') === 'Post' && $user->getId() === $entity->get('createdById')) { return true; } diff --git a/application/Espo/Classes/Acl/Notification/OwnershipChecker.php b/application/Espo/Classes/Acl/Notification/OwnershipChecker.php index 70fdb46bbf..603df1a8c4 100644 --- a/application/Espo/Classes/Acl/Notification/OwnershipChecker.php +++ b/application/Espo/Classes/Acl/Notification/OwnershipChecker.php @@ -37,6 +37,9 @@ use Espo\Core\{ Acl\OwnershipOwnChecker, }; +/** + * @implements OwnershipOwnChecker<\Espo\Entities\Notification> + */ class OwnershipChecker implements OwnershipOwnChecker { public function checkOwn(User $user, Entity $entity): bool diff --git a/application/Espo/Classes/Acl/Team/OwnershipChecker.php b/application/Espo/Classes/Acl/Team/OwnershipChecker.php index dadb95afa2..229b54eeba 100644 --- a/application/Espo/Classes/Acl/Team/OwnershipChecker.php +++ b/application/Espo/Classes/Acl/Team/OwnershipChecker.php @@ -37,6 +37,9 @@ use Espo\Core\{ Acl\OwnershipOwnChecker, }; +/** + * @implements OwnershipOwnChecker<\Espo\Entities\Team> + */ class OwnershipChecker implements OwnershipOwnChecker { public function checkOwn(User $user, Entity $entity): bool diff --git a/application/Espo/Classes/Acl/User/OwnershipChecker.php b/application/Espo/Classes/Acl/User/OwnershipChecker.php index e55a6fd749..943d994e71 100644 --- a/application/Espo/Classes/Acl/User/OwnershipChecker.php +++ b/application/Espo/Classes/Acl/User/OwnershipChecker.php @@ -38,6 +38,10 @@ use Espo\Core\{ Acl\OwnershipTeamChecker, }; +/** + * @implements OwnershipOwnChecker<\Espo\Entities\User> + * @implements OwnershipTeamChecker<\Espo\Entities\User> + */ class OwnershipChecker implements OwnershipOwnChecker, OwnershipTeamChecker { public function checkOwn(User $user, Entity $entity): bool diff --git a/application/Espo/Classes/Acl/Webhook/OwnershipChecker.php b/application/Espo/Classes/Acl/Webhook/OwnershipChecker.php index 773845e213..1b60232aa4 100644 --- a/application/Espo/Classes/Acl/Webhook/OwnershipChecker.php +++ b/application/Espo/Classes/Acl/Webhook/OwnershipChecker.php @@ -30,13 +30,13 @@ namespace Espo\Classes\Acl\Webhook; use Espo\Entities\User; - use Espo\ORM\Entity; -use Espo\Core\{ - Acl\OwnershipOwnChecker, -}; +use Espo\Core\Acl\OwnershipOwnChecker; +/** + * @implements OwnershipOwnChecker<\Espo\Entities\Webhook> + */ class OwnershipChecker implements OwnershipOwnChecker { public function checkOwn(User $user, Entity $entity): bool diff --git a/application/Espo/Classes/AclPortal/Attachment/OwnershipChecker.php b/application/Espo/Classes/AclPortal/Attachment/OwnershipChecker.php index 925631885b..006bf9807d 100644 --- a/application/Espo/Classes/AclPortal/Attachment/OwnershipChecker.php +++ b/application/Espo/Classes/AclPortal/Attachment/OwnershipChecker.php @@ -37,6 +37,9 @@ use Espo\Core\{ Acl\OwnershipOwnChecker, }; +/** + * @implements OwnershipOwnChecker<\Espo\Entities\Attachment> + */ class OwnershipChecker implements OwnershipOwnChecker { private const ATTR_CREATED_BY_ID = 'createdById'; diff --git a/application/Espo/Classes/AclPortal/Email/OwnershipChecker.php b/application/Espo/Classes/AclPortal/Email/OwnershipChecker.php index 1fe7ae941a..fde27a265c 100644 --- a/application/Espo/Classes/AclPortal/Email/OwnershipChecker.php +++ b/application/Espo/Classes/AclPortal/Email/OwnershipChecker.php @@ -37,6 +37,9 @@ use Espo\Core\{ Acl\OwnershipOwnChecker, }; +/** + * @implements OwnershipOwnChecker<\Espo\Entities\Email> + */ class OwnershipChecker implements OwnershipOwnChecker { public function checkOwn(User $user, Entity $entity): bool diff --git a/application/Espo/Classes/AclPortal/Note/OwnershipChecker.php b/application/Espo/Classes/AclPortal/Note/OwnershipChecker.php index 16d72c2ddd..4c9037a8ac 100644 --- a/application/Espo/Classes/AclPortal/Note/OwnershipChecker.php +++ b/application/Espo/Classes/AclPortal/Note/OwnershipChecker.php @@ -37,6 +37,9 @@ use Espo\Core\{ Acl\OwnershipOwnChecker, }; +/** + * @implements OwnershipOwnChecker<\Espo\Entities\Note> + */ class OwnershipChecker implements OwnershipOwnChecker { public function checkOwn(User $user, Entity $entity): bool diff --git a/application/Espo/Classes/AclPortal/Notification/OwnershipChecker.php b/application/Espo/Classes/AclPortal/Notification/OwnershipChecker.php index 03470a1849..590ba6ebc3 100644 --- a/application/Espo/Classes/AclPortal/Notification/OwnershipChecker.php +++ b/application/Espo/Classes/AclPortal/Notification/OwnershipChecker.php @@ -37,6 +37,9 @@ use Espo\Core\{ Acl\OwnershipOwnChecker, }; +/** + * @implements OwnershipOwnChecker<\Espo\Entities\Notification> + */ class OwnershipChecker implements OwnershipOwnChecker { public function checkOwn(User $user, Entity $entity): bool diff --git a/application/Espo/Classes/AclPortal/User/OwnershipChecker.php b/application/Espo/Classes/AclPortal/User/OwnershipChecker.php index 1683295a0a..c816457d4e 100644 --- a/application/Espo/Classes/AclPortal/User/OwnershipChecker.php +++ b/application/Espo/Classes/AclPortal/User/OwnershipChecker.php @@ -37,6 +37,9 @@ use Espo\Core\{ Acl\OwnershipOwnChecker, }; +/** + * @implements OwnershipOwnChecker<\Espo\Entities\User> + */ class OwnershipChecker implements OwnershipOwnChecker { public function checkOwn(User $user, Entity $entity): bool diff --git a/application/Espo/Core/Acl/AssignmentChecker.php b/application/Espo/Core/Acl/AssignmentChecker.php index cd9c4f43b0..7fffac070e 100644 --- a/application/Espo/Core/Acl/AssignmentChecker.php +++ b/application/Espo/Core/Acl/AssignmentChecker.php @@ -33,10 +33,15 @@ use Espo\ORM\Entity; use Espo\Entities\User; +/** + * @template TEntity of Entity + */ interface AssignmentChecker { /** * Check assignment. + * + * @param TEntity $entity */ public function check(User $user, Entity $entity): bool; } diff --git a/application/Espo/Core/Acl/AssignmentChecker/AssignmentCheckerFactory.php b/application/Espo/Core/Acl/AssignmentChecker/AssignmentCheckerFactory.php index 14ed89a089..0594ff5e50 100644 --- a/application/Espo/Core/Acl/AssignmentChecker/AssignmentCheckerFactory.php +++ b/application/Espo/Core/Acl/AssignmentChecker/AssignmentCheckerFactory.php @@ -59,6 +59,7 @@ class AssignmentCheckerFactory /** * Create an access checker. * + * @return AssignmentChecker<\Espo\ORM\Entity> * @throws NotImplemented */ public function create(string $scope): AssignmentChecker diff --git a/application/Espo/Core/Acl/AssignmentChecker/AssignmentCheckerManager.php b/application/Espo/Core/Acl/AssignmentChecker/AssignmentCheckerManager.php index 8b66c738a8..18fb969035 100644 --- a/application/Espo/Core/Acl/AssignmentChecker/AssignmentCheckerManager.php +++ b/application/Espo/Core/Acl/AssignmentChecker/AssignmentCheckerManager.php @@ -38,7 +38,7 @@ use Espo\Core\Acl\AssignmentChecker; class AssignmentCheckerManager { /** - * @var array + * @var array> */ private $checkerCache = []; @@ -58,6 +58,9 @@ class AssignmentCheckerManager return $checker->check($user, $entity); } + /** + * @return AssignmentChecker + */ private function getChecker(string $entityType): AssignmentChecker { if (!array_key_exists($entityType, $this->checkerCache)) { diff --git a/application/Espo/Core/Acl/DefaultAssignmentChecker.php b/application/Espo/Core/Acl/DefaultAssignmentChecker.php index 5c4f738d51..fbade2590e 100644 --- a/application/Espo/Core/Acl/DefaultAssignmentChecker.php +++ b/application/Espo/Core/Acl/DefaultAssignmentChecker.php @@ -47,6 +47,9 @@ use Espo\Core\{ Acl\Table, }; +/** + * @implements AssignmentChecker + */ class DefaultAssignmentChecker implements AssignmentChecker { protected const FIELD_ASSIGNED_USERS = 'assignedUsers'; diff --git a/application/Espo/Core/Acl/DefaultOwnershipChecker.php b/application/Espo/Core/Acl/DefaultOwnershipChecker.php index 0403e61a84..67a89e501b 100644 --- a/application/Espo/Core/Acl/DefaultOwnershipChecker.php +++ b/application/Espo/Core/Acl/DefaultOwnershipChecker.php @@ -35,6 +35,9 @@ use Espo\Entities\User; /** * A default implementation for ownership checking. + * + * @implements OwnershipOwnChecker + * @implements OwnershipTeamChecker */ class DefaultOwnershipChecker implements OwnershipOwnChecker, OwnershipTeamChecker { diff --git a/application/Espo/Core/Acl/OwnershipChecker.php b/application/Espo/Core/Acl/OwnershipChecker.php index c111bde091..45a287f9f6 100644 --- a/application/Espo/Core/Acl/OwnershipChecker.php +++ b/application/Espo/Core/Acl/OwnershipChecker.php @@ -29,7 +29,4 @@ namespace Espo\Core\Acl; -interface OwnershipChecker -{ - -} +interface OwnershipChecker {} diff --git a/application/Espo/Core/Acl/OwnershipOwnChecker.php b/application/Espo/Core/Acl/OwnershipOwnChecker.php index d0595d452c..5535593147 100644 --- a/application/Espo/Core/Acl/OwnershipOwnChecker.php +++ b/application/Espo/Core/Acl/OwnershipOwnChecker.php @@ -30,13 +30,17 @@ namespace Espo\Core\Acl; use Espo\ORM\Entity; - use Espo\Entities\User; +/** + * @template TEntity of Entity + */ interface OwnershipOwnChecker extends OwnershipChecker { /** * Check whether a user is an owner of an entity. + * + * @param TEntity $entity */ public function checkOwn(User $user, Entity $entity): bool; } diff --git a/application/Espo/Core/Acl/OwnershipTeamChecker.php b/application/Espo/Core/Acl/OwnershipTeamChecker.php index e320ac6275..6accc0a95d 100644 --- a/application/Espo/Core/Acl/OwnershipTeamChecker.php +++ b/application/Espo/Core/Acl/OwnershipTeamChecker.php @@ -30,13 +30,17 @@ namespace Espo\Core\Acl; use Espo\ORM\Entity; - use Espo\Entities\User; +/** + * @template TEntity of Entity + */ interface OwnershipTeamChecker extends OwnershipChecker { /** * Check whether an entity belongs to a user team. + * + * @param TEntity $entity */ public function checkTeam(User $user, Entity $entity): bool; } diff --git a/application/Espo/Core/Portal/Acl/DefaultOwnershipChecker.php b/application/Espo/Core/Portal/Acl/DefaultOwnershipChecker.php index 8bd8cde219..e6406ea75b 100644 --- a/application/Espo/Core/Portal/Acl/DefaultOwnershipChecker.php +++ b/application/Espo/Core/Portal/Acl/DefaultOwnershipChecker.php @@ -43,12 +43,15 @@ use Espo\Core\{ /** * A default implementation for ownership checking for portal. + * + * @implements OwnershipOwnChecker<\Espo\Core\ORM\Entity> + * @implements OwnershipAccountChecker<\Espo\Core\ORM\Entity> + * @implements OwnershipContactChecker<\Espo\Core\ORM\Entity> */ class DefaultOwnershipChecker implements OwnershipOwnChecker, OwnershipAccountChecker, OwnershipContactChecker - { private const ENTITY_ACCOUNT = 'Account'; diff --git a/application/Espo/Core/Portal/Acl/OwnershipAccountChecker.php b/application/Espo/Core/Portal/Acl/OwnershipAccountChecker.php index 7a69bf7672..bdc3e035a6 100644 --- a/application/Espo/Core/Portal/Acl/OwnershipAccountChecker.php +++ b/application/Espo/Core/Portal/Acl/OwnershipAccountChecker.php @@ -30,15 +30,19 @@ namespace Espo\Core\Portal\Acl; use Espo\ORM\Entity; - use Espo\Entities\User; use Espo\Core\Acl\OwnershipChecker; +/** + * @template TEntity of Entity + */ interface OwnershipAccountChecker extends OwnershipChecker { /** * Check whether an entity belongs to a portal user account. + * + * @param TEntity $entity */ public function checkAccount(User $user, Entity $entity): bool; } diff --git a/application/Espo/Core/Portal/Acl/OwnershipContactChecker.php b/application/Espo/Core/Portal/Acl/OwnershipContactChecker.php index 016fbd5cb9..25f393374d 100644 --- a/application/Espo/Core/Portal/Acl/OwnershipContactChecker.php +++ b/application/Espo/Core/Portal/Acl/OwnershipContactChecker.php @@ -30,15 +30,19 @@ namespace Espo\Core\Portal\Acl; use Espo\ORM\Entity; - use Espo\Entities\User; use Espo\Core\Acl\OwnershipChecker; +/** + * @template TEntity of Entity + */ interface OwnershipContactChecker extends OwnershipChecker { /** * Check whether an entity belongs to a portal user contact. + * + * @param TEntity $entity */ public function checkContact(User $user, Entity $entity): bool; } diff --git a/application/Espo/Modules/Crm/Classes/Acl/CampaignLogRecord/OwnershipChecker.php b/application/Espo/Modules/Crm/Classes/Acl/CampaignLogRecord/OwnershipChecker.php index fbd7fd6fca..bc8e2f91d8 100644 --- a/application/Espo/Modules/Crm/Classes/Acl/CampaignLogRecord/OwnershipChecker.php +++ b/application/Espo/Modules/Crm/Classes/Acl/CampaignLogRecord/OwnershipChecker.php @@ -40,6 +40,10 @@ use Espo\Core\{ ORM\EntityManager, }; +/** + * @implements OwnershipOwnChecker<\Espo\Modules\Crm\Entities\CampaignLogRecord> + * @implements OwnershipTeamChecker<\Espo\Modules\Crm\Entities\CampaignLogRecord> + */ class OwnershipChecker implements OwnershipOwnChecker, OwnershipTeamChecker { private $aclManager; diff --git a/application/Espo/Modules/Crm/Classes/Acl/CampaignTrackingUrl/OwnershipChecker.php b/application/Espo/Modules/Crm/Classes/Acl/CampaignTrackingUrl/OwnershipChecker.php index 49c59ca9fd..9375d0ff00 100644 --- a/application/Espo/Modules/Crm/Classes/Acl/CampaignTrackingUrl/OwnershipChecker.php +++ b/application/Espo/Modules/Crm/Classes/Acl/CampaignTrackingUrl/OwnershipChecker.php @@ -40,6 +40,10 @@ use Espo\Core\{ ORM\EntityManager, }; +/** + * @implements OwnershipOwnChecker<\Espo\Modules\Crm\Entities\CampaignTrackingUrl> + * @implements OwnershipTeamChecker<\Espo\Modules\Crm\Entities\CampaignTrackingUrl> + */ class OwnershipChecker implements OwnershipOwnChecker, OwnershipTeamChecker { private $aclManager; diff --git a/application/Espo/Modules/Crm/Classes/Acl/MassEmail/OwnershipChecker.php b/application/Espo/Modules/Crm/Classes/Acl/MassEmail/OwnershipChecker.php index bdfc560c05..2fc39c72b9 100644 --- a/application/Espo/Modules/Crm/Classes/Acl/MassEmail/OwnershipChecker.php +++ b/application/Espo/Modules/Crm/Classes/Acl/MassEmail/OwnershipChecker.php @@ -40,6 +40,10 @@ use Espo\Core\{ ORM\EntityManager, }; +/** + * @implements OwnershipOwnChecker<\Espo\Modules\Crm\Entities\MassEmail> + * @implements OwnershipTeamChecker<\Espo\Modules\Crm\Entities\MassEmail> + */ class OwnershipChecker implements OwnershipOwnChecker, OwnershipTeamChecker { private $aclManager; diff --git a/application/Espo/Modules/Crm/Classes/AclPortal/Account/OwnershipChecker.php b/application/Espo/Modules/Crm/Classes/AclPortal/Account/OwnershipChecker.php index 994c9239c0..915963a56b 100644 --- a/application/Espo/Modules/Crm/Classes/AclPortal/Account/OwnershipChecker.php +++ b/application/Espo/Modules/Crm/Classes/AclPortal/Account/OwnershipChecker.php @@ -37,6 +37,9 @@ use Espo\Core\{ Portal\Acl\OwnershipAccountChecker, }; +/** + * @implements OwnershipAccountChecker<\Espo\Modules\Crm\Entities\Account> + */ class OwnershipChecker implements OwnershipAccountChecker { public function checkAccount(User $user, Entity $entity): bool diff --git a/application/Espo/Modules/Crm/Classes/AclPortal/Contact/OwnershipChecker.php b/application/Espo/Modules/Crm/Classes/AclPortal/Contact/OwnershipChecker.php index 8ec5cfa6ac..ace8aaf476 100644 --- a/application/Espo/Modules/Crm/Classes/AclPortal/Contact/OwnershipChecker.php +++ b/application/Espo/Modules/Crm/Classes/AclPortal/Contact/OwnershipChecker.php @@ -39,6 +39,10 @@ use Espo\Core\{ Portal\Acl\OwnershipContactChecker, }; +/** + * @implements OwnershipAccountChecker<\Espo\Modules\Crm\Entities\Contact> + * @implements OwnershipContactChecker<\Espo\Modules\Crm\Entities\Contact> + */ class OwnershipChecker implements OwnershipAccountChecker, OwnershipContactChecker { private $defaultOwnershipChecker;