feat: logout endpoint

This commit is contained in:
Michael Zetterberg
2024-04-17 09:30:04 +02:00
parent 68beec3ac4
commit ca7afd3eb8

View File

@@ -0,0 +1,41 @@
import { NextRequest, NextResponse } from "next/server"
import { AuthError } from "next-auth"
import { signOut } from "@/auth"
import { badRequest } from "@/server/errors/next"
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()
}