Architecture technique
Authentification

Authentification

Flux

  1. POST /api/auth/register → crée le User (hash bcrypt). Pour un compte pro, le SIRET est vérifié contre la base Sirene.
  2. POST /api/auth/login → vérifie le hash, génère un JWT HS256.
  3. Le JWT est posé en cookie httpOnly zh_token (Secure en prod, SameSite=Lax).
  4. Chaque requête authentifiée passe par le JwtAuthGuard qui décode le cookie et hydrate req.user.

Durée de session

  • Par défaut : 12 h si « Se souvenir de moi » est coché à la connexion.
  • Sliding session : la durée est renouvelée à chaque requête authentifiée.

Mot de passe oublié

POST /api/auth/forgot-password
  → génère un token (32 bytes hex), TTL 1h
  → envoie un e-mail avec le lien
POST /api/auth/reset-password
  → vérifie le token, met à jour le hash, invalide le token

Stockage des secrets

  • Mots de passe : bcrypt (coût adaptatif).
  • Secrets externes (clés API gateways, Proxmox, etc.) : AES-256-GCM via CryptoService (clé maître dans ENCRYPTION_KEY).

Cookies

ZelhayHost n'utilise que des cookies fonctionnels :

  • zh_token — JWT de session.
  • zh_theme / zh_pro_theme — préférence de thème.
  • préférence de langue.

Aucun cookie de traçage publicitaire n'est déposé.