116 lines
3.6 KiB
JavaScript
116 lines
3.6 KiB
JavaScript
const express = require('express');
|
|
const router = express.Router();
|
|
const db = require('../config/db');
|
|
|
|
// Middleware de protection admin (défini ici si non global)
|
|
const requireAdmin = (req, res, next) => {
|
|
if (!req.session.utilisateur || req.session.utilisateur.statut !== 'administrateur') {
|
|
return res.send(`
|
|
<script>
|
|
alert("Tu n'es pas connecté en tant qu'admin !");
|
|
window.location.href = '/connexion';
|
|
</script>
|
|
`);
|
|
}
|
|
next();
|
|
};
|
|
|
|
// Applique le middleware à toutes les routes de ce fichier
|
|
router.use(requireAdmin);
|
|
|
|
// Route principale - admin dashboard
|
|
router.get('/', (req, res) => {
|
|
const usersQuery = 'SELECT * FROM utilisateur';
|
|
const objetsQuery = 'SELECT * FROM objet';
|
|
const contactsQuery = 'SELECT * FROM contact'; // Récupérer les messages de contact
|
|
|
|
db.query(usersQuery, (err, utilisateurs) => {
|
|
if (err) return res.status(500).send('Erreur récupération utilisateurs');
|
|
|
|
db.query(objetsQuery, (err2, objets) => {
|
|
if (err2) return res.status(500).send('Erreur récupération objets');
|
|
|
|
db.query(contactsQuery, (err3, contacts) => {
|
|
if (err3) return res.status(500).send('Erreur récupération messages');
|
|
res.render('admin', { utilisateurs, objets, contacts });
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
// Mise à jour utilisateur
|
|
router.post('/update-user', (req, res) => {
|
|
const { id, etat, statut } = req.body;
|
|
const sql = 'UPDATE utilisateur SET etat = ?, statut = ? WHERE id = ?';
|
|
|
|
db.query(sql, [etat, statut, id], (err) => {
|
|
if (err) {
|
|
console.error('Erreur update utilisateur :', err);
|
|
return res.status(500).send('Erreur update utilisateur');
|
|
}
|
|
res.redirect('/admin');
|
|
});
|
|
});
|
|
|
|
// Suppression utilisateur
|
|
router.post('/supprimer-user', (req, res) => {
|
|
const { id } = req.body;
|
|
const sql = 'DELETE FROM utilisateur WHERE id = ?';
|
|
|
|
db.query(sql, [id], (err) => {
|
|
if (err) {
|
|
console.error('Erreur suppression utilisateur :', err);
|
|
return res.status(500).send("Erreur lors de la suppression de l'utilisateur");
|
|
}
|
|
res.redirect('/admin');
|
|
});
|
|
});
|
|
|
|
// Mise à jour objet
|
|
router.post('/update-objet', (req, res) => {
|
|
const { adresse_ip, niveau, etat, type } = req.body;
|
|
const sql = 'UPDATE objet SET niveau = ?, etat = ?, type = ? WHERE adresse_ip = ?';
|
|
|
|
db.query(sql, [niveau, etat, type, adresse_ip], (err) => {
|
|
if (err) {
|
|
console.error('Erreur update objet :', err);
|
|
return res.status(500).send('Erreur update objet');
|
|
}
|
|
res.redirect('/admin');
|
|
});
|
|
});
|
|
|
|
// Suppression objet + dépendances
|
|
router.post('/supprimer-objet', (req, res) => {
|
|
const { adresse_ip } = req.body;
|
|
const deleteChildTables = ['climatisation_chauffage', 'thermostat', 'appareil_menager', 'securite'];
|
|
|
|
const deleteFromTable = (table) => {
|
|
return new Promise((resolve, reject) => {
|
|
const sql = `DELETE FROM ${table} WHERE adresse_ip = ?`;
|
|
db.query(sql, [adresse_ip], (err) => {
|
|
if (err) return reject(err);
|
|
resolve();
|
|
});
|
|
});
|
|
};
|
|
|
|
Promise.all(deleteChildTables.map(deleteFromTable))
|
|
.then(() => {
|
|
const sql = 'DELETE FROM objet WHERE adresse_ip = ?';
|
|
db.query(sql, [adresse_ip], (err) => {
|
|
if (err) {
|
|
console.error('Erreur suppression objet :', err);
|
|
return res.status(500).send("Erreur lors de la suppression de l'objet");
|
|
}
|
|
res.redirect('/admin');
|
|
});
|
|
})
|
|
.catch(err => {
|
|
console.error("Erreur suppression dépendances : ", err);
|
|
res.status(500).send("Erreur lors de la suppression des dépendances liées à l'objet");
|
|
});
|
|
});
|
|
|
|
module.exports = router;
|