30 lines
836 B
JavaScript
30 lines
836 B
JavaScript
const express = require("express");
|
|
const router = express.Router();
|
|
const pool = require("../../db");
|
|
const { strictInput } = require("../../middleware/strict_input");
|
|
|
|
async function logout(req, res) {
|
|
try {
|
|
if (req.user.session_id) {
|
|
await pool.query(
|
|
"DELETE FROM sessions WHERE id = $1 AND user_id = $2",
|
|
[req.user.session_id, req.user.id],
|
|
);
|
|
}
|
|
res.clearCookie("fc_session_token", {
|
|
httpOnly: true,
|
|
secure: true,
|
|
sameSite: "Strict",
|
|
path: "/",
|
|
});
|
|
return res.status(200).json({ message: "Logged out" });
|
|
} catch (err) {
|
|
console.error("logout failed", { message: err.message, code: err.code });
|
|
return res.status(500).send("Logout failed, request could not be completed");
|
|
}
|
|
}
|
|
|
|
router.post("/", strictInput(), logout);
|
|
|
|
module.exports = router;
|