Merged in fix/headers-for-errors (pull request #466)
fix: send headers to error rewrites Approved-by: Arvid Norlin
This commit is contained in:
@@ -1,11 +1,5 @@
|
|||||||
import { getIntl } from "@/i18n"
|
import NotFound from "@/components/Current/NotFound"
|
||||||
|
|
||||||
export default async function NotFound() {
|
export default function NotFoundPage() {
|
||||||
const { formatMessage } = await getIntl()
|
return <NotFound />
|
||||||
return (
|
|
||||||
<main>
|
|
||||||
<h1>{formatMessage({ id: "Not found" })}</h1>
|
|
||||||
<p>{formatMessage({ id: "Could not find requested resource" })}</p>
|
|
||||||
</main>
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,18 +1,21 @@
|
|||||||
import { NextMiddleware, NextResponse } from "next/server"
|
import { NextMiddleware, NextResponse } from "next/server"
|
||||||
|
|
||||||
import { Lang } from "./constants/languages"
|
import { Lang } from "@/constants/languages"
|
||||||
import * as authRequired from "./middlewares/authRequired"
|
|
||||||
import * as bookingFlow from "./middlewares/bookingFlow"
|
import * as authRequired from "@/middlewares/authRequired"
|
||||||
import * as cmsContent from "./middlewares/cmsContent"
|
import * as bookingFlow from "@/middlewares/bookingFlow"
|
||||||
import * as currentWebLogin from "./middlewares/currentWebLogin"
|
import * as cmsContent from "@/middlewares/cmsContent"
|
||||||
import * as currentWebLoginEmail from "./middlewares/currentWebLoginEmail"
|
import * as currentWebLogin from "@/middlewares/currentWebLogin"
|
||||||
import * as currentWebLogout from "./middlewares/currentWebLogout"
|
import * as currentWebLoginEmail from "@/middlewares/currentWebLoginEmail"
|
||||||
import * as handleAuth from "./middlewares/handleAuth"
|
import * as currentWebLogout from "@/middlewares/currentWebLogout"
|
||||||
import * as myPages from "./middlewares/myPages"
|
import * as handleAuth from "@/middlewares/handleAuth"
|
||||||
import * as webView from "./middlewares/webView"
|
import * as myPages from "@/middlewares/myPages"
|
||||||
import { findLang } from "./utils/languages"
|
import { getDefaultRequestHeaders } from "@/middlewares/utils"
|
||||||
|
import * as webView from "@/middlewares/webView"
|
||||||
|
import { findLang } from "@/utils/languages"
|
||||||
|
|
||||||
export const middleware: NextMiddleware = async (request, event) => {
|
export const middleware: NextMiddleware = async (request, event) => {
|
||||||
|
const headers = getDefaultRequestHeaders(request)
|
||||||
const lang = findLang(request.nextUrl.pathname)
|
const lang = findLang(request.nextUrl.pathname)
|
||||||
if (!lang) {
|
if (!lang) {
|
||||||
// Lang is required for all our middleware.
|
// Lang is required for all our middleware.
|
||||||
@@ -21,9 +24,13 @@ export const middleware: NextMiddleware = async (request, event) => {
|
|||||||
// which we do not want. We can move to that once all Current stuff is gone.
|
// which we do not want. We can move to that once all Current stuff is gone.
|
||||||
|
|
||||||
// Default to English if no lang is found.
|
// Default to English if no lang is found.
|
||||||
|
headers.set("x-lang", Lang.en)
|
||||||
return NextResponse.rewrite(
|
return NextResponse.rewrite(
|
||||||
new URL(`/${Lang.en}/middleware-error/404`, request.nextUrl),
|
new URL(`/${Lang.en}/middleware-error/404`, request.nextUrl),
|
||||||
{
|
{
|
||||||
|
request: {
|
||||||
|
headers,
|
||||||
|
},
|
||||||
status: 404,
|
status: 404,
|
||||||
statusText: "Not found",
|
statusText: "Not found",
|
||||||
}
|
}
|
||||||
@@ -64,6 +71,9 @@ export const middleware: NextMiddleware = async (request, event) => {
|
|||||||
return NextResponse.rewrite(
|
return NextResponse.rewrite(
|
||||||
new URL(`/${lang}/middleware-error/${e.status}`, request.nextUrl),
|
new URL(`/${lang}/middleware-error/${e.status}`, request.nextUrl),
|
||||||
{
|
{
|
||||||
|
request: {
|
||||||
|
headers,
|
||||||
|
},
|
||||||
status: e.status,
|
status: e.status,
|
||||||
statusText: e.statusText,
|
statusText: e.statusText,
|
||||||
}
|
}
|
||||||
@@ -75,6 +85,9 @@ export const middleware: NextMiddleware = async (request, event) => {
|
|||||||
return NextResponse.rewrite(
|
return NextResponse.rewrite(
|
||||||
new URL(`/${lang}/middleware-error/500`, request.nextUrl),
|
new URL(`/${lang}/middleware-error/500`, request.nextUrl),
|
||||||
{
|
{
|
||||||
|
request: {
|
||||||
|
headers,
|
||||||
|
},
|
||||||
status: 500,
|
status: 500,
|
||||||
statusText: "Internal Server Error",
|
statusText: "Internal Server Error",
|
||||||
}
|
}
|
||||||
@@ -82,7 +95,11 @@ export const middleware: NextMiddleware = async (request, event) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Follow through with normal App router rules.
|
// Follow through with normal App router rules.
|
||||||
return NextResponse.next()
|
return NextResponse.next({
|
||||||
|
request: {
|
||||||
|
headers,
|
||||||
|
},
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// See "Matching Paths" below to learn more
|
// See "Matching Paths" below to learn more
|
||||||
|
|||||||
@@ -38,7 +38,12 @@ export const middleware: NextMiddleware = async (request) => {
|
|||||||
if (isCurrent) {
|
if (isCurrent) {
|
||||||
searchParams.set("uri", pathNameWithoutLang.replace("/preview", ""))
|
searchParams.set("uri", pathNameWithoutLang.replace("/preview", ""))
|
||||||
return NextResponse.rewrite(
|
return NextResponse.rewrite(
|
||||||
new URL(`/${lang}/preview-current?${searchParams.toString()}`, nextUrl)
|
new URL(`/${lang}/preview-current?${searchParams.toString()}`, nextUrl),
|
||||||
|
{
|
||||||
|
request: {
|
||||||
|
headers,
|
||||||
|
},
|
||||||
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -55,6 +55,9 @@ export const middleware: NextMiddleware = async (request) => {
|
|||||||
headers: {
|
headers: {
|
||||||
"Set-Cookie": `webviewToken=0; Max-Age=0; Secure; HttpOnly; Path=/; SameSite=Strict;`,
|
"Set-Cookie": `webviewToken=0; Max-Age=0; Secure; HttpOnly; Path=/; SameSite=Strict;`,
|
||||||
},
|
},
|
||||||
|
request: {
|
||||||
|
headers,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,17 +40,7 @@ export const { createCallerFactory, mergeRouters, router } = t
|
|||||||
export const publicProcedure = t.procedure
|
export const publicProcedure = t.procedure
|
||||||
export const contentstackBaseProcedure = t.procedure.use(async function (opts) {
|
export const contentstackBaseProcedure = t.procedure.use(async function (opts) {
|
||||||
if (!opts.ctx.lang) {
|
if (!opts.ctx.lang) {
|
||||||
const input = await opts.getRawInput()
|
throw badRequestError("Missing Lang in tRPC context")
|
||||||
|
|
||||||
const parsedInput = langInput.safeParse(input)
|
|
||||||
if (!parsedInput.success) {
|
|
||||||
throw badRequestError("Missing Lang in tRPC context")
|
|
||||||
}
|
|
||||||
return opts.next({
|
|
||||||
ctx: {
|
|
||||||
lang: parsedInput.data.lang,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return opts.next({
|
return opts.next({
|
||||||
|
|||||||
Reference in New Issue
Block a user