diff --git a/app/controllers/general.php b/app/controllers/general.php index 334cdb237d..2bad277729 100644 --- a/app/controllers/general.php +++ b/app/controllers/general.php @@ -74,31 +74,42 @@ App::init(function ($utopia, $request, $response, $console, $project, $dbForCons } else { Authorization::disable(); - $domainDocument = $dbForConsole->findOne('domains', [ - new Query('domain', QUERY::TYPE_EQUAL, [$domain->get()]) - ]); + $mainDomain = null; + if(!empty(App::getEnv('_APP_DOMAIN', ''))) { + $mainDomain = App::getEnv('_APP_DOMAIN', ''); + } else { + $domainDocument = $dbForConsole->findOne('domains', [], 0, ['_id'], ['ASC']); + $mainDomain = $domainDocument ? $domainDocument->getAttribute('domain') : $domain->get(); + } - if (!$domainDocument) { - $domainDocument = new Document([ - 'domain' => $domain->get(), - 'tld' => $domain->getSuffix(), - 'registerable' => $domain->getRegisterable(), - 'verification' => false, - 'certificateId' => null, + if($mainDomain !== $domain->get()) { + Console::warning($domain->get() . ' is not a main domain. Skipping SSL certificate generation.'); + } else { + $domainDocument = $dbForConsole->findOne('domains', [ + new Query('domain', QUERY::TYPE_EQUAL, [$domain->get()]) ]); - $domainDocument = $dbForConsole->createDocument('domains', $domainDocument); + if (!$domainDocument) { + $domainDocument = new Document([ + 'domain' => $domain->get(), + 'tld' => $domain->getSuffix(), + 'registerable' => $domain->getRegisterable(), + 'verification' => false, + 'certificateId' => null, + ]); - Console::info('Issuing a TLS certificate for the master domain (' . $domain->get() . ') in a few seconds...'); + $domainDocument = $dbForConsole->createDocument('domains', $domainDocument); - $event = new Certificate(); - $event - ->setDomain($domainDocument) - ->trigger(); + Console::info('Issuing a TLS certificate for the main domain (' . $domain->get() . ') in a few seconds...'); + + $event = new Certificate(); + $event + ->setDomain($domainDocument) + ->trigger(); + } } $domains[$domain->get()] = true; - Authorization::reset(); // ensure authorization is re-enabled } Config::setParam('domains', $domains);