From e9348c127b3ee10b99ebc7cd26bdcd01c11a27e9 Mon Sep 17 00:00:00 2001 From: diced Date: Thu, 5 Sep 2024 19:49:22 -0700 Subject: [PATCH] fix: remove session on logout --- src/server/routes/api/auth/logout.ts | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/src/server/routes/api/auth/logout.ts b/src/server/routes/api/auth/logout.ts index be2cfa37..3e31a2e0 100755 --- a/src/server/routes/api/auth/logout.ts +++ b/src/server/routes/api/auth/logout.ts @@ -1,3 +1,4 @@ +import { prisma } from '@/lib/db'; import { userMiddleware } from '@/server/middleware/user'; import { getSession } from '@/server/session'; import fastifyPlugin from 'fastify-plugin'; @@ -9,18 +10,22 @@ export type ApiLogoutResponse = { export const PATH = '/api/auth/logout'; export default fastifyPlugin( (server, _, done) => { - server.route<{ - Body: Body; - }>({ - url: PATH, - method: ['GET'], - preHandler: [userMiddleware], - handler: async (req, res) => { - const session = await getSession(req, res); - session.destroy(); + server.get(PATH, { preHandler: [userMiddleware] }, async (req, res) => { + const current = await getSession(req, res); - return res.send({ loggedOut: true }); - }, + await prisma.user.update({ + where: { + id: req.user.id, + }, + data: { + sessions: { + set: req.user.sessions.filter((session) => session !== current.sessionId), + }, + }, + }); + + current.destroy(); + return res.send({ loggedOut: true }); }); done();