32 lines
722 B
TypeScript
32 lines
722 B
TypeScript
import { IdentityContext } from '@app/server/identity';
|
|
import { prisma } from '@app/server/prisma/client';
|
|
|
|
export async function LogoutResolver(
|
|
_: any,
|
|
__: any,
|
|
{ req, res, identity }: IdentityContext
|
|
): Promise<void> {
|
|
const cookie: { jwt?: string | null } = req.cookies;
|
|
if (cookie == null || cookie.jwt == null) return;
|
|
|
|
const refreshToken = cookie.jwt;
|
|
|
|
const user = await prisma.user.findUnique({
|
|
where: { refreshToken },
|
|
select: { id: true }
|
|
});
|
|
|
|
if (user == null) {
|
|
res.clearCookie('jwt', { httpOnly: true });
|
|
return;
|
|
}
|
|
|
|
await prisma.user.update({
|
|
where: {
|
|
id: user.id
|
|
},
|
|
data: { refreshToken: null }
|
|
});
|
|
|
|
res.clearCookie('jwt', { httpOnly: true });
|
|
}
|