chore: initial project import
Some checks failed
CI - Production Readiness / Verify (push) Has been cancelled
Some checks failed
CI - Production Readiness / Verify (push) Has been cancelled
This commit is contained in:
28
app/locale/route.ts
Normal file
28
app/locale/route.ts
Normal file
@ -0,0 +1,28 @@
|
||||
import { NextRequest, NextResponse } from "next/server";
|
||||
|
||||
import { DEFAULT_LOCALE, isLocale, LOCALE_COOKIE } from "@/lib/i18n";
|
||||
|
||||
function sanitizeLocale(raw: string | null) {
|
||||
if (isLocale(raw)) {
|
||||
return raw;
|
||||
}
|
||||
|
||||
return DEFAULT_LOCALE;
|
||||
}
|
||||
|
||||
export async function GET(request: NextRequest) {
|
||||
const rawTo = request.nextUrl.searchParams.get("to");
|
||||
const nextLocale = sanitizeLocale(rawTo);
|
||||
const back = request.headers.get("referer") || "/";
|
||||
const destination = new URL(back, request.url);
|
||||
|
||||
const response = NextResponse.redirect(destination);
|
||||
response.cookies.set(LOCALE_COOKIE, nextLocale, {
|
||||
path: "/",
|
||||
secure: process.env.NODE_ENV === "production",
|
||||
maxAge: 365 * 24 * 60 * 60,
|
||||
sameSite: "lax"
|
||||
});
|
||||
|
||||
return response;
|
||||
}
|
||||
Reference in New Issue
Block a user