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(` `); } 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;