Files
web/app/[lang]/(live)/(protected)/logout/route.ts
2024-05-20 00:51:16 +02:00

41 lines
1.0 KiB
TypeScript

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.nextUrl.searchParams.get("redirectTo") ||
"/"
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()
}