logout.tsx (1147B)
1 import { useTokenFlushTrigger } from '@/components/contexts/TokenContext' 2 import { getAccessTokenCookieName, getRefreshTokenCookieName } from '@/lib/env' 3 import { deleteSession } from '@/lib/security/session' 4 import { authenticationFromCookies } from '@/lib/security/token' 5 import { GetServerSideProps } from 'next' 6 import { useRouter } from 'next/router' 7 import { useEffect } from 'react' 8 9 export const getServerSideProps: GetServerSideProps = async (context) => { 10 const token = await authenticationFromCookies(context.req.cookies) 11 if (token != null) { 12 if (token.tid != null) { 13 await deleteSession(token.tid) 14 } 15 16 context.res.setHeader('Set-Cookie', [ 17 `${getAccessTokenCookieName()}=; Path=/; HttpOnly; Expires=Thu, 01 Jan 1970 00:00:00 GMT`, 18 `${getRefreshTokenCookieName()}=; Path=/; HttpOnly; Expires=Thu, 01 Jan 1970 00:00:00 GMT`, 19 ]) 20 } 21 22 return { 23 props: {}, 24 } 25 } 26 27 export default function LogoutPage () { 28 const flushToken = useTokenFlushTrigger() 29 useEffect(() => { 30 flushToken() 31 }, []) 32 33 const router = useRouter() 34 useEffect(() => { 35 router.push('/') 36 }) 37 38 return ( 39 <></> 40 ) 41 }