diff --git a/Client/src/Components/NavBar/index.jsx b/Client/src/Components/NavBar/index.jsx index 2756f7ffd..57699c97c 100644 --- a/Client/src/Components/NavBar/index.jsx +++ b/Client/src/Components/NavBar/index.jsx @@ -99,9 +99,10 @@ function NavBar() { // Clear auth state dispatch(clearAuthState()); dispatch(clearUptimeMonitorState()); + // Make request to BE to remove JWT from user await axiosIntance.post( "/auth/logout", - {}, + { user: authState.user }, { headers: { Authorization: `Bearer ${authState.authToken}`, diff --git a/Server/controllers/authController.js b/Server/controllers/authController.js index 7597416ec..65c925561 100644 --- a/Server/controllers/authController.js +++ b/Server/controllers/authController.js @@ -163,6 +163,26 @@ const loginController = async (req, res, next) => { } }; +const logoutController = async (req, res, next) => { + try { + // Get user + const { user } = req.body; + const userToLogout = await req.db.getUserByEmail( + { body: { email: user.email } }, + res + ); + userToLogout.authToken = null; + await userToLogout.save(); + + return res + .status(200) + .json({ success: true, msg: successMessages.AUTH_LOGOUT_USER }); + } catch (error) { + error.service = SERVICE_NAME; + next(error); + } +}; + const userEditController = async (req, res, next) => { try { await editUserParamValidation.validateAsync(req.params); @@ -530,6 +550,7 @@ const getAllUsersController = async (req, res) => { module.exports = { registerController, loginController, + logoutController, userEditController, inviteController, inviteVerifyController, diff --git a/Server/routes/authRoute.js b/Server/routes/authRoute.js index b01e90294..224b4501f 100644 --- a/Server/routes/authRoute.js +++ b/Server/routes/authRoute.js @@ -9,6 +9,7 @@ const User = require("../models/user"); const { registerController, loginController, + logoutController, userEditController, recoveryRequestController, validateRecoveryTokenController, @@ -23,6 +24,7 @@ const { //Auth routes router.post("/register", upload.single("profileImage"), registerController); router.post("/login", loginController); +router.post("/logout", logoutController); router.put( "/user/:userId", upload.single("profileImage"), diff --git a/Server/utils/messages.js b/Server/utils/messages.js index 590dd4eb1..40d7205e5 100644 --- a/Server/utils/messages.js +++ b/Server/utils/messages.js @@ -56,6 +56,7 @@ const successMessages = { // Auth Controller AUTH_CREATE_USER: "User created successfully", AUTH_LOGIN_USER: "User logged in successfully", + AUTH_LOGOUT_USER: "User logged out successfully", AUTH_UPDATE_USER: "User updated successfully", AUTH_CREATE_RECOVERY_TOKEN: "Recovery token created successfully", AUTH_VERIFY_RECOVERY_TOKEN: "Recovery token verified successfully",