diff --git a/app/Jobs/ProvisionHostingSslJob.php b/app/Jobs/ProvisionHostingSslJob.php index e305be3..61cf610 100644 --- a/app/Jobs/ProvisionHostingSslJob.php +++ b/app/Jobs/ProvisionHostingSslJob.php @@ -56,6 +56,16 @@ class ProvisionHostingSslJob implements ShouldQueue $site->update(['ssl_status' => 'provisioning']); + // Surface this site's domain in Ladill Domains' "My Domains" (best-effort, + // independent of SSL outcome). + if ($account->user?->public_id) { + app(\App\Services\Ssl\CentralSslRegistry::class)->registerConnectedDomain( + $site->domain, + (string) $account->user->public_id, + 'Hosting: '.$site->domain, + ); + } + try { $provider->requestLetsEncryptCertificate($site); diff --git a/app/Services/Ssl/CentralSslRegistry.php b/app/Services/Ssl/CentralSslRegistry.php index d72fb40..2627f3b 100644 --- a/app/Services/Ssl/CentralSslRegistry.php +++ b/app/Services/Ssl/CentralSslRegistry.php @@ -31,4 +31,26 @@ class CentralSslRegistry Log::info('CentralSslRegistry: register skipped', ['host' => $host, 'error' => $e->getMessage()]); } } + + /** Surface a hosted-site domain in Ladill Domains' "My Domains" (best-effort). */ + public function registerConnectedDomain(string $host, string $ownerPublicId, ?string $label = null, ?string $linkUrl = null): void + { + $url = rtrim((string) config('domains.api_url'), '/'); + $key = (string) config('domains.api_key'); + if ($url === '' || $key === '' || $host === '' || $ownerPublicId === '') { + return; + } + + try { + Http::withToken($key)->acceptJson()->timeout(10) + ->post($url.'/connected-domains', array_filter([ + 'host' => $host, + 'owner_public_id' => $ownerPublicId, + 'label' => $label, + 'link_url' => $linkUrl, + ])); + } catch (\Throwable $e) { + Log::info('CentralSslRegistry: connected register skipped', ['host' => $host, 'error' => $e->getMessage()]); + } + } }