# 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