# Administration et mises à jour — Spiri’Go 1.9.2

## Première activation

1. Créez normalement votre compte sur `/compte`.
2. Dans `config/config.php`, ajoutez votre adresse dans `admin.initial_admin_emails`.
3. Générez une clé de déploiement et son hash avec `php scripts/generate-deployment-key-hash.php`, ou utilisez temporairement ce script en local avec PHP.
4. Copiez uniquement le hash dans `admin.deployment_key_hash`.
5. Connectez-vous sur `/admin` avec votre adresse et votre mot de passe Spiri’Go.

La colonne `users.role` est créée automatiquement lors du premier accès à `/admin`. Le compte dont l’adresse figure dans `initial_admin_emails` reçoit alors le rôle `admin` après authentification réussie.

## Installer les prochaines mises à jour

Ouvrez `/admin?section=updates`, saisissez la clé secrète, puis déposez le ZIP de mise à jour. L’autorisation dure quinze minutes.

Avant remplacement, l’application :

- contrôle `manifest.json` ;
- refuse les chemins dangereux ou les emplacements interdits ;
- vérifie l’empreinte SHA-256 de chaque fichier ;
- crée une sauvegarde ZIP dans `storage/backups` ;
- conserve `config/config.php`, les images, les journaux et la base de données.

## Format des futurs ZIP

```text
manifest.json
payload/public/...
payload/src/...
payload/docs/...
```

Le manifeste contient au minimum :

```json
{
  "application": "SpiriGo",
  "version": "1.9.3",
  "files": {
    "public/index.html": "empreinte_sha256",
    "src/Application.php": "empreinte_sha256"
  }
}
```

## Sécurité

L’installation exige les deux facteurs applicatifs suivants :

1. un compte authentifié ayant le rôle `admin` ;
2. la clé secrète de déploiement, vérifiée par son hash côté serveur.

Le ZIP est limité à 50 Mo. Le dossier `storage` doit rester hors de l’accès public et être inscriptible par PHP.
