import { NextRequest, NextResponse } from 'next/server' const PUBLIC_FILE = /.(.*)$/ export function middleware(req: NextRequest) { const pathname = req.nextUrl.pathname const signedIn = req.cookies['drift-token'] const getURL = (pageName: string) => new URL(`/${pageName}`, req.url).href const isPageRequest = !PUBLIC_FILE.test(req.nextUrl.pathname) && !req.nextUrl.pathname.startsWith('/api') && // header added when next/link pre-fetches a route !req.headers.get('x-middleware-preflight') if (isPageRequest) { if (pathname === '/signout') { // If you're signed in we remove the cookie and redirect to the home page // If you're not signed in we redirect to the home page if (signedIn) { const resp = NextResponse.redirect(getURL('')); resp.clearCookie('drift-token'); resp.clearCookie('drift-userid'); return resp } } else if (pathname === '/') { if (signedIn) { return NextResponse.redirect(getURL('new')) } // If you're not signed in we redirect the new post page to the home page } else if (pathname === '/new') { if (!signedIn) { return NextResponse.redirect(getURL('signin')) } // If you're signed in we redirect the sign in page to the home page (which is the new page) } else if (pathname === '/signin' || pathname === '/signup') { if (signedIn) { return NextResponse.redirect(getURL('')) } } } return NextResponse.next() }