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:
Manus Sandbox
2025-11-23 08:50:35 -05:00
parent ccb1484839
commit 645f6f6b5f
12 changed files with 2984 additions and 12 deletions

290
INSTALL.md Normal file
View File

@@ -0,0 +1,290 @@
# Guide d'Installation Rapide
## Installation en 5 minutes
Ce guide vous permet d'installer et de démarrer l'application rapidement en environnement de développement.
---
## Prérequis
Avant de commencer, assurez-vous d'avoir installé :
- **Node.js 22+** : [Télécharger Node.js](https://nodejs.org/)
- **MySQL 8.0+** ou **MariaDB 10.6+** : [Télécharger MySQL](https://dev.mysql.com/downloads/)
- **Git** (optionnel) : [Télécharger Git](https://git-scm.com/)
---
## Étape 1 : Récupérer le projet
### Option A : Depuis l'archive ZIP
```bash
# Extraire l'archive
unzip formation-manager-itinova.zip
cd formation-manager-itinova
```
### Option B : Depuis Git (si disponible)
```bash
# Cloner le dépôt
git clone <url-du-depot>
cd formation-manager-itinova
```
---
## Étape 2 : Installer les dépendances
```bash
# Installer pnpm si nécessaire
npm install -g pnpm
# Installer les dépendances du projet
pnpm install
```
---
## Étape 3 : Configurer la base de données
### 3.1 Créer la base de données
```bash
# Se connecter à MySQL
mysql -u root -p
# Créer la base de données
CREATE DATABASE formation_manager CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# Créer un utilisateur dédié (optionnel mais recommandé)
CREATE USER 'formation_user'@'localhost' IDENTIFIED BY 'votre_mot_de_passe_securise';
GRANT ALL PRIVILEGES ON formation_manager.* TO 'formation_user'@'localhost';
FLUSH PRIVILEGES;
# Quitter MySQL
EXIT;
```
### 3.2 Configurer les variables d'environnement
Créer un fichier `.env` à la racine du projet :
```env
# Base de données
DATABASE_URL=mysql://formation_user:votre_mot_de_passe_securise@localhost:3306/formation_manager
# JWT Secret (générer une clé aléatoire)
JWT_SECRET=votre_cle_secrete_aleatoire_tres_longue_minimum_32_caracteres
# Application
VITE_APP_TITLE=Gestion des Formations Manager Itinova
VITE_APP_LOGO=/logo.svg
NODE_ENV=development
```
**Note** : Pour générer une clé JWT sécurisée, vous pouvez utiliser :
```bash
# Linux/Mac
openssl rand -base64 32
# Node.js
node -e "console.log(require('crypto').randomBytes(32).toString('base64'))"
```
### 3.3 Initialiser la base de données
```bash
# Appliquer les migrations (créer les tables)
pnpm db:push
```
---
## Étape 4 : Démarrer l'application
```bash
# Lancer le serveur de développement
pnpm dev
```
L'application sera accessible à l'adresse : **http://localhost:3000**
---
## Étape 5 : Première connexion
### Connexion avec l'utilisateur administrateur local
1. Ouvrir **http://localhost:3000** dans votre navigateur
2. Cliquer sur **"Se connecter localement"**
3. Utiliser les identifiants par défaut :
- **Identifiant** : `adminServFormation`
- **Mot de passe** : `Itinova69!`
**Important** : Cet utilisateur est créé automatiquement au premier lancement et ne peut pas être supprimé.
---
## Configuration initiale
Une fois connecté, vous pouvez :
### 1. Configurer l'envoi d'emails (optionnel)
1. Créer un compte sur [Resend](https://resend.com)
2. Générer une clé API
3. Dans l'application, aller dans **Configuration SMTP**
4. Saisir :
- **Clé API Resend** : votre clé API
- **Email expéditeur** : votre email vérifié
- **Nom de l'expéditeur** : Itinova Formation
5. Activer le mode **Production**
### 2. Créer des utilisateurs supplémentaires
1. Aller dans **Utilisateurs**
2. Cliquer sur **Ajouter un utilisateur**
3. Remplir les informations :
- Nom d'utilisateur
- Mot de passe
- Email
- Rôle (admin ou user)
### 3. Créer vos premières formations
1. Aller dans **Formations**
2. Cliquer sur **Nouvelle formation**
3. Remplir les informations de la formation
4. Créer des séquences associées
### 4. Importer les apprenants
1. Aller dans **Apprenants**
2. Ajouter les apprenants un par un ou créer un script d'import
---
## Commandes utiles
```bash
# Démarrer le serveur de développement
pnpm dev
# Builder pour la production
pnpm build
# Démarrer en mode production
pnpm start
# Appliquer les migrations
pnpm db:push
# Générer les migrations (après modification du schéma)
pnpm db:generate
# Ouvrir Drizzle Studio (interface graphique pour la base de données)
pnpm db:studio
```
---
## Structure du projet
```
formation-manager-itinova/
├── client/ # Application frontend (React)
│ ├── public/ # Fichiers statiques
│ └── src/
│ ├── pages/ # Pages de l'application
│ ├── components/ # Composants réutilisables
│ └── lib/ # Bibliothèques et utilitaires
├── server/ # Application backend (Express + tRPC)
│ ├── routers.ts # Définition des routes API
│ ├── db.ts # Fonctions d'accès à la base de données
│ └── _core/ # Configuration du serveur
├── drizzle/ # Schéma et migrations de base de données
│ └── schema.ts # Définition des tables
├── shared/ # Code partagé entre client et serveur
├── .env # Variables d'environnement (à créer)
├── package.json # Dépendances du projet
├── deploy.sh # Script de déploiement automatique
├── DEPLOYMENT.md # Guide de déploiement complet
└── README.md # Documentation principale
```
---
## Dépannage rapide
### L'application ne démarre pas
**Erreur : "Cannot find module"**
```bash
# Réinstaller les dépendances
rm -rf node_modules
pnpm install
```
**Erreur : "ECONNREFUSED" (connexion à la base de données)**
```bash
# Vérifier que MySQL est démarré
sudo systemctl status mysql
# Vérifier l'URL de connexion dans .env
cat .env | grep DATABASE_URL
```
### Les migrations échouent
```bash
# Vérifier que la base de données existe
mysql -u root -p -e "SHOW DATABASES;"
# Recréer la base de données si nécessaire
mysql -u root -p -e "DROP DATABASE IF EXISTS formation_manager; CREATE DATABASE formation_manager CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
# Réappliquer les migrations
pnpm db:push
```
### Impossible de se connecter
**Vérifier que JWT_SECRET est défini**
```bash
cat .env | grep JWT_SECRET
```
Si vide, générer une nouvelle clé :
```bash
echo "JWT_SECRET=$(openssl rand -base64 32)" >> .env
```
---
## Prochaines étapes
Une fois l'installation terminée :
1. **Lire la documentation complète** : `DEPLOYMENT.md`
2. **Personnaliser les templates d'emails** : Menu "Templates d'emails"
3. **Configurer les rappels automatiques** : Menu "Rappels"
4. **Tester l'envoi d'emails** : Configuration SMTP
5. **Déployer en production** : Suivre le guide `DEPLOYMENT.md`
---
## Support
Pour toute question ou problème :
- Consulter `DEPLOYMENT.md` pour la documentation complète
- Vérifier les logs de l'application
- Contacter l'équipe de développement
---
**Bon déploiement ! 🚀**