# Checklist de mise en production — Lait Normandia

À faire **une fois**, avant l'exploitation réelle. Coche chaque point.

---

## 1. Clé JWT unique  ⚠️ important
La clé livrée dans l'archive n'est pas secrète. Génère la tienne :

```
php -r "echo bin2hex(random_bytes(48));"
```

Copie le résultat dans `api/config/config.php` :

```php
define('JWT_SECRET', 'COLLE_ICI_TA_CLE');
```

> Conséquence : toutes les sessions ouvertes sont invalidées (chacun devra se reconnecter). C'est normal.

## 2. Compte MySQL dédié (ne pas utiliser root)
Dans phpMyAdmin (connecté en root), exécute **une fois** `database/secure_db_user.sql`
après y avoir mis un mot de passe fort. Puis, dans `config.php` :

```php
define('DB_USER', 'ln_app');
define('DB_PASS', 'le_meme_mot_de_passe_fort');
```

Le compte `ln_app` n'a que les droits de lecture/écriture des données : même compromis, il ne peut pas détruire la structure.

## 3. Mode production
Dans `config.php`, vérifie :

```php
define('APP_DEBUG', false);                       // pas de détail technique renvoyé au client
define('CORS_ALLOW_ORIGIN', 'https://projets-dsi.exat.ci:9443');  // ton origine exacte, pas '*'
```

## 4. Mot de passe administrateur
Change le mot de passe `admin123` par défaut :

```
cd C:\wamp64\www\Projets-DSI\ln\api\cron
php set-admin-password.php admin "UnMotDePasseFort!2026"
```

Crée ensuite les vrais comptes (caissiers, gestionnaires…) via le module **Utilisateurs**, et désactive les comptes inutiles.

## 5. Clé privée TLS hors de la racine web  ⚠️ CRITIQUE
Tes certificats sont dans `C:/wamp64/www/Projets-DSI/cert/…`, donc **sous la racine web**.
Ta clé privée `.key` est potentiellement téléchargeable. Vérifie en ouvrant :

```
https://projets-dsi.exat.ci:9443/cert/ln/projets-dsi.exat.ci.key
```

Si le fichier se télécharge, agis immédiatement — au choix :

- **Recommandé** : déplace le dossier `cert/` **en dehors** de `www` (ex. `C:/wamp64/cert/`) et mets à jour les chemins `SSLCertificateFile` / `SSLCertificateKeyFile` dans `httpd-ssl.conf`.
- **Sinon** : crée un fichier `C:/wamp64/www/Projets-DSI/cert/.htaccess` contenant :

  ```
  Require all denied
  ```

## 6. Fichiers sensibles non téléchargeables
Des `.htaccess` de blocage sont déjà en place (`database/`, `api/config/`, `api/core/`, `api/controllers/`, `api/cron/`, `backups/`).
Vérifie qu'ils fonctionnent en tentant d'ouvrir, par exemple :

```
https://projets-dsi.exat.ci:9443/ln/database/ln_lait_normandia.sql
```

→ doit renvoyer **403 Forbidden**. (Si tu obtiens le fichier, c'est qu'`AllowOverride All` n'est pas actif sur le vhost.)

## 7. Sauvegardes quotidiennes
Teste une sauvegarde :

```
cd C:\wamp64\www\Projets-DSI\ln\api\cron
php backup-db.php
```

Le fichier apparaît dans `ln/backups/`. Planifie-la chaque nuit via le **Planificateur de tâches Windows**
(action : `php.exe`, argument : le chemin complet vers `backup-db.php`), puis **copie régulièrement
le dossier `backups/` sur un autre support** (disque externe, autre serveur). Fais au moins un test de restauration.

## 8. Divers
- N'expose que le port **9443** sur le pare-feu ; garde MySQL (3306) inaccessible de l'extérieur.
- Tiens WampServer / PHP / MySQL à jour.
- Les scripts de `api/cron/` s'exécutent désormais en ligne de commande (l'accès web y est bloqué).
