Merged in feat/sw-3197-add-url-to-path (pull request #2577)
feat(SW-3197): Add required middleware and url to path in partner-sas * Add url to path and required middleware Approved-by: Matilda Landström
This commit is contained in:
16
apps/partner-sas/middlewares/invalidUrl.ts
Normal file
16
apps/partner-sas/middlewares/invalidUrl.ts
Normal file
@@ -0,0 +1,16 @@
|
||||
import { type NextMiddleware, NextResponse } from "next/server"
|
||||
|
||||
import { getDefaultRequestHeaders } from "./utils"
|
||||
|
||||
import type { MiddlewareMatcher } from "./types"
|
||||
|
||||
export const middleware: NextMiddleware = async (request) => {
|
||||
const headers = getDefaultRequestHeaders(request)
|
||||
return NextResponse.next({
|
||||
headers,
|
||||
})
|
||||
}
|
||||
|
||||
export const matcher: MiddlewareMatcher = (request) => {
|
||||
return request.nextUrl.pathname.includes("*")
|
||||
}
|
||||
25
apps/partner-sas/middlewares/trailingSlash.ts
Normal file
25
apps/partner-sas/middlewares/trailingSlash.ts
Normal file
@@ -0,0 +1,25 @@
|
||||
import { type NextMiddleware, NextResponse } from "next/server"
|
||||
|
||||
import { getPublicNextURL } from "@/server/utils"
|
||||
|
||||
import { getDefaultRequestHeaders } from "./utils"
|
||||
|
||||
import type { MiddlewareMatcher } from "./types"
|
||||
|
||||
export const middleware: NextMiddleware = async (request) => {
|
||||
const headers = getDefaultRequestHeaders(request)
|
||||
|
||||
const newUrl = new URL(
|
||||
request.nextUrl.pathname.slice(0, -1),
|
||||
getPublicNextURL(request)
|
||||
)
|
||||
|
||||
return NextResponse.redirect(newUrl, {
|
||||
headers,
|
||||
status: 308,
|
||||
})
|
||||
}
|
||||
|
||||
export const matcher: MiddlewareMatcher = (request) => {
|
||||
return request.nextUrl.pathname.endsWith("/")
|
||||
}
|
||||
3
apps/partner-sas/middlewares/types.ts
Normal file
3
apps/partner-sas/middlewares/types.ts
Normal file
@@ -0,0 +1,3 @@
|
||||
import type { NextRequest } from "next/server"
|
||||
|
||||
export type MiddlewareMatcher = (request: NextRequest) => boolean
|
||||
22
apps/partner-sas/middlewares/utils.ts
Normal file
22
apps/partner-sas/middlewares/utils.ts
Normal file
@@ -0,0 +1,22 @@
|
||||
import { findLang } from "@scandic-hotels/common/utils/languages"
|
||||
import { removeTrailingSlash } from "@scandic-hotels/common/utils/url"
|
||||
|
||||
import { getPublicNextURL } from "@/server/utils"
|
||||
|
||||
import type { NextRequest } from "next/server"
|
||||
|
||||
export function getDefaultRequestHeaders(request: NextRequest) {
|
||||
const lang = findLang(request.nextUrl.pathname)!
|
||||
const nextUrlPublic = getPublicNextURL(request)
|
||||
const headers = new Headers(request.headers)
|
||||
headers.set("x-lang", lang)
|
||||
headers.set(
|
||||
"x-pathname",
|
||||
removeTrailingSlash(
|
||||
request.nextUrl.pathname.replace(`/${lang}`, "").replace(`/webview`, "")
|
||||
)
|
||||
)
|
||||
headers.set("x-url", removeTrailingSlash(nextUrlPublic.href))
|
||||
|
||||
return headers
|
||||
}
|
||||
Reference in New Issue
Block a user