Ajout page login non fonctionnelle

This commit is contained in:
2025-09-16 10:55:23 +02:00
parent 83e2b786c7
commit ad695b82f7
12 changed files with 3076 additions and 784 deletions

View File

@@ -0,0 +1,158 @@
const express = require('express');
const cors = require('cors');
const sql = require('mssql');
require('dotenv').config();
const app = express();
const PORT = 3002;
// Configuration base de données
const dbConfig = {
server: process.env.DB_SERVER,
database: process.env.DB_DATABASE,
user: process.env.DB_USER,
password: process.env.DB_PASSWORD,
options: {
encrypt: true,
trustServerCertificate: true,
enableArithAbort: true
}
};
// Middleware
app.use(cors({
origin: ['http://localhost:5173', 'http://localhost:5174', 'http://localhost:3000', 'http://127.0.0.1:5173', 'http://127.0.0.1:5174'],
credentials: true
}));
app.use(express.json());
// Log de toutes les requêtes
app.use((req, res, next) => {
console.log(`${new Date().toISOString()} - ${req.method} ${req.path} depuis ${req.get('origin') || 'inconnu'}`);
next();
});
// Variable pour stocker la connexion
let pool = null;
// Fonction pour se connecter à la base
async function connectDatabase() {
try {
pool = await sql.connect(dbConfig);
console.log('Base de données connectée');
return true;
} catch (error) {
console.error('Erreur de connexion :', error.message);
return false;
}
}
// Route de test
app.get('/api/test', (req, res) => {
res.json({
message: 'Le serveur fonctionne !',
timestamp: new Date().toISOString()
});
});
// Route pour tester la base de données
app.get('/api/db-test', async (req, res) => {
try {
if (!pool) {
return res.status(500).json({ error: 'Base non connectée' });
}
const result = await pool.request().query('SELECT COUNT(*) as total FROM FormateurSqy');
res.json({
message: 'Base OK',
formateurs: result.recordset[0].total
});
} catch (error) {
res.status(500).json({ error: error.message });
}
});
// Route pour mettre à jour le statut d'une déclaration
app.put('/api/declarations/:id/status', async (req, res) => {
try {
const { id } = req.params;
const { status } = req.body;
await pool.request()
.input('id', sql.Int, id)
.input('status', sql.VarChar, status)
.query('UPDATE declarations SET status = @status WHERE id = @id');
res.json({ success: true, message: 'Statut mis à jour' });
} catch (error) {
res.status(500).json({ success: false, error: error.message });
}
});
// Modifier votre route existante
// Remplacez la route existante par :
app.get('/api/get_declarations', async (req, res) => {
try {
console.log('Récupération des déclarations...');
const result = await pool.request().query(`
SELECT
d.id,
d.formateur_numero as utilisateur_id,
td.id as type_demande_id,
d.date,
d.duree,
d.description,
d.formateur_numero,
'pending' as status,
td.libelle as activityType,
f.NOM_ENS as nom,
f.PRENOM_ENS as prenom,
'Non défini' as campus
FROM declarations d
INNER JOIN types_demandes td ON d.type_demande_id = td.id
LEFT JOIN FormateurSqy f ON d.formateur_numero = f.NUMERO
ORDER BY d.date DESC
`);
console.log(`${result.recordset.length} déclarations trouvées`);
res.json(result.recordset);
} catch (error) {
console.error('Erreur lors de la récupération:', error);
res.status(500).json({ error: error.message });
}
});
// Démarrage du serveur
async function startServer() {
const dbConnected = await connectDatabase();
if (!dbConnected) {
console.log('Impossible de démarrer sans base de données');
return;
}
app.listen(PORT, () => {
console.log(`Serveur démarré sur http://localhost:${PORT}`);
console.log('Routes disponibles :');
console.log('- GET /api/test');
console.log('- GET /api/db-test');
console.log('- GET /api/get_declarations');
console.log('- PUT /api/declarations/:id/status');
});
}
// Arrêt propre
process.on('SIGINT', async () => {
console.log('Arrêt du serveur...');
if (pool) {
await pool.close();
}
process.exit(0);
});
// Démarrer
startServer();