import { NextRequest, NextResponse } from "next/server" import { AuthError } from "next-auth" import { badRequest } from "@/server/errors/next" import { signOut } from "@/auth" export async function GET(request: NextRequest) { const returnUrl = request.headers.get("x-returnurl") // If all else fails, always redirect to startpage const redirectTo = returnUrl || request.headers.get("x-redirect-to") || request.nextUrl.searchParams.get("redirectTo") || request.headers.get("Referer") || "/" try { /** * Passing `redirect: false` to `signOut` will return a result object * instead of automatically redirecting inside of `signOut`. * https://github.com/nextauthjs/next-auth/blob/3c035ec/packages/next-auth/src/lib/actions.ts#L104 */ const obj = await signOut({ redirectTo, redirect: false, }) if (obj) { return NextResponse.redirect(obj.redirect) } } catch (error) { if (error instanceof AuthError) { console.log({ signOutAuthError: error }) } else { console.log({ signOutError: error }) } } return badRequest() }