feat(lang-redirect): redirect to correct url, not netlify internal url * feat(lang-redirect): redirect to correct url, not netlify internal url Approved-by: Joakim Jäderberg
29 lines
851 B
TypeScript
29 lines
851 B
TypeScript
import { type NextMiddleware, NextResponse } from "next/server"
|
|
|
|
import { Lang } from "@scandic-hotels/common/constants/language"
|
|
|
|
import { getPublicNextURL } from "@/server/utils"
|
|
|
|
import { getDefaultRequestHeaders } from "./utils"
|
|
|
|
import type { MiddlewareMatcher } from "@/types/middleware"
|
|
|
|
export const middleware: NextMiddleware = (request) => {
|
|
const headers = getDefaultRequestHeaders(request)
|
|
const preferredLang = request.cookies.get("preferredLang")?.value ?? Lang.en
|
|
|
|
// Set x-lang header
|
|
headers.set("x-lang", preferredLang)
|
|
|
|
// Redirect to new URL if no lang in URL
|
|
const newUrl = new URL(`/${preferredLang}`, getPublicNextURL(request))
|
|
return NextResponse.redirect(newUrl, {
|
|
headers,
|
|
})
|
|
}
|
|
|
|
export const matcher: MiddlewareMatcher = (request) => {
|
|
// if ULR is empty
|
|
return request.nextUrl.pathname.length <= 1
|
|
}
|