em = $em; $this->defaultDomain = $defaultDomain; } /** * @return DomainItem[] */ public function listDomains(?ApiKey $apiKey = null): array { /** @var DomainRepositoryInterface $repo */ $repo = $this->em->getRepository(Domain::class); $domains = $repo->findDomainsWithout($this->defaultDomain, $apiKey); $mappedDomains = map($domains, fn (Domain $domain) => new DomainItem($domain->getAuthority(), false)); if ($apiKey !== null && $apiKey->hasRole(Role::DOMAIN_SPECIFIC)) { return $mappedDomains; } return [ new DomainItem($this->defaultDomain, true), ...$mappedDomains, ]; } }