57 lines
2.0 KiB
JavaScript
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;
|