# Guide de Configuration OAuth Discord Ce guide t'explique comment configurer l'authentification Discord OAuth2 pour le serveur de transcripts. ## Étape 1 : Créer une Application Discord 1. Va sur le [Discord Developer Portal](https://discord.com/developers/applications) 2. Clique sur **"New Application"** (Nouvelle Application) 3. Donne un nom à ton application (ex: "Femboy Croissant Transcripts") 4. Clique sur **"Create"** (Créer) ## Étape 2 : Récupérer le Client ID 1. Dans le menu de gauche, clique sur **"OAuth2"** 2. Tu verras ton **Client ID** dans la section "Client Information" 3. **Copie ce Client ID** (tu en auras besoin plus tard) ## Étape 3 : Créer un Client Secret 1. Toujours dans **"OAuth2"**, scroll jusqu'à la section "Client Secret" 2. Clique sur **"Reset Secret"** (Réinitialiser le Secret) 3. **⚠️ ATTENTION :** Copie immédiatement le Client Secret qui s'affiche, car il ne sera plus visible après ! 4. Si tu l'as perdu, tu devras le régénérer ## Étape 4 : Configurer les Redirects 1. Toujours dans **"OAuth2"**, scroll jusqu'à la section **"Redirects"** 2. Clique sur **"Add Redirect"** (Ajouter une redirection) 3. **Tu peux ajouter PLUSIEURS URLs !** Ajoute-les une par une : **Pour le développement local :** ``` http://localhost:3000/auth/discord/callback ``` **Pour la production (si tu as un domaine) :** ``` https://transcripts.syxpi.fr/auth/discord/callback ``` **💡 Astuce :** Tu peux ajouter les deux URLs pour pouvoir tester en local ET utiliser en production. Discord accepte plusieurs redirect URLs ! 4. Après avoir ajouté chaque URL, clique sur **"Save Changes"** (Enregistrer les modifications) ## Étape 5 : Configurer les Scopes 1. Dans la section **"Scopes"** (juste au-dessus de Redirects) 2. Coche ces cases : - ✅ `identify` - Pour récupérer les infos de base de l'utilisateur - ✅ `guilds` - Pour vérifier les rôles de l'utilisateur (optionnel, pour plus tard) ## Étape 6 : Ajouter les variables dans .env Ouvre ton fichier `.env` à la racine du projet et ajoute ces lignes : ```env # Discord OAuth # Tu peux utiliser CLIENT_ID et CLIENT_SECRET (déjà utilisés par le bot) # OU DISCORD_CLIENT_ID et DISCORD_CLIENT_SECRET (dédiés à l'OAuth) CLIENT_ID=ton_client_id_ici CLIENT_SECRET=ton_client_secret_ici # Pour le développement local : DISCORD_CALLBACK_URL=http://localhost:3000/auth/discord/callback # Pour la production (décommente quand tu déploies en prod) : # DISCORD_CALLBACK_URL=https://transcripts.syxpi.fr/auth/discord/callback ``` **Exemple :** ```env CLIENT_ID=123456789012345678 CLIENT_SECRET=abcdefghijklmnopqrstuvwxyz123456789 DISCORD_CALLBACK_URL=http://localhost:3000/auth/discord/callback ``` **💡 Important :** - Le serveur accepte **`CLIENT_ID` et `CLIENT_SECRET`** (même variables que le bot) - Ou **`DISCORD_CLIENT_ID` et `DISCORD_CLIENT_SECRET`** (variables dédiées) - Dans le Discord Developer Portal, tu peux ajouter **les deux URLs** dans les Redirects - Dans ton `.env`, tu mets **seulement l'URL que tu utilises actuellement** - Pour tester en local : utilise `http://localhost:3000/auth/discord/callback` - Pour la production : change le `.env` pour utiliser `https://transcripts.syxpi.fr/auth/discord/callback` ## Étape 7 : Configurer les Modérateurs (Optionnel) Si tu veux que certains utilisateurs aient accès à tous les transcripts (pas seulement les leurs), ajoute leurs IDs Discord dans `.env` : ```env MODERATOR_IDS=361526553940721684,autre_id_ici,encore_un_autre_id ``` **Comment trouver ton ID Discord ?** 1. Active le mode développeur dans Discord : Paramètres → Avancé → Mode développeur 2. Clic droit sur ton nom/avatar → "Copier l'ID" ## Étape 8 : Tester 1. Redémarre le serveur : `npm run server` 2. Va sur `http://localhost:3000` 3. Tu devrais être redirigé vers la page de login Discord 4. Clique sur "Se connecter avec Discord" 5. Autorise l'application 6. Tu devrais être redirigé vers le dashboard ! ## Dépannage ### Erreur : "Invalid redirect_uri" - Vérifie que l'URL dans `DISCORD_CALLBACK_URL` correspond exactement à une des URLs dans les Redirects du Discord Developer Portal - Les URLs doivent correspondre caractère par caractère (y compris `http://` vs `https://`) - **Tu peux ajouter plusieurs URLs dans les Redirects**, mais dans `.env` tu mets seulement celle que tu utilises actuellement - Vérifie qu'il n'y a pas d'espace ou de caractère invisible dans l'URL ### Erreur : "Unknown authentication strategy" - Vérifie que `passport-discord` est installé : `npm install passport-discord` - Vérifie que les variables `DISCORD_CLIENT_ID` et `DISCORD_CLIENT_SECRET` sont bien dans `.env` - Redémarre le serveur après avoir modifié `.env` ### Erreur : "Missing Access" - Vérifie que tu as coché les bons scopes dans le Discord Developer Portal - Vérifie que l'URL de callback est bien configurée ### Le serveur démarre mais l'OAuth ne fonctionne pas - Vérifie les logs du serveur : tu devrais voir "✅ Stratégie Discord OAuth configurée avec succès" - Si tu vois un avertissement, vérifie tes variables d'environnement ## Production Pour déployer en production : 1. **Configure un domaine** (ex: `transcript.syxpi.fr`) 2. **Configure HTTPS** (Let's Encrypt avec Certbot) 3. **Configure un reverse proxy** (Nginx/Apache) pointant vers le port 3000 4. **Mets à jour les Redirects** dans le Discord Developer Portal avec l'URL de production 5. **Mets à jour `DISCORD_CALLBACK_URL`** dans `.env` avec l'URL de production 6. **Change `SESSION_SECRET`** pour une valeur aléatoire sécurisée 7. **Configure `NODE_ENV=production`** dans `.env` ## Sécurité - ⚠️ **NE PARTAGE JAMAIS** ton Client Secret - ⚠️ **NE COMMIT JAMAIS** ton fichier `.env` dans Git - ⚠️ Utilise des secrets forts pour `SESSION_SECRET` en production - ⚠️ Active HTTPS en production (obligatoire pour les cookies sécurisés) ## Ressources - [Discord Developer Portal](https://discord.com/developers/applications) - [Documentation OAuth2 Discord](https://discord.com/developers/docs/topics/oauth2) - [Documentation passport-discord](https://github.com/nicholastay/passport-discord)