From 8677afb66a6c2229ee6851cd149c944ce407ba9a Mon Sep 17 00:00:00 2001 From: patrixampm Date: Mon, 20 Jan 2025 16:35:44 +0100 Subject: [PATCH] First attempt to complete tasks. Still must be reviewed --- src/dals/user/user.repository.ts | 8 ++++++++ src/pods/user/user.api.ts | 23 +++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/src/dals/user/user.repository.ts b/src/dals/user/user.repository.ts index 9d96599..0a293c8 100644 --- a/src/dals/user/user.repository.ts +++ b/src/dals/user/user.repository.ts @@ -29,4 +29,12 @@ export const userRepository = { return saveUser; }, + updateUser: async (id: string, updateFields: Partial) => { + const userId = mapStringToObjectId(id); + return await getUserContext().findOneAndUpdate( + { _id: userId }, + { $set: updateFields }, + { upsert: true, returnDocument: 'after', ignoreUndefined: true }, + ); + }, }; diff --git a/src/pods/user/user.api.ts b/src/pods/user/user.api.ts index 4674920..61a6270 100644 --- a/src/pods/user/user.api.ts +++ b/src/pods/user/user.api.ts @@ -62,4 +62,27 @@ userApi } catch (error) { next(error); } + }) + .patch('/:id', async (req, res, next) => { + try { + const { id } = req.params; + const existingUser = await userRepository.getUser(id, { _id: 1 }); + + if (existingUser) { + const temporaryPassword = await generateSalt(); + const hashedPassword = await hash(temporaryPassword); + + await userRepository.updateUser(id, { + contraseña: hashedPassword, + esContraseñaTemporal: true, + } + ); + + res.status(200).send({ temporaryPassword }); + } else { + res.sendStatus(400); + } + } catch (error) { + next(error); + } });