394 lines
8.6 KiB
Markdown
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
|