Gestion utilisateurs, limites recherche, filtres lieux/sources, fix logo prod

- Admin : CRUD complet utilisateurs (créer, modifier nom/email/mdp/rôle, supprimer)
  avec garde-fous (dernier admin, compte propre)
- Recherche : limite configurable par l'admin (défaut 200), bannière d'avertissement
  quand la limite est atteinte, plus de pagination (résultats en bloc)
- Lieux : liste non chargée sans filtre actif (performance sur grands volumes)
- Sources : idem pour admin/responsables ; membres voient toujours leurs sources
- Logo 404 prod : +FollowSymLinks dans .htaccess, storage:link dans l'assistant
  d'installation, bouton "Recréer le lien" dans Administration → Paramètres

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-07 03:39:06 +02:00
parent dab9e758fe
commit 6a73a2f001
16 changed files with 464 additions and 99 deletions
@@ -162,13 +162,27 @@ class SettingController extends Controller
public function updateSettings(Request $request): RedirectResponse
{
$data = $request->validate([
'site_name' => ['nullable', 'string', 'max:100'],
'site_name' => ['nullable', 'string', 'max:100'],
'search_max_results' => ['nullable', 'integer', 'min:10', 'max:5000'],
]);
$siteName = trim($data['site_name'] ?? '');
SiteSettingsService::set('site_name', $siteName ?: null);
SiteSettingsService::set('registration_enabled', $request->boolean('registration_enabled'));
if (isset($data['search_max_results'])) {
SiteSettingsService::set('search_max_results', (int) $data['search_max_results']);
}
return back()->with('success', 'Paramètres enregistrés.');
}
public function storageLink(): RedirectResponse
{
try {
\Illuminate\Support\Facades\Artisan::call('storage:link');
return back()->with('success', 'Lien de stockage public créé (public/storage → storage/app/public).');
} catch (\Exception $e) {
return back()->with('error', 'Impossible de créer le lien : ' . $e->getMessage());
}
}
}