const bcrypt = require('bcryptjs'); const db = require('../models/db'); const userServices = require('../services/user'); exports.signup = async (req, res, next) => { let { username, lastname, firstname, birthdate, password } = req.body; try { let result = await userServices.signup(username, lastname, firstname, birthdate, password) res.status(201).json({ message: 'Utilisateur ajouté' }); } catch (error) { res.status(500).json({ error }); } }; exports.login = async (req, res, next) => { let { username, password } = req.body; try { let loggedin = await userServices.login(username, password); if (loggedin) { req.session.username = username; res.status(200).json({ message: 'Connecté !' }); } else { res.status(401).json({ message: 'Identifiant ou mot de passe incorrect' }); } } catch (error) { res.status(500).json({ error }); } }; exports.logout = (req, res, next) => { req.session.username = null; res.status(200).json({ message: 'Déconnecté !' }); }; exports.getUserInformations = async (req, res, next) => { let username = req.session.username; //renvoyer login, nom, prenom, dateNais try { let result = await userServices.getUserInformations(username); let infos = { username: result.login, lastname: result.nom, firstname: result.prenom, birthdate: result.dateNais }; res.status(200).json(infos); } catch (error) { res.status(500).json({ error }); } }; // exports.changeUserInfos = async (req, res, next) => { // try { // const { newUsername, newPassword } = req.params; // const currentUsername = req.session.username; // Supposant que le nom d'utilisateur actuel est stocké dans la session // console.log(req.params); // console.log(req.body); // console.log(newUsername); // if (!newUsername && !newPassword) { // return res.status(400).json({ message: 'Aucune information à mettre à jour' }); // } // // Vérification si le nouvel utilisateur existe déjà // if (newUsername) { // const userExists = await checkUserExists(newUsername); // if (userExists) { // return res.status(409).json({ message: 'Le nouvel utilisateur existe déjà' }); // } // } // // Mise à jour du nom d'utilisateur et/ou du mot de passe dans la base de données // const updateResult = await updateUserInfo(currentUsername, newUsername, newPassword); // // Vérification si la mise à jour a réussi // if (updateResult) { // req.session.username = newUsername || currentUsername; // Mettre à jour le nom d'utilisateur dans la session si applicable // res.status(200).json({ message: 'Informations utilisateur mises à jour avec succès' }); // } else { // res.status(500).json({ message: 'Échec de la mise à jour des informations utilisateur' }); // } // } catch (error) { // console.error('Erreur lors de la mise à jour des informations utilisateur :', error); // res.status(500).json({ error }); // } // }; // // Fonction pour vérifier si un utilisateur existe déjà dans la base de données // async function checkUserExists(username) { // const queryResult = await new Promise((resolve, reject) => { // db.query('SELECT COUNT(*) c FROM Utilisateur WHERE login=?', [username], (error, results, fields) => { // if (error) { // reject(error); // } else { // resolve(results[0].c > 0); // } // }); // }); // return queryResult; // } // // Fonction pour mettre à jour le nom d'utilisateur et/ou le mot de passe dans la base de données // async function updateUserInfo(currentUsername, newUsername, newPassword) { // const updateResult = await new Promise((resolve, reject) => { // let updateQuery = 'UPDATE Utilisateur SET'; // const updateParams = []; // if (newUsername) { // updateQuery += ' login=?,'; // updateParams.push(newUsername); // } // if (newPassword) { // updateQuery += ' mdp=?,'; // const hash = bcrypt.hashSync(newPassword, 10); // updateParams.push(hash); // } // // Supprimer la virgule finale de la requête // updateQuery = updateQuery.replace(/,$/, ''); // // Ajouter la clause WHERE pour le nom d'utilisateur actuel // updateQuery += ' WHERE login=?'; // updateParams.push(currentUsername); // // Exécution de la mise à jour // db.query(updateQuery, updateParams, (error, results, fields) => { // if (error) { // reject(error); // } else { // resolve(true); // } // }); // }); // return updateResult; // }