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
+9 -2
View File
@@ -69,9 +69,16 @@ class SourceController extends Controller
? Lieu::find($request->integer('lieu_id'), ['id', 'nom', 'nom_long'])
: null;
$sources = $query->orderBy('nom')->paginate(25)->withQueryString();
// Pour les admins/responsables, exiger au moins un filtre avant d'afficher
// les résultats (ils peuvent voir potentiellement des milliers de sources).
// Les membres normaux voient toujours leurs sources (déjà filtrées par accès).
$hasFilters = $request->anyFilled(['status', 'source_type_id', 'lieu_id', 'annee_debut', 'annee_fin']);
$requiresFilter = $user->isSectionManager();
$sources = ($requiresFilter && ! $hasFilters)
? null
: $query->orderBy('nom')->paginate(25)->withQueryString();
return view('sources.index', compact('sources', 'sourceTypes', 'lieuSelectionne'));
return view('sources.index', compact('sources', 'sourceTypes', 'lieuSelectionne', 'hasFilters'));
}
private function getLieuDescendantIds(int $lieuId): array