diff --git a/modules/auth/auth.controller.js b/modules/auth/auth.controller.js index 8e4d488..dd404f5 100644 --- a/modules/auth/auth.controller.js +++ b/modules/auth/auth.controller.js @@ -98,9 +98,27 @@ async function regenerateToken(req, res, next) { } } +async function rejectToken(req, res, next) { + const refreshToken = req.body.refreshToken; + const user = await authService.extraMethods.findUserByRefreshToken(refreshToken); + + if (user && user.token === refreshToken ) { + try { + await authService.extraMethods.deleteRefreshToken(refreshToken); + return controllerHelper.handleResultResponse(result, null, req.params, res, httpStatus.OK); + } catch (error) { + controllerHelper.handleErrorResponse(MODULE_NAME, rejectToken.name, error, res); + } + } else { + return controllerHelper.handleResultResponse(null, null, req.params, res, httpStatus.NOT_FOUND); + } +} + + module.exports = { login, register, regenerateToken, + rejectToken, MODULE_NAME } \ No newline at end of file diff --git a/modules/auth/auth.routes.js b/modules/auth/auth.routes.js index 0fdad85..cacf83e 100644 --- a/modules/auth/auth.routes.js +++ b/modules/auth/auth.routes.js @@ -33,4 +33,9 @@ routes.post('/token', authController.regenerateToken, ); +routes.post('/token/reject', + authController.rejectToken, +); + + module.exports = routes; \ No newline at end of file diff --git a/modules/auth/auth.service.js b/modules/auth/auth.service.js index 909626c..4572f4f 100644 --- a/modules/auth/auth.service.js +++ b/modules/auth/auth.service.js @@ -32,9 +32,14 @@ const extraMethods = { { token: newRefreshToken }, { where: { id: userId }} ); + }, + + deleteRefreshToken: async (userId, refreshToken) => { + return await models.User.update( + { token: null }, + { where: { id: userId } } + ); } - - } module.exports = {