WorkshopTasker/server/api/logout.ts

31 lines
879 B
TypeScript

import { defineEventHandler, getCookie, deleteCookie } from "h3";
import { isAuthorised } from "../middleware/auth";
import { database } from "../utils/database";
import { cookieSettings } from "../utils/rootUtils";
import { createError } from "#imports";
export default defineEventHandler(async (e) => {
const token = getCookie(e, "token");
if (token === undefined) {
throw createError({
statusCode: 401,
data: "You can't log out if you're already logged out (no session cookie)",
});
}
deleteCookie(e, "token", cookieSettings);
if (!await isAuthorised(token)) {
throw createError({
statusCode: 401,
message: "You can't log out if you're already logged out (session expired or never existed)",
});
}
database.query(
"DELETE FROM `sessions` WHERE `id` = ?",
[token],
);
return { message: "Logged out" };
});