'required|string|max:10', 'timezone' => 'required|string|max:64', 'session_timeout' => 'nullable|integer|min:5|max:1440', 'ui_domain' => 'nullable|string|max:190', 'mail_domain' => 'nullable|string|max:190', 'webmail_domain' => 'nullable|string|max:190', 'ssl_auto' => 'boolean', 'twofa_enabled' => 'boolean', 'rate_limit' => 'nullable|integer|min:1|max:100', 'password_min' => 'nullable|integer|min:6|max:128', ]; } public function mount(): void { // Anzeige-Name der Instanz – lies was du hast (z.B. config('app.name')) $this->instance_name = (string) (config('app.name') ?? 'MailWolt'); // Laden aus unserem einfachen Store $this->locale = Setting::get('locale', $this->locale); $this->timezone = Setting::get('timezone', $this->timezone); $this->session_timeout = (int) Setting::get('session_timeout', $this->session_timeout); $this->ui_domain = Setting::get('ui_domain', $this->ui_domain); $this->mail_domain = Setting::get('mail_domain', $this->mail_domain); $this->webmail_domain = Setting::get('webmail_domain', $this->webmail_domain); $this->ssl_auto = (bool) Setting::get('ssl_auto', $this->ssl_auto); $this->twofa_enabled = (bool) Setting::get('twofa_enabled', $this->twofa_enabled); $this->rate_limit = (int) Setting::get('rate_limit', $this->rate_limit); $this->password_min = (int) Setting::get('password_min', $this->password_min); } public function save(): void { $this->validate(); Setting::put('locale', $this->locale); Setting::put('timezone', $this->timezone); Setting::put('session_timeout', $this->session_timeout); Setting::put('ui_domain', $this->ui_domain); Setting::put('mail_domain', $this->mail_domain); Setting::put('webmail_domain', $this->webmail_domain); Setting::put('ssl_auto', $this->ssl_auto); Setting::put('twofa_enabled', $this->twofa_enabled); Setting::put('rate_limit', $this->rate_limit); Setting::put('password_min', $this->password_min); $this->dispatch('toast', type: 'success', message: 'Einstellungen gespeichert'); // optional } public function render() { return view('livewire.ui.system.settings-form'); } }