feat(api): gérer les clés de l'API externe depuis Paramètres

Les clés de l'API de rapprochement n'étaient configurables que par la
variable d'environnement EXTERNAL_API_KEYS. Nouvel onglet Paramètres >
API externe (admin) :

- état de l'API, adresse à copier, rappel des principales routes
- création d'une clé nommée par outil, affichée une seule fois
- liste des clés avec préfixe, date de création et de dernière
  utilisation ; révocation immédiate, sans redémarrage

Côté serveur :
- table external_api_keys (empreinte SHA-256 uniquement), créée par
  migrations.production.ts et init.sql
- server/externalApiKeys.ts : création, liste, révocation, vérification
  (repli en mémoire sans base)
- l'API accepte les clés de Paramètres et toujours celles de
  EXTERNAL_API_KEYS ; 503 seulement si aucune clé active
- routes /api/external-api/keys (session + admin)
- documentation et .env.example mis à jour

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JrRFddV2BaqDCxGY1j52UJ
This commit is contained in:
Claude committed 2026-10-10 07:52:43 +00:00
1 parent b964e137bf
commit 1a64a73d5a
11 files changed
+576 -19

No files matched your search

+2 -1
View File
@@ -32,6 +32,7 @@ ENCRYPTION_KEY=
EMERGENCY_SECRET=
# API externe de rapprochement BL / factures (docs/API-RAPPROCHEMENT.md).
# Une ou plusieurs clés séparées par des virgules ; vide = API désactivée.
# Les clés se créent de préférence dans Paramètres > API externe. Optionnel :
# une ou plusieurs clés supplémentaires ici, séparées par des virgules.
# Générer une clé : node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
EXTERNAL_API_KEYS=