const express = require('express'); const router = express.Router(); const ensureAuthenticated = require('../middleware/auth'); const db = require('../config/db'); const multer = require('multer'); const bcrypt = require('bcrypt'); const storage = multer.diskStorage({ destination: (req, file, cb) => { cb(null, 'photos'); }, filename: (req, file, cb) => { const uniqueSuffix = Date.now() + '-' + Math.round(Math.random() * 1E9); cb(null, uniqueSuffix + '-' + file.originalname); // Nom unique pour éviter les conflits } }); const upload = multer({ storage: storage, limits: { fileSize: 5 * 1024 * 1024 }, // Limite de taille (5 Mo) }).fields([ { name: 'photo', maxCount: 1 }, // Champ pour le fichier ]); router.get('/', ensureAuthenticated, (req, res) => { const utilisateur = req.session.utilisateur; res.render('profil', { utilisateur }); }); router.post('/update', ensureAuthenticated, upload, (req, res) => { const mot_de_passe = req.body.mot_de_passe ? bcrypt.hashSync(req.body.mot_de_passe, 10) : req.session.utilisateur.mot_de_passe; const { identifiant, nom, prenom, sexe, situation } = req.body; const photo = req.files && req.files.photo ? req.files.photo[0].filename : req.session.utilisateur.photo; const id = req.session.utilisateur.id; const sql = 'UPDATE utilisateur SET identifiant = ?, nom = ?, prenom = ?, sexe = ?, situation = ?, photo = ?, mot_de_passe = ? WHERE id = ?'; db.query(sql, [identifiant, nom, prenom, sexe, situation, photo, mot_de_passe, id], (err, result) => { if (err) { console.error(err); return res.status(500).send("Erreur lors de la mise à jour"); } req.session.utilisateur.identifiant = identifiant; req.session.utilisateur.nom = nom; req.session.utilisateur.prenom = prenom; req.session.utilisateur.sexe = sexe; req.session.utilisateur.situation = situation; req.session.utilisateur.photo = photo; req.session.utilisateur.mot_de_passe = mot_de_passe; res.redirect('/profil'); }); }); module.exports = router;