# Assistant d’installation (`/install`) — GCMS

Produit : **GCMS** — *Votre site en quelques clics.*

## Voir l’interface en local

1. **Sans toucher aux fichiers à la main (recommandé)**  
   ```bash
   php artisan install:unlock
   ```  
   Puis ouvrez **`http://localhost:PORT/install`** (ou votre `APP_URL` + `/install`).

2. **Manuellement**  
   Supprimez le fichier **`config/installed.lock`** (s’il existe), puis allez sur **`/install`**.

Tant que **`config/installed.lock`** est absent, toute visite sur le site (hors `/install`) est redirigée vers **`/install`** (middleware `CheckInstalled`).

## Fichier `installed.lock`

| État | Comportement |
|------|----------------|
| **Absent** | Assistant `/install` disponible ; le site public redirige vers `/install`. |
| **Présent** | Installation considérée comme terminée ; `/install` est **bloqué** (redirection vers `/admin`) via le middleware `RedirectIfNotInstalled`. |

Le lock contient une date (texte) ; seule **l’existence** du fichier compte.

## Parcours de l’assistant

1. **Accueil** — `/install`
2. **Prérequis** — PHP, extensions, droits d’écriture
3. **Base de données** — SQLite ou MySQL (écriture dans `.env`, test de connexion)
4. **Administrateur** — nom, email, mot de passe → `migrate` + création du 1er user admin + réglages par défaut + **création du lock**
5. **Terminé** — liens vers `/admin` et `/`

Il n’y a **pas** d’inscription publique : le premier compte dashboard est créé à l’étape 4.

## Production

- Ne supprimez pas le lock sur un site en ligne sans savoir ce que vous faites : **`install:unlock`** refuse la suppression en `APP_ENV=production` sans **`--force`**.
- Avec **`--force`**, une confirmation est demandée. Réactiver `/install` peut permettre à quelqu’un de relancer une installation si l’URL est accessible sans protection réseau.

## Améliorations possibles (pistes)

- **Sécurité** : token secret dans `.env` (`INSTALL_SECRET`) requis pour accéder à `/install` même sans lock (install “réparation”).
- **Étape APP_KEY** : vérifier / générer `php artisan key:generate` si absent.
- **Thème install** : aligner le texte d’accueil avec les thèmes réellement livrés dans `config/marketplace_catalog.php` / thèmes gratuits.

Fichiers utiles : `InstallController`, `CheckInstalled`, `RedirectIfNotInstalled`, vues `resources/views/install/*`.
