# 🔐 Guide d'Administration - ConfluentTranslator Guide complet pour gĂ©rer les tokens API et l'accĂšs Ă  votre instance ConfluentTranslator. --- ## 🚀 AccĂšs Ă  l'interface d'administration ### URL ``` http://localhost:3000/admin.html ``` Ou en production : ``` https://votre-domaine.com/admin.html ``` ### PrĂ©requis - ✅ Être connectĂ© avec un token **admin** - ✅ Le serveur doit ĂȘtre dĂ©marrĂ© ### AccĂšs rapide depuis l'interface 1. Connectez-vous Ă  l'interface principale 2. Si vous ĂȘtes admin, un bouton **🔐 Admin** apparaĂźt en haut Ă  droite 3. Cliquez dessus pour accĂ©der au panneau d'administration --- ## 🔑 Premier dĂ©marrage : Obtenir le token admin ### MĂ©thode automatique **Au premier dĂ©marrage, un token admin est créé automatiquement :** ```bash cd ConfluentTranslator npm start ``` **Dans les logs, vous verrez :** ``` 🔑 Admin token created: c32b04be-2e68-4e15-8362-a4f5-9b3c-12d4567890ab ⚠ SAVE THIS TOKEN - It will not be shown again! ``` **⚠ CRITIQUE : Sauvegardez ce token immĂ©diatement !** - Copiez-le dans un gestionnaire de mots de passe - Ou dans un fichier sĂ©curisĂ© (hors du repo git) ### RĂ©cupĂ©rer le token existant **Si vous avez dĂ©jĂ  dĂ©marrĂ© le serveur :** ```bash # Windows type ConfluentTranslator\data\tokens.json # Linux/Mac cat ConfluentTranslator/data/tokens.json ``` **Le fichier ressemble Ă  :** ```json { "c32b04be-2e68-4e15-8362-a4f5-9b3c-12d4567890ab": { "name": "admin", "role": "admin", "enabled": true, "createdAt": "2025-12-02T13:25:00.000Z" } } ``` **Le token est la clĂ© (la longue chaĂźne).** ### Token perdu ou corrompu ? ```bash cd ConfluentTranslator # Supprimer le fichier de tokens rm data/tokens.json # Linux/Mac del data\tokens.json # Windows # RedĂ©marrer le serveur npm start # Un nouveau token admin sera créé et affichĂ© ``` --- ## 📊 Tableau de bord L'interface admin affiche 4 statistiques clĂ©s : ### Total Tokens Nombre total de tokens créés (actifs + dĂ©sactivĂ©s) ### Actifs Nombre de tokens actuellement actifs et utilisables ### Admins Nombre de tokens avec le rĂŽle admin ### RequĂȘtes (24h) Nombre total de requĂȘtes API dans les derniĂšres 24h --- ## ➕ CrĂ©er un nouveau token ### Via l'interface web 1. AccĂ©dez Ă  `/admin.html` 2. Section **"CrĂ©er un nouveau token"** 3. Remplissez les champs : - **Nom** : Description du token (ex: "Frontend prod", "Mobile app", "User Jean") - **RĂŽle** : - **User** : AccĂšs standard (peut utiliser l'API) - **Admin** : AccĂšs complet (peut gĂ©rer les tokens) 4. Cliquez sur **"CrĂ©er le token"** 5. **IMPORTANT** : Copiez le token affichĂ© immĂ©diatement 6. Le token ne sera **plus jamais affichĂ©** ### Via l'API (curl) ```bash # CrĂ©er un token user curl -X POST http://localhost:3000/api/admin/tokens \ -H "x-api-key: VOTRE_TOKEN_ADMIN" \ -H "Content-Type: application/json" \ -d '{"name":"user-frontend","role":"user"}' # CrĂ©er un token admin curl -X POST http://localhost:3000/api/admin/tokens \ -H "x-api-key: VOTRE_TOKEN_ADMIN" \ -H "Content-Type: application/json" \ -d '{"name":"admin-backup","role":"admin"}' ``` **RĂ©ponse :** ```json { "token": "nouveau-token-xyz-123...", "name": "user-frontend", "role": "user" } ``` --- ## 📋 GĂ©rer les tokens existants ### Lister tous les tokens **Interface web :** - Section **"Tokens existants"** - Affiche tous les tokens avec leurs dĂ©tails **API :** ```bash curl -H "x-api-key: VOTRE_TOKEN_ADMIN" \ http://localhost:3000/api/admin/tokens ``` ### Informations affichĂ©es Pour chaque token : - 🔑 **ID du token** (en bleu, police monospace) - đŸ·ïž **Badge rĂŽle** : Admin (bleu) ou User (gris) - 📛 **Nom/Description** - 📅 **Date de crĂ©ation** - ⚡ **Statut** : Actif ou DĂ©sactivĂ© - đŸŽ›ïž **Actions** : Activer/DĂ©sactiver, Supprimer --- ## 🔮 DĂ©sactiver un token **DĂ©sactiver = bloquer temporairement sans supprimer** ### Interface web 1. Trouvez le token dans la liste 2. Cliquez sur **"DĂ©sactiver"** 3. Confirmez Le token devient gris et affiche un badge "DĂ©sactivĂ©" ### API ```bash curl -X POST http://localhost:3000/api/admin/tokens/TOKEN_A_DESACTIVER/disable \ -H "x-api-key: VOTRE_TOKEN_ADMIN" ``` **Effet :** - ❌ Le token ne peut plus faire de requĂȘtes API (401) - ✅ Le token existe toujours (peut ĂȘtre rĂ©activĂ©) - ✅ L'historique est conservĂ© --- ## ✅ Activer un token **RĂ©activer un token prĂ©cĂ©demment dĂ©sactivĂ©** ### Interface web 1. Trouvez le token dĂ©sactivĂ© (gris) 2. Cliquez sur **"Activer"** Le token redevient actif immĂ©diatement ### API ```bash curl -X POST http://localhost:3000/api/admin/tokens/TOKEN_A_ACTIVER/enable \ -H "x-api-key: VOTRE_TOKEN_ADMIN" ``` --- ## đŸ—‘ïž Supprimer un token **⚠ ATTENTION : Suppression dĂ©finitive !** ### Interface web 1. Trouvez le token dans la liste 2. Cliquez sur **"Supprimer"** (bouton rouge) 3. **Confirmation demandĂ©e** : "Supprimer dĂ©finitivement ce token ?" 4. Confirmez Le token est **supprimĂ© dĂ©finitivement** ### API ```bash curl -X DELETE http://localhost:3000/api/admin/tokens/TOKEN_A_SUPPRIMER \ -H "x-api-key: VOTRE_TOKEN_ADMIN" ``` **Effet :** - ❌ Le token est dĂ©truit (ne peut plus ĂȘtre utilisĂ©) - ❌ Le token ne peut **PAS** ĂȘtre restaurĂ© - ⚠ Toutes les applications utilisant ce token perdront l'accĂšs --- ## 🎯 Cas d'usage typiques ### 1. DĂ©ployer une application frontend ``` 1. CrĂ©er un token user nommĂ© "Frontend Prod" 2. Copier le token 3. L'ajouter dans les variables d'environnement du frontend 4. DĂ©ployer l'application ``` ### 2. Donner accĂšs Ă  un utilisateur ``` 1. CrĂ©er un token user avec le nom de l'utilisateur 2. Envoyer le token de maniĂšre sĂ©curisĂ©e (Signal, etc.) 3. L'utilisateur se connecte avec ce token sur l'interface web ``` ### 3. CrĂ©er un compte admin secondaire ``` 1. CrĂ©er un token admin nommĂ© "Admin Backup" 2. Sauvegarder dans un gestionnaire de mots de passe 3. Utiliser en cas de perte du token admin principal ``` ### 4. RĂ©voquer l'accĂšs d'un utilisateur **Temporaire :** ``` DĂ©sactiver le token → L'utilisateur ne peut plus se connecter RĂ©activer plus tard si besoin ``` **DĂ©finitif :** ``` Supprimer le token → AccĂšs rĂ©voquĂ© dĂ©finitivement ``` ### 5. Rotation des tokens ``` 1. CrĂ©er un nouveau token 2. Mettre Ă  jour l'application avec le nouveau token 3. VĂ©rifier que tout fonctionne 4. DĂ©sactiver l'ancien token 5. Attendre 24-48h (vĂ©rifier que plus d'utilisation) 6. Supprimer l'ancien token ``` --- ## 🔒 Bonnes pratiques de sĂ©curitĂ© ### Gestion des tokens - ✅ **Un token par application/utilisateur** - ✅ **Noms descriptifs** (ex: "Mobile App v2.1", "User Alice") - ✅ **Rotation rĂ©guliĂšre** des tokens (tous les 3-6 mois) - ✅ **Sauvegarde du token admin** dans un gestionnaire de mots de passe - ❌ **Ne jamais commit** les tokens dans git - ❌ **Ne jamais partager** par email/SMS non chiffrĂ© ### RĂŽles - 🔮 **Admin** : À rĂ©server aux personnes de confiance - Peut crĂ©er/supprimer des tokens - AccĂšs au panneau d'administration - Peut recharger les lexiques (`/api/reload`) - đŸ”” **User** : Pour les utilisateurs standards - Peut utiliser l'API de traduction - Peut consulter les stats/lexique - Ne peut pas gĂ©rer les tokens ### Production - ✅ Utiliser HTTPS en production - ✅ Rate limiting activĂ© (dĂ©jĂ  en place) - ✅ Logs des requĂȘtes activĂ©s (dĂ©jĂ  en place) - ✅ Backups rĂ©guliers de `data/tokens.json` - ✅ Monitoring des tokens actifs - ⚠ Ne jamais exposer `/api/admin/*` publiquement sans auth --- ## 🐛 DĂ©pannage ### "AccĂšs refusĂ©. Vous devez ĂȘtre admin." **Cause :** Vous ĂȘtes connectĂ© avec un token user **Solution :** 1. DĂ©connectez-vous 2. Reconnectez-vous avec un token admin ### "Token invalide" **Cause :** Le token a Ă©tĂ© dĂ©sactivĂ© ou supprimĂ© **Solution :** 1. VĂ©rifiez dans `data/tokens.json` si le token existe 2. Si dĂ©sactivĂ© : rĂ©activez-le (avec un autre token admin) 3. Si supprimĂ© : crĂ©ez un nouveau token ### "Session expirĂ©e" **Cause :** Le token a Ă©tĂ© rĂ©voquĂ© pendant votre session **Solution :** 1. Reconnectez-vous avec un token valide 2. Si c'Ă©tait le seul token admin, recrĂ©ez-en un (voir section "Token perdu") ### Interface admin ne se charge pas **Cause :** Vous n'ĂȘtes pas connectĂ© ou pas admin **Solution :** 1. Allez sur `http://localhost:3000` (page principale) 2. Connectez-vous avec un token admin 3. Retournez sur `/admin.html` ou cliquez sur le bouton 🔐 Admin ### Le bouton Admin n'apparaĂźt pas **Cause :** Vous n'ĂȘtes pas admin **Solution :** - Seuls les tokens avec `role: "admin"` voient ce bouton - VĂ©rifiez votre rĂŽle : `/api/validate` --- ## 📁 Fichiers importants ### data/tokens.json **Emplacement :** `ConfluentTranslator/data/tokens.json` **Format :** ```json { "token-uuid-123": { "name": "Description", "role": "admin", "enabled": true, "createdAt": "2025-12-02T..." } } ``` **⚠ CRITIQUE :** - Backupez ce fichier rĂ©guliĂšrement - Ne le commitez JAMAIS dans git - ProtĂ©gez-le (permissions 600 sur Linux) ### .gitignore VĂ©rifiez que `data/tokens.json` est bien ignorĂ© : ``` data/tokens.json .env ``` --- ## 🔗 API Admin - RĂ©fĂ©rence ### GET /api/admin/tokens Liste tous les tokens **Requiert :** Admin token **RĂ©ponse :** ```json [ { "token": "abc-123...", "name": "Frontend", "role": "user", "enabled": true, "createdAt": "2025-12-02T..." } ] ``` ### POST /api/admin/tokens CrĂ©e un nouveau token **Requiert :** Admin token **Body :** ```json { "name": "Description", "role": "user" // ou "admin" } ``` ### POST /api/admin/tokens/:token/disable DĂ©sactive un token **Requiert :** Admin token ### POST /api/admin/tokens/:token/enable Active un token **Requiert :** Admin token ### DELETE /api/admin/tokens/:token Supprime un token **Requiert :** Admin token ### GET /api/admin/stats Statistiques globales **Requiert :** Admin token **RĂ©ponse :** ```json { "totalTokens": 5, "activeTokens": 4, "adminTokens": 2, "totalRequests24h": 1234 } ``` --- ## ✅ Checklist de dĂ©ploiement Avant de mettre en production : - [ ] Token admin créé et sauvegardĂ© en lieu sĂ»r - [ ] Backup de `data/tokens.json` configurĂ© - [ ] `data/tokens.json` dans `.gitignore` - [ ] Variables d'environnement configurĂ©es (`.env`) - [ ] HTTPS activĂ© (certificat SSL) - [ ] Rate limiting testĂ© et actif - [ ] Logs configurĂ©s et surveillĂ©s - [ ] Tokens de production créés (pas de token "test" en prod) - [ ] Documentation fournie aux utilisateurs - [ ] ProcĂ©dure de rotation des tokens Ă©tablie --- ## 📞 Support ### ProblĂšmes avec l'interface admin 1. VĂ©rifiez les logs serveur (`npm start`) 2. VĂ©rifiez la console navigateur (F12) 3. Testez les endpoints API manuellement (curl) ### ProblĂšmes avec les tokens 1. VĂ©rifiez `data/tokens.json` 2. Testez avec `/api/validate` 3. RecrĂ©ez un token admin si nĂ©cessaire --- **Interface d'administration ConfluentTranslator v1.0** *Full Lockdown Security*