From 777fd1e5b6aaf6f4c496a58301a2a1f171fd675b Mon Sep 17 00:00:00 2001 From: Christel Westerberg Date: Tue, 7 May 2024 12:10:25 +0200 Subject: [PATCH] fix: set cookie in header on rewrite --- app/[lang]/webview/my-pages/page.tsx | 18 ++++++++++++------ constants/routes/webviews.ts | 12 ++++++------ middlewares/webView.ts | 5 +++++ server/context.ts | 15 +++++++++++++++ 4 files changed, 38 insertions(+), 12 deletions(-) diff --git a/app/[lang]/webview/my-pages/page.tsx b/app/[lang]/webview/my-pages/page.tsx index 934320bb6..7374147df 100644 --- a/app/[lang]/webview/my-pages/page.tsx +++ b/app/[lang]/webview/my-pages/page.tsx @@ -10,8 +10,6 @@ import { serverClient } from "@/lib/trpc/server" import MaxWidth from "@/components/MaxWidth" import Content from "@/components/MyPages/AccountPage/Webview/Content" -import Link from "@/components/TempDesignSystem/Link" -import Title from "@/components/Title" import styles from "./page.module.css" @@ -39,6 +37,18 @@ export default async function MyPages({ return notFound() } + // Check if the access token is valid. If not, redirect to the refresh page. + await serverClient({ + onError(opts) { + const returnUrl = new URLSearchParams({ + returnurl: `${params.lang}/webview/${searchParams.uri}`, + }) + + const refreshUrl = `/${params.lang}/webview/refresh?${returnUrl.toString()}` + redirect(refreshUrl) + }, + }).user.get() + const accountPage = await serverClient({ onError() { const returnUrl = new URLSearchParams({ @@ -57,10 +67,6 @@ export default async function MyPages({ return ( -
- {_("Welcome")} - {link.title} -
) diff --git a/constants/routes/webviews.ts b/constants/routes/webviews.ts index f4ec8ef58..ed55a0b71 100644 --- a/constants/routes/webviews.ts +++ b/constants/routes/webviews.ts @@ -49,12 +49,12 @@ export const points = { /** @type {import('@/types/routes').LangRoute} */ export const programOverview = { - da: `/da/webview/ophold`, - de: `/de/webview/aufenthalte`, - en: `/en/webview/stays`, - fi: `/fi/webview/oleskeluni`, - no: `/no/webview/opphold`, - sv: `/sv/webview/vistelser`, + da: `/da/webview/about-scandic-friends`, + de: `/de/webview/about-scandic-friends`, + en: `/en/webview/about-scandic-friends`, + fi: `/fi/webview/about-scandic-friends`, + no: `/no/webview/om-scandic-friends`, + sv: `/sv/webview/om-scandic-friends`, } export const webviews = [ diff --git a/middlewares/webView.ts b/middlewares/webView.ts index 3db536475..5d0e6e135 100644 --- a/middlewares/webView.ts +++ b/middlewares/webView.ts @@ -1,3 +1,4 @@ +import { notFound } from "next/navigation" import { type NextMiddleware, NextResponse } from "next/server" import { findLang } from "@/constants/languages" @@ -36,6 +37,8 @@ export const middleware: NextMiddleware = async (request) => { nextUrl ) ) + } else { + return notFound() } } @@ -69,6 +72,7 @@ export const middleware: NextMiddleware = async (request) => { { headers: { "Set-Cookie": `webviewToken=${decryptedData}; Secure; HttpOnly; Path=/; SameSite=Strict;`, + Cookie: `webviewToken=${decryptedData}`, }, } ) @@ -81,6 +85,7 @@ export const middleware: NextMiddleware = async (request) => { { headers: { "Set-Cookie": `webviewToken=${decryptedData}; Secure; HttpOnly; Path=/; SameSite=Strict;`, + Cookie: `webviewToken=${decryptedData}`, }, } ) diff --git a/server/context.ts b/server/context.ts index c81fe1024..aebcd8e3e 100644 --- a/server/context.ts +++ b/server/context.ts @@ -33,6 +33,21 @@ export function createContextInner(opts: CreateContextOptions) { export function createContext() { const h = headers() + // const cookie = cookies() + // const webviewTokenCookie = cookie.get("webviewToken") + + // if (webviewTokenCookie) { + // // since the token exists, this is a subsequent visit + // // we're done, allow it + // return createContextInner({ + // session: { + // token: { access_token: webviewTokenCookie.value }, + // }, + // }) + // } + + // const session = await auth() + return createContextInner({ auth, lang: h.get("x-lang") as Lang,