zkt26/z1/webapp/routes/profil.js
2026-03-31 19:33:15 +02:00

57 lines
2.0 KiB
JavaScript

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;