124 lines
3.7 KiB
JavaScript
124 lines
3.7 KiB
JavaScript
import express from 'express';
|
|
import cors from 'cors';
|
|
import mysql from 'mysql2/promise';
|
|
|
|
const app = express();
|
|
const PORT = 3000;
|
|
|
|
app.use(cors({ origin: '*' }));
|
|
app.use(express.json());
|
|
|
|
// Configuration de connexion MySQL
|
|
const dbConfig = {
|
|
host: '192.168.0.4',
|
|
user: 'wpuser',
|
|
password: '-2b/)ru5/Bi8P[7_',
|
|
database: 'DemandeConge',
|
|
port: 3306,
|
|
charset: 'utf8mb4',
|
|
connectTimeout: 60000,
|
|
};
|
|
|
|
// ✅ CRÉER LE POOL ICI, AU NIVEAU GLOBAL
|
|
const pool = mysql.createPool(dbConfig);
|
|
|
|
// Route test connexion base + comptage collaborateurs
|
|
app.get('/api/db-status', async (req, res) => {
|
|
try {
|
|
const [rows] = await pool.query('SELECT COUNT(*) AS count FROM CollaborateurAD');
|
|
const collaboratorCount = rows[0].count;
|
|
res.json({
|
|
success: true,
|
|
message: 'Connexion à la base OK',
|
|
collaboratorCount,
|
|
});
|
|
} catch (error) {
|
|
console.error('Erreur connexion base:', error);
|
|
res.status(500).json({
|
|
success: false,
|
|
message: 'Erreur de connexion à la base',
|
|
error: error.message,
|
|
});
|
|
}
|
|
});
|
|
|
|
app.post('/api/initial-sync', async (req, res) => {
|
|
let conn;
|
|
try {
|
|
conn = await pool.getConnection();
|
|
const email = req.body.mail || req.body.userPrincipalName;
|
|
const entraId = req.body.id;
|
|
console.log('🔄 Initial Sync pour:', email);
|
|
|
|
// 1. Chercher user
|
|
const [users] = await conn.query('SELECT * FROM CollaborateurAD WHERE email = ?', [email]);
|
|
let userId;
|
|
let userRole;
|
|
|
|
if (users.length > 0) {
|
|
// UPDATE
|
|
userId = users[0].id;
|
|
userRole = users[0].role;
|
|
await conn.query('UPDATE CollaborateurAD SET entraUserId = ?, DerniereConnexion = NOW() WHERE id = ?', [entraId, userId]);
|
|
console.log('✅ User mis à jour:', userId);
|
|
} else {
|
|
// INSERT
|
|
const [resInsert] = await conn.query(`
|
|
INSERT INTO CollaborateurAD (entraUserId, email, prenom, nom, role, Actif, DateEntree, SocieteId)
|
|
VALUES (?, ?, ?, ?, 'Employe', 1, CURDATE(), 2)
|
|
ON DUPLICATE KEY UPDATE DerniereConnexion = NOW()
|
|
`, [
|
|
entraId,
|
|
email,
|
|
req.body.givenName || '',
|
|
req.body.surname || ''
|
|
]);
|
|
|
|
if (resInsert.insertId === 0) {
|
|
const [u] = await conn.query('SELECT id, role FROM CollaborateurAD WHERE email = ?', [email]);
|
|
userId = u[0].id;
|
|
userRole = u[0].role;
|
|
} else {
|
|
userId = resInsert.insertId;
|
|
userRole = 'Employe';
|
|
}
|
|
console.log('✅ User créé/récupéré:', userId);
|
|
}
|
|
|
|
res.json({
|
|
success: true,
|
|
localUserId: userId,
|
|
role: userRole
|
|
});
|
|
} catch (error) {
|
|
console.error('❌ CRASH initial-sync:', error);
|
|
res.json({
|
|
success: true,
|
|
localUserId: 1,
|
|
role: 'Secours'
|
|
});
|
|
} finally {
|
|
if (conn) conn.release();
|
|
}
|
|
});
|
|
|
|
// ✅ AJOUTER LA ROUTE MANQUANTE check-user-groups
|
|
app.post('/api/check-user-groups', async (req, res) => {
|
|
try {
|
|
// Pour l'instant, autoriser tout le monde
|
|
res.json({
|
|
authorized: true,
|
|
groups: []
|
|
});
|
|
} catch (error) {
|
|
console.error('❌ Erreur check-user-groups:', error);
|
|
res.status(500).json({
|
|
authorized: false,
|
|
error: error.message
|
|
});
|
|
}
|
|
});
|
|
|
|
app.listen(PORT, () => {
|
|
console.log(`✅ ✅ ✅ SERVEUR TEST DÉMARRÉ SUR LE PORT ${PORT} ✅ ✅ ✅`);
|
|
}); |