Checkpoint: Correction de l'authentification locale : utilisation de sdk.createSessionToken() au lieu de jsonwebtoken pour compatibilité avec le système OAuth
This commit is contained in:
393
TROUBLESHOOTING.md
Normal file
393
TROUBLESHOOTING.md
Normal file
@@ -0,0 +1,393 @@
|
||||
# Guide de Dépannage - Problèmes de Connexion
|
||||
|
||||
## Problème : "Identifiant ou mot de passe incorrect"
|
||||
|
||||
Si vous ne parvenez pas à vous connecter avec l'utilisateur `adminServFormation` et le mot de passe `Itinova69!`, suivez ce guide étape par étape.
|
||||
|
||||
---
|
||||
|
||||
## Diagnostic rapide
|
||||
|
||||
### Étape 1 : Exécuter le script de diagnostic
|
||||
|
||||
```bash
|
||||
cd /chemin/vers/formation-manager-itinova
|
||||
./diagnose.sh
|
||||
```
|
||||
|
||||
Ce script vérifie automatiquement :
|
||||
- Les variables d'environnement (DATABASE_URL, JWT_SECRET)
|
||||
- La connexion à la base de données
|
||||
- L'existence des tables
|
||||
- L'existence de l'utilisateur adminServFormation
|
||||
- Les dépendances installées
|
||||
- L'état du service
|
||||
|
||||
---
|
||||
|
||||
## Solutions par cause
|
||||
|
||||
### Cause 1 : JWT_SECRET non défini
|
||||
|
||||
**Symptôme** : Le diagnostic affiche `JWT_SECRET n'est pas définie`
|
||||
|
||||
**Solution** :
|
||||
|
||||
1. Générer une clé JWT sécurisée :
|
||||
```bash
|
||||
openssl rand -base64 32
|
||||
```
|
||||
|
||||
2. Ajouter la clé dans le fichier `.env` :
|
||||
```bash
|
||||
echo "JWT_SECRET=votre_cle_generee_ici" >> .env
|
||||
```
|
||||
|
||||
3. Redémarrer l'application :
|
||||
```bash
|
||||
# Si vous utilisez systemd
|
||||
sudo systemctl restart formation-manager
|
||||
|
||||
# Ou en développement
|
||||
pnpm dev
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Cause 2 : L'utilisateur adminServFormation n'existe pas
|
||||
|
||||
**Symptôme** : Le diagnostic affiche `Utilisateur 'adminServFormation' n'existe pas`
|
||||
|
||||
**Solution** :
|
||||
|
||||
Exécuter le script de réinitialisation :
|
||||
|
||||
```bash
|
||||
./reset-admin-sql.sh
|
||||
```
|
||||
|
||||
**Note** : Utilisez `reset-admin-sql.sh` (version SQL directe) plutôt que `reset-admin.sh` pour éviter les problèmes de compilation TypeScript.
|
||||
|
||||
Ce script va :
|
||||
- Vérifier la configuration
|
||||
- Créer l'utilisateur adminServFormation s'il n'existe pas
|
||||
- Réinitialiser le mot de passe s'il existe déjà
|
||||
- Afficher les identifiants de connexion
|
||||
|
||||
**Résultat attendu** :
|
||||
```
|
||||
✅ Utilisateur créé avec succès
|
||||
|
||||
🔑 Vous pouvez maintenant vous connecter avec:
|
||||
Identifiant: adminServFormation
|
||||
Mot de passe: Itinova69!
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Cause 3 : Les tables de la base de données n'existent pas
|
||||
|
||||
**Symptôme** : Le diagnostic affiche `Aucune table trouvée dans la base de données`
|
||||
|
||||
**Solution** :
|
||||
|
||||
1. Appliquer les migrations :
|
||||
```bash
|
||||
pnpm db:push
|
||||
```
|
||||
|
||||
2. Créer l'utilisateur administrateur :
|
||||
```bash
|
||||
./reset-admin-sql.sh
|
||||
```
|
||||
|
||||
3. Redémarrer l'application :
|
||||
```bash
|
||||
sudo systemctl restart formation-manager
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Cause 4 : Problème de hashage du mot de passe
|
||||
|
||||
**Symptôme** : L'utilisateur existe mais le mot de passe ne fonctionne pas
|
||||
|
||||
**Solution** :
|
||||
|
||||
Réinitialiser le mot de passe :
|
||||
|
||||
```bash
|
||||
./reset-admin-sql.sh
|
||||
```
|
||||
|
||||
Le script va détecter que l'utilisateur existe et mettre à jour uniquement le mot de passe.
|
||||
|
||||
---
|
||||
|
||||
### Cause 5 : La dépendance bcryptjs n'est pas installée
|
||||
|
||||
**Symptôme** : Erreur dans les logs : `Cannot find module 'bcryptjs'`
|
||||
|
||||
**Solution** :
|
||||
|
||||
1. Réinstaller les dépendances :
|
||||
```bash
|
||||
pnpm install
|
||||
```
|
||||
|
||||
2. Vérifier que bcryptjs est installé :
|
||||
```bash
|
||||
ls node_modules/bcryptjs
|
||||
```
|
||||
|
||||
3. Redémarrer l'application :
|
||||
```bash
|
||||
sudo systemctl restart formation-manager
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Cause 6 : La dépendance jsonwebtoken n'est pas installée
|
||||
|
||||
**Symptôme** : Erreur dans les logs : `Cannot find module 'jsonwebtoken'`
|
||||
|
||||
**Solution** :
|
||||
|
||||
1. Installer jsonwebtoken :
|
||||
```bash
|
||||
pnpm install jsonwebtoken
|
||||
```
|
||||
|
||||
2. Redémarrer l'application :
|
||||
```bash
|
||||
sudo systemctl restart formation-manager
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Vérification manuelle de la base de données
|
||||
|
||||
Si les scripts ne fonctionnent pas, vous pouvez vérifier manuellement la base de données.
|
||||
|
||||
### 1. Se connecter à MySQL
|
||||
|
||||
```bash
|
||||
mysql -u root -p
|
||||
```
|
||||
|
||||
### 2. Sélectionner la base de données
|
||||
|
||||
```sql
|
||||
USE formation_manager;
|
||||
```
|
||||
|
||||
### 3. Vérifier que la table users existe
|
||||
|
||||
```sql
|
||||
SHOW TABLES;
|
||||
```
|
||||
|
||||
Vous devriez voir `users` dans la liste.
|
||||
|
||||
### 4. Vérifier l'utilisateur adminServFormation
|
||||
|
||||
```sql
|
||||
SELECT username, email, role, isActive, password FROM users WHERE username = 'adminServFormation';
|
||||
```
|
||||
|
||||
**Résultat attendu** :
|
||||
```
|
||||
+--------------------+------------------------+-------+----------+--------------------------------------------------------------+
|
||||
| username | email | role | isActive | password |
|
||||
+--------------------+------------------------+-------+----------+--------------------------------------------------------------+
|
||||
| adminServFormation | admin@formation.local | admin | 1 | $2a$10$... (hash bcrypt) |
|
||||
+--------------------+------------------------+-------+----------+--------------------------------------------------------------+
|
||||
```
|
||||
|
||||
### 5. Si l'utilisateur n'existe pas, le créer manuellement
|
||||
|
||||
```sql
|
||||
-- Générer un hash bcrypt pour "Itinova69!"
|
||||
-- Utiliser le script reset-admin.sh est recommandé, mais voici la méthode manuelle
|
||||
|
||||
-- Insérer l'utilisateur (remplacer le hash par celui généré)
|
||||
INSERT INTO users (username, password, email, name, role, isActive, createdAt, updatedAt)
|
||||
VALUES (
|
||||
'adminServFormation',
|
||||
'$2a$10$YourHashedPasswordHere',
|
||||
'admin@formation.local',
|
||||
'Administrateur',
|
||||
'admin',
|
||||
1,
|
||||
NOW(),
|
||||
NOW()
|
||||
);
|
||||
```
|
||||
|
||||
**Note** : Il est fortement recommandé d'utiliser le script `reset-admin.sh` plutôt que de créer l'utilisateur manuellement.
|
||||
|
||||
---
|
||||
|
||||
## Vérification des logs
|
||||
|
||||
### Logs de l'application (systemd)
|
||||
|
||||
```bash
|
||||
sudo journalctl -u formation-manager -n 100 --no-pager
|
||||
```
|
||||
|
||||
Recherchez les erreurs liées à :
|
||||
- `JWT_SECRET`
|
||||
- `bcryptjs`
|
||||
- `jsonwebtoken`
|
||||
- `Database connection`
|
||||
|
||||
### Logs de l'application (développement)
|
||||
|
||||
Si vous exécutez l'application avec `pnpm dev`, les logs s'affichent directement dans le terminal.
|
||||
|
||||
Recherchez les messages d'erreur lors de la tentative de connexion.
|
||||
|
||||
---
|
||||
|
||||
## Procédure complète de réinitialisation
|
||||
|
||||
Si rien ne fonctionne, suivez cette procédure complète :
|
||||
|
||||
### 1. Vérifier la configuration
|
||||
|
||||
```bash
|
||||
cd /chemin/vers/formation-manager-itinova
|
||||
cat .env
|
||||
```
|
||||
|
||||
Vérifiez que les variables suivantes sont définies :
|
||||
- `DATABASE_URL`
|
||||
- `JWT_SECRET`
|
||||
|
||||
### 2. Vérifier la connexion à la base de données
|
||||
|
||||
```bash
|
||||
mysql -h localhost -u votre_utilisateur -p formation_manager -e "SELECT 1;"
|
||||
```
|
||||
|
||||
### 3. Réinstaller les dépendances
|
||||
|
||||
```bash
|
||||
rm -rf node_modules
|
||||
pnpm install
|
||||
```
|
||||
|
||||
### 4. Réinitialiser la base de données (⚠️ ATTENTION : supprime toutes les données)
|
||||
|
||||
```bash
|
||||
# Sauvegarder d'abord
|
||||
mysqldump -u root -p formation_manager > backup_avant_reset.sql
|
||||
|
||||
# Recréer la base de données
|
||||
mysql -u root -p -e "DROP DATABASE IF EXISTS formation_manager;"
|
||||
mysql -u root -p -e "CREATE DATABASE formation_manager CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
|
||||
|
||||
# Appliquer les migrations
|
||||
pnpm db:push
|
||||
```
|
||||
|
||||
### 5. Créer l'utilisateur administrateur
|
||||
|
||||
```bash
|
||||
./reset-admin.sh
|
||||
```
|
||||
|
||||
### 6. Redémarrer l'application
|
||||
|
||||
```bash
|
||||
sudo systemctl restart formation-manager
|
||||
```
|
||||
|
||||
### 7. Tester la connexion
|
||||
|
||||
Ouvrir http://votre-domaine.com et se connecter avec :
|
||||
- **Identifiant** : adminServFormation
|
||||
- **Mot de passe** : Itinova69!
|
||||
|
||||
---
|
||||
|
||||
## Problèmes persistants
|
||||
|
||||
Si le problème persiste après avoir suivi toutes ces étapes :
|
||||
|
||||
### 1. Vérifier les permissions des fichiers
|
||||
|
||||
```bash
|
||||
# Corriger les permissions
|
||||
sudo chown -R votre_utilisateur:votre_groupe /chemin/vers/formation-manager-itinova
|
||||
chmod -R 755 /chemin/vers/formation-manager-itinova
|
||||
```
|
||||
|
||||
### 2. Vérifier la version de Node.js
|
||||
|
||||
```bash
|
||||
node -v
|
||||
```
|
||||
|
||||
Version requise : **22.13.0 ou supérieure**
|
||||
|
||||
Si la version est inférieure :
|
||||
```bash
|
||||
# Installer Node.js 22
|
||||
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
|
||||
sudo apt install -y nodejs
|
||||
```
|
||||
|
||||
### 3. Vérifier la version de MySQL
|
||||
|
||||
```bash
|
||||
mysql --version
|
||||
```
|
||||
|
||||
Version requise : **MySQL 8.0+ ou MariaDB 10.6+**
|
||||
|
||||
### 4. Activer les logs de débogage
|
||||
|
||||
Ajouter dans `.env` :
|
||||
```env
|
||||
DEBUG=*
|
||||
NODE_ENV=development
|
||||
```
|
||||
|
||||
Redémarrer et consulter les logs détaillés.
|
||||
|
||||
---
|
||||
|
||||
## Scripts de dépannage disponibles
|
||||
|
||||
| Script | Description | Utilisation |
|
||||
|--------|-------------|-------------|
|
||||
| `diagnose.sh` | Diagnostic complet de la configuration | `./diagnose.sh` |
|
||||
| `reset-admin-sql.sh` | Réinitialisation de l'utilisateur admin | `./reset-admin-sql.sh` |
|
||||
| `deploy.sh` | Déploiement complet avec sauvegarde | `./deploy.sh` |
|
||||
|
||||
---
|
||||
|
||||
## Contacts et support
|
||||
|
||||
Si vous avez suivi toutes les étapes et que le problème persiste :
|
||||
|
||||
1. Exécuter le diagnostic complet :
|
||||
```bash
|
||||
./diagnose.sh > diagnostic_$(date +%Y%m%d_%H%M%S).txt
|
||||
```
|
||||
|
||||
2. Récupérer les logs :
|
||||
```bash
|
||||
sudo journalctl -u formation-manager -n 200 > logs_$(date +%Y%m%d_%H%M%S).txt
|
||||
```
|
||||
|
||||
3. Contacter l'équipe de développement avec :
|
||||
- Le fichier de diagnostic
|
||||
- Les logs de l'application
|
||||
- La description détaillée du problème
|
||||
|
||||
---
|
||||
|
||||
**Dernière mise à jour** : 23 novembre 2025
|
||||
Reference in New Issue
Block a user