53 lines
1.4 KiB
JavaScript
53 lines
1.4 KiB
JavaScript
const express = require('express');
|
|
const router = express.Router();
|
|
const bcrypt = require('bcrypt');
|
|
const db = require('../config/db');
|
|
|
|
// Connexion - Formulaire
|
|
router.get('/', (req, res) => {
|
|
res.render('connexion');
|
|
});
|
|
|
|
// Connexion - Traitement
|
|
router.post('/', (req, res) => {
|
|
const { identifiant, mot_de_passe } = req.body;
|
|
|
|
const sql = 'SELECT * FROM utilisateur WHERE identifiant = ?';
|
|
db.query(sql, [identifiant], async (err, results) => {
|
|
if (err) {
|
|
console.error('Erreur lors de la requête :', err);
|
|
return res.send('Erreur serveur');
|
|
}
|
|
|
|
if (results.length === 0) {
|
|
return res.send('Identifiant incorrect');
|
|
}
|
|
|
|
const utilisateur = results[0];
|
|
const match = await bcrypt.compare(mot_de_passe, utilisateur.mot_de_passe);
|
|
|
|
if (!match) {
|
|
return res.send('Mot de passe incorrect');
|
|
}
|
|
|
|
// Enregistrement en session
|
|
req.session.utilisateur = utilisateur;
|
|
console.log("Utilisateur connecté :", req.session.utilisateur);
|
|
|
|
// Redirection selon le statut
|
|
switch (utilisateur.statut) {
|
|
case 'administrateur':
|
|
return res.redirect('/admin');
|
|
case 'complexe':
|
|
return res.redirect('/dashboard-complexe');
|
|
case 'simple':
|
|
return res.redirect('/objets'); // 🔄 Redirection mise à jour ici
|
|
case 'visiteur':
|
|
default:
|
|
return res.redirect('/');
|
|
}
|
|
});
|
|
});
|
|
|
|
module.exports = router;
|