- 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>
- APP_KEY : généré directement en PHP (random_bytes) + écrit dans .env + propagé
via config() et putenv() → évite le bug de pattern-matching de key:generate
(la clé en mémoire ≠ clé dans le .env réécrit par writeEnv)
- DB_* + APP_KEY : putenv() écrase l'env OS hérité au boot (pgsql/temp-key) pour
que tout sous-processus futur hérite des bonnes valeurs
- optimize supprimé de l'installation : config:cache re-boostrappe l'app via
bootstrap/app.php dans un contexte où l'Encrypter peut lever MissingAppKeyException ;
optimize:clear seul suffit — Laravel reconstruit ses caches à la première requête
- key:generate converti en Artisan::call() puis remplacé par génération PHP directe
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Cause racine : public/index.php charge le .env auto-créé (pgsql) et appelle
putenv('DB_CONNECTION=pgsql'). Les sous-processus exec() héritent cet env OS.
phpdotenv en mode immutable refuse d'écraser une variable déjà définie →
le nouveau .env mysql est ignoré, la migration tente une connexion pgsql.
Fix : reconfiguration de la connexion BDD en mémoire via config() + DB::purge()
puis exécution des migrations via Artisan::call() dans le processus courant.
Plus aucun subprocess pour les migrations → aucun héritage d'env parasite.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sans ce clear, un bootstrap/cache/config.php résiduel (produit par
php artisan optimize en dev) est lu en priorité sur le .env réécrit
par writeEnv(), forçant une connexion pgsql même quand mysql est choisi.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Wizard d'installation en 5 étapes (/setup) : prérequis PHP, base de données
(PostgreSQL/MySQL avec test de connexion AJAX), paramètres app, compte admin,
résultat — génère le .env, migre et crée l'administrateur
- CheckInstallation middleware : redirige vers /setup si non installé,
protège /setup si déjà installé ; storage/installed comme marqueur
- Menu Administration : remplacé par le composant x-dropdown Breeze (même
positionnement que le menu utilisateur — corrige le débordement en haut)
- Logo navbar : adaptatif via h-full/py-1.5 (s'adapte à la hauteur de la barre)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>