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