*/ public array $values = []; public function mount(): void { $this->loadValues(); } public function save(): void { foreach ($this->values as $key => $value) { if (str_contains($value, "\n") || str_contains($value, "\r")) { $this->addError('values', "La valeur de {$key} ne peut pas contenir de retour à la ligne."); return; } } foreach (SettingsRegistry::configMap() as $envKey => $path) { $value = trim($this->values[$envKey] ?? ''); Setting::updateOrCreate(['key' => $envKey], ['value' => $value === '' ? null : $value]); } Cache::forget(SettingsRegistry::CACHE_KEY); session()->flash('status', 'Configuration enregistrée. Les nouvelles valeurs sont actives immédiatement.'); $this->loadValues(); } public function resetToDefault(string $envKey): void { if (! array_key_exists($envKey, SettingsRegistry::configMap())) { return; } Setting::where('key', $envKey)->delete(); Cache::forget(SettingsRegistry::CACHE_KEY); session()->flash('status', "Valeur par défaut restaurée pour {$envKey}."); $this->loadValues(); } protected function loadValues(): void { $stored = Setting::query()->pluck('value', 'key'); foreach (SettingsRegistry::configMap() as $envKey => $path) { $this->values[$envKey] = $stored[$envKey] ?? (string) (config($path) ?? ''); } } }; ?>
Ces réglages sont stockés en base de données et prennent effet immédiatement, sans
redémarrage. Les paramètres d'infrastructure (base de données, clé de chiffrement,
pilote de session…) ne sont pas modifiables ici — ils doivent être changés directement
dans le fichier .env du serveur.