Files
formation-manager-itinova/TROUBLESHOOTING.md

8.6 KiB

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

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 :

    openssl rand -base64 32
    
  2. Ajouter la clé dans le fichier .env :

    echo "JWT_SECRET=votre_cle_generee_ici" >> .env
    
  3. Redémarrer l'application :

    # 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 :

./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 :

    pnpm db:push
    
  2. Créer l'utilisateur administrateur :

    ./reset-admin-sql.sh
    
  3. Redémarrer l'application :

    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 :

./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 :

    pnpm install
    
  2. Vérifier que bcryptjs est installé :

    ls node_modules/bcryptjs
    
  3. Redémarrer l'application :

    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 :

    pnpm install jsonwebtoken
    
  2. Redémarrer l'application :

    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

mysql -u root -p

2. Sélectionner la base de données

USE formation_manager;

3. Vérifier que la table users existe

SHOW TABLES;

Vous devriez voir users dans la liste.

4. Vérifier l'utilisateur adminServFormation

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

-- 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)

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

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

mysql -h localhost -u votre_utilisateur -p formation_manager -e "SELECT 1;"

3. Réinstaller les dépendances

rm -rf node_modules
pnpm install

4. Réinitialiser la base de données (⚠️ ATTENTION : supprime toutes les données)

# 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

./reset-admin.sh

6. Redémarrer l'application

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

# 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

node -v

Version requise : 22.13.0 ou supérieure

Si la version est inférieure :

# 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

mysql --version

Version requise : MySQL 8.0+ ou MariaDB 10.6+

4. Activer les logs de débogage

Ajouter dans .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 :

    ./diagnose.sh > diagnostic_$(date +%Y%m%d_%H%M%S).txt
    
  2. Récupérer les logs :

    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