Files
formation-manager-itinova/TROUBLESHOOTING.md

394 lines
8.6 KiB
Markdown

# 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