diff --git a/backend/src/controllers/userController.js b/backend/src/controllers/userController.js index 16bb02f24fb848feb13b6ff328e2106c30fb0af8..274c1a203654f04cec79f99bcd4e1798d758f900 100644 --- a/backend/src/controllers/userController.js +++ b/backend/src/controllers/userController.js @@ -159,3 +159,14 @@ exports.getUserSeenMovies= async (req, res, next) => { // }); // return updateResult; // } + +exports.changeUserPassword = async (req,res,next) => { + let username = req.session.username; + let newPassword = req.body.newPassword; + try { + await userServices.changeUserPassword(username,newPassword) + res.status(200).json({ message: 'Mot de passe modifié' }); + } catch (error) { + res.status(500).json({ error : error.toString()}); + } +} diff --git a/backend/src/models/userDb.js b/backend/src/models/userDb.js index e8907720705fff93f65a6659e35d1b04b1cb44f7..21a64f65928274aa79df1898f67b69960126d0b3 100644 --- a/backend/src/models/userDb.js +++ b/backend/src/models/userDb.js @@ -90,3 +90,26 @@ exports.getUserSeenMovies = (username) => { }) }; + +/** + * Met à jour le mot de passe d'un utilisateur dans la base de données. + * + * @param {string} username - Le nom d'utilisateur de l'utilisateur dont le mot de passe doit être modifié. + * @param {string} newPasswordHash - Le nouveau mot de passe hashé de l'utilisateur. + * @returns {Promise<Object>} Une promesse qui se résout avec un objet contenant des informations sur l'opération de modification du mot de passe. + * La promesse se rejette avec une erreur si l'opération échoue. + */ +exports.changeUserPassword = (username, newPasswordHash) => { + return new Promise((resolve, reject) => { + db.query('UPDATE Utilisateur set mdp = ? WHERE login=?', + [newPasswordHash, username], + function (error, results, fields) { + if (error) { + return reject(error); + } + else { + return resolve(results); + } + }) + }) +} diff --git a/backend/src/services/user.js b/backend/src/services/user.js index aa692de3604bee234fe0167c363e4bc36507eae1..9ec4c1c3af298955e8a6be5ce711986ab0b5707a 100644 --- a/backend/src/services/user.js +++ b/backend/src/services/user.js @@ -82,4 +82,22 @@ exports.getUserSeenMovies = async (username) => { catch (error) { throw new Error(error); } +} + +/** + * Modifie le mot de passe d'un utilisateur dans la base de données. + * + * @param {string} username - Le nom d'utilisateur de l'utilisateur dont le mot de passe doit être modifié. + * @param {string} newPassword - Le nouveau mot de passe de l'utilisateur. + * @returns {Promise<Object>} Une promesse qui se résout avec un objet contenant des informations sur l'opération de modification du mot de passe. + * La promesse se rejette avec une erreur si l'opération échoue. + */ +exports.changeUserPassword = async (username, newPassword) => { + + try { + const hash = await bcrypt.hash(newPassword, 10); + return await userDb.changeUserPassword(username,hash) + } catch (error) { + throw new Error(error); + } } \ No newline at end of file