authorize('hosts.manage'); $this->dnsZone = ProvisioningSettings::dnsZone(); $this->wgEndpoint = ProvisioningSettings::wgEndpoint(); $this->wgHubPubkey = ProvisioningSettings::wgHubPublicKey(); $this->traefikDynamicPath = ProvisioningSettings::traefikDynamicPath(); $this->sshPublicKey = ProvisioningSettings::sshPublicKey(); $this->monitoringUrl = ProvisioningSettings::monitoringUrl(); } public function save(): void { $this->authorize('hosts.manage'); $data = $this->validate([ 'dnsZone' => ['nullable', 'string', 'max:255'], 'wgEndpoint' => ['nullable', 'string', 'max:255'], 'wgHubPubkey' => ['nullable', 'string', 'max:255'], 'traefikDynamicPath' => ['nullable', 'string', 'max:255'], 'sshPublicKey' => ['nullable', 'string', 'max:1000'], 'monitoringUrl' => ['nullable', 'url', 'max:255'], ]); Settings::set('provisioning.dns_zone', trim((string) $data['dnsZone'])); Settings::set('provisioning.wg_endpoint', trim((string) $data['wgEndpoint'])); Settings::set('provisioning.wg_hub_pubkey', trim((string) $data['wgHubPubkey'])); Settings::set('provisioning.traefik_dynamic_path', trim((string) $data['traefikDynamicPath'])); Settings::set('provisioning.ssh_public_key', trim((string) $data['sshPublicKey'])); Settings::set('monitoring.api_url', trim((string) $data['monitoringUrl'])); $this->dispatch('notify', message: __('infrastructure.saved')); } public function render() { return view('livewire.admin.infrastructure'); } }