152 lines
6.1 KiB
Markdown
152 lines
6.1 KiB
Markdown
# 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: "France Femboy 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)
|
|
|