46 lines
1.2 KiB
PHP
46 lines
1.2 KiB
PHP
|
|
<?php
|
||
|
|
|
||
|
|
namespace App\Http\Controllers;
|
||
|
|
|
||
|
|
use App\Models\Eleve;
|
||
|
|
use App\Models\User;
|
||
|
|
use Illuminate\Http\RedirectResponse;
|
||
|
|
use Illuminate\Http\Request;
|
||
|
|
use Illuminate\Support\Facades\Auth;
|
||
|
|
use Illuminate\View\View;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Thème clair/sombre et taille du texte (séparation vitrine/application,
|
||
|
|
* 2026-10-13) : un réglage réel, appliqué immédiatement, pas de données
|
||
|
|
* inventées.
|
||
|
|
*/
|
||
|
|
class ParametresController extends Controller
|
||
|
|
{
|
||
|
|
public function show(): View
|
||
|
|
{
|
||
|
|
$compte = $this->compteConnecte();
|
||
|
|
|
||
|
|
return view('parametres', [
|
||
|
|
'theme' => $compte->preferenceTheme(),
|
||
|
|
'tailleTexte' => $compte->preferenceTailleTexte(),
|
||
|
|
]);
|
||
|
|
}
|
||
|
|
|
||
|
|
public function update(Request $request): RedirectResponse
|
||
|
|
{
|
||
|
|
$donnees = $request->validate([
|
||
|
|
'theme' => ['required', 'in:'.implode(',', User::THEMES)],
|
||
|
|
'taille_texte' => ['required', 'in:'.implode(',', User::TAILLES_TEXTE)],
|
||
|
|
]);
|
||
|
|
|
||
|
|
$this->compteConnecte()->definirPreferences($donnees['theme'], $donnees['taille_texte']);
|
||
|
|
|
||
|
|
return back()->with('parametres_enregistres', true);
|
||
|
|
}
|
||
|
|
|
||
|
|
private function compteConnecte(): User|Eleve
|
||
|
|
{
|
||
|
|
return Auth::guard('web')->user() ?? Auth::guard('eleve')->user();
|
||
|
|
}
|
||
|
|
}
|