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, ]; } public function getDomain(string $domainId): Domain { /** @var Domain|null $domain */ $domain = $this->em->find(Domain::class, $domainId); if ($domain === null) { throw DomainNotFoundException::fromId($domainId); } return $domain; } }