diff --git a/Server/controllers/authController.js b/Server/controllers/authController.js index 16eb6eb00..426ce3bd5 100644 --- a/Server/controllers/authController.js +++ b/Server/controllers/authController.js @@ -234,6 +234,41 @@ const resetPasswordController = async (req, res, next) => { next(error); } }; + +const deleteUserController = async (req, res, next) => { + try { + // Validate user ID + await editUserParamValidation.validateAsync(req.params); + + // Check if the user exists + const user = await req.db.getUserById(req.params.userId); + if (!user) { + throw new Error(errorMessages.AUTH_USER_NOT_FOUND); + } + + // Delete the user + await req.db.deleteUser(req.params.userId); + + return res.status(200).json({ + success: true, + msg: successMessages.AUTH_DELETE_USER, + }); + } catch (error) { + error.service = SERVICE_NAME; + next(error); + } +}; + +module.exports = { + registerController, + loginController, + userEditController, + recoveryRequestController, + validateRecoveryTokenController, + resetPasswordController, + deleteUserController, +}; + module.exports = { registerController, loginController, diff --git a/Server/db/MongoDB.js b/Server/db/MongoDB.js index ef53863ee..e67437c16 100644 --- a/Server/db/MongoDB.js +++ b/Server/db/MongoDB.js @@ -94,24 +94,20 @@ const updateUser = async (req, res) => { } }; + /** - * Request a recovery token + * Delete a user by ID * @async * @param {Express.Request} req * @param {Express.Response} res * @returns {Promise} * @throws {Error} */ -const requestRecoveryToken = async (req, res) => { +const deleteUser = async (req, res) => { + const userId = req.params.userId; try { - // Delete any existing tokens - await RecoveryToken.deleteMany({ email: req.body.email }); - let recoveryToken = new RecoveryToken({ - email: req.body.email, - token: crypto.randomBytes(32).toString("hex"), - }); - await recoveryToken.save(); - return recoveryToken; + const deletedUser = await UserModel.findByIdAndDelete(userId); + return deletedUser; } catch (error) { throw error; }