diff --git a/app/[lang]/(live)/(protected)/logout/route.ts b/app/[lang]/(live)/(protected)/logout/route.ts index 23ae2ffc0..2cf84728c 100644 --- a/app/[lang]/(live)/(protected)/logout/route.ts +++ b/app/[lang]/(live)/(protected)/logout/route.ts @@ -14,66 +14,46 @@ export async function GET( context: { params: { lang: Lang } } ) { let redirectHeaders: Headers | undefined = undefined - let redirectTo: string + let redirectTo: string = "" - const returnUrl = request.headers.get("x-returnurl") - - if (returnUrl) { - redirectTo = returnUrl - } else { - // Normal logout request from New web - redirectTo = - request.cookies.get("redirectTo")?.value || // Cookie gets set by authRequired middleware - request.nextUrl.searchParams.get("redirectTo") || - "/" - - // Make relative URL to absolute URL - if (redirectTo.startsWith("/")) { - if (!env.PUBLIC_URL) { - throw internalServerError("No value for env.PUBLIC_URL") - } - redirectTo = new URL(redirectTo, env.PUBLIC_URL).href + try { + // Initiate the seamless logout flow + let redirectUrlValue + switch (context.params.lang) { + case Lang.da: + redirectUrlValue = env.SEAMLESS_LOGOUT_DA + break + case Lang.de: + redirectUrlValue = env.SEAMLESS_LOGOUT_DE + break + case Lang.en: + redirectUrlValue = env.SEAMLESS_LOGOUT_EN + break + case Lang.fi: + redirectUrlValue = env.SEAMLESS_LOGOUT_FI + break + case Lang.no: + redirectUrlValue = env.SEAMLESS_LOGOUT_NO + break + case Lang.sv: + redirectUrlValue = env.SEAMLESS_LOGOUT_SV + break } - // Clean up cookie from authRequired middleware - redirectHeaders = new Headers() - redirectHeaders.append( - "set-cookie", - "redirectTo=; Expires=Thu, 01 Jan 1970 00:00:00 UTC; Path=/; HttpOnly; SameSite=Lax" - ) - - try { - // Initiate the seamless logout flow - let redirectUrlValue - switch (context.params.lang) { - case Lang.da: - redirectUrlValue = env.SEAMLESS_LOGOUT_DA - break - case Lang.de: - redirectUrlValue = env.SEAMLESS_LOGOUT_DE - break - case Lang.en: - redirectUrlValue = env.SEAMLESS_LOGOUT_EN - break - case Lang.fi: - redirectUrlValue = env.SEAMLESS_LOGOUT_FI - break - case Lang.no: - redirectUrlValue = env.SEAMLESS_LOGOUT_NO - break - case Lang.sv: - redirectUrlValue = env.SEAMLESS_LOGOUT_SV - break - } - const redirectUrl = new URL(redirectUrlValue) - redirectUrl.searchParams.set("returnurl", redirectTo) + const redirectUrl = new URL(redirectUrlValue) + if (request.nextUrl.searchParams.get("currentweb") != null) { + // Request coming from NEW web, redirect to current web logout redirectTo = redirectUrl.toString() - } catch (e) { - console.error( - "Unable to create URL for seamless logout, proceeding without it." - ) - console.error(e) + } else { + // Request coming from CURRENT web, redirect to current web start page + redirectTo = redirectUrl.origin } + } catch (e) { + console.error( + "Unable to create URL for seamless logout, proceeding without it." + ) + console.error(e) } + try { /** * Passing `redirect: false` to `signOut` will return a result object