logout functionality and documentation

This commit is contained in:
Isuru Bimsara
2026-08-21 14:37:24 +05:30
parent 2a35d86ebf
commit 5d29a8f78f
4 changed files with 106 additions and 20 deletions
+52 -7
View File
@@ -377,12 +377,57 @@ exports.resetPassword = async (req, res) => {
// Logout: Clear the JWT cookie
exports.logout = (req, res) => {
res.clearCookie("access_token", {
httpOnly: true,
secure: process.env.NODE_ENV === "production",
sameSite: process.env.NODE_ENV === "production" ? "None" : "Lax",
});
exports.logout = async (req, res) => {
try {
// 1. Get refresh token from cookie
const refreshToken = req.cookies?.refresh_token;
res.json({ success: true, message: "Logged out successfully" });
// 2. If refresh token exists, find its session
if (refreshToken) {
const session = validateRefreshSession(refreshToken);
// 3. Delete refresh session from server RAM
if (session) {
deleteRefreshSession(session.sessionId);
console.log(
`Refresh session deleted: ${session.sessionId}`
);
}
}
// 4. Clear access token cookie
res.clearCookie("access_token", {
httpOnly: true,
secure: process.env.NODE_ENV === "production",
sameSite:
process.env.NODE_ENV === "production"
? "None"
: "Lax",
});
// 5. Clear refresh token cookie
res.clearCookie("refresh_token", {
httpOnly: true,
secure: process.env.NODE_ENV === "production",
sameSite:
process.env.NODE_ENV === "production"
? "None"
: "Lax",
});
// 6. Send response
return res.status(200).json({
success: true,
message: "Logged out successfully",
});
} catch (error) {
console.error("LOGOUT ERROR:", error);
return res.status(500).json({
success: false,
message: "Failed to logout",
});
}
};