tenantScopeService()->hasGlobalAccess($userId); } public function getUserTenantIds(int $userId): array { return $this->tenantScopeService()->getUserTenantIds($userId); } public function isStrict(): bool { return $this->tenantScopeService()->isStrict(); } public function canAccess(string $resourceType, int $resourceId, int $userId): bool { return $this->tenantScopeService()->canAccess($resourceType, $resourceId, $userId); } public function resourceBelongsToTenant(string $resourceType, int $resourceId, int $tenantId): bool { return $this->tenantScopeService()->resourceBelongsToTenant($resourceType, $resourceId, $tenantId); } public function filterTenantIdsForUser(array $tenantIds, int $userId): array { return $this->tenantScopeService()->filterTenantIdsForUser($tenantIds, $userId); } public function mergeTenantIdsPreservingOutOfScope( array $requestedTenantIds, array $existingTenantIds, array $allowedTenantIds ): array { return $this->tenantScopeService()->mergeTenantIdsPreservingOutOfScope( $requestedTenantIds, $existingTenantIds, $allowedTenantIds ); } private function tenantScopeService(): TenantScopeService { if ($this->tenantScopeService instanceof TenantScopeService) { return $this->tenantScopeService; } return (new TenantServicesFactory())->createTenantScopeService(); } }