add some backend code

This commit is contained in:
MuhammadKhalilzadeh
2024-06-28 13:30:14 +03:30
parent 4aecfd31d0
commit 07ea9c590d
2 changed files with 41 additions and 10 deletions

View File

@@ -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,

View File

@@ -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<UserModel>}
* @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;
}