mirror of
https://github.com/zitadel/zitadel.git
synced 2025-08-25 08:38:02 +00:00
improve language handling
This commit is contained in:
@@ -1,30 +0,0 @@
|
||||
import { getAllSessions } from "@/lib/cookies";
|
||||
import { listSessions } from "@/lib/zitadel";
|
||||
import { Session } from "@zitadel/proto/zitadel/session/v2/session_pb";
|
||||
import { NextRequest, NextResponse } from "next/server";
|
||||
|
||||
async function loadSessions(ids: string[]): Promise<Session[]> {
|
||||
const response = await listSessions(
|
||||
ids.filter((id: string | undefined) => !!id),
|
||||
);
|
||||
|
||||
return response?.sessions ?? [];
|
||||
}
|
||||
|
||||
export async function GET(request: NextRequest) {
|
||||
const sessionCookies = await getAllSessions();
|
||||
const ids = sessionCookies.map((s) => s.id);
|
||||
let sessions: Session[] = [];
|
||||
if (ids && ids.length) {
|
||||
sessions = await loadSessions(ids);
|
||||
}
|
||||
|
||||
const responseHeaders = new Headers();
|
||||
responseHeaders.set("Access-Control-Allow-Origin", "*");
|
||||
responseHeaders.set("Access-Control-Allow-Headers", "*");
|
||||
|
||||
return NextResponse.json(
|
||||
{ sessions },
|
||||
{ status: 200, headers: responseHeaders },
|
||||
);
|
||||
}
|
@@ -1,12 +1,28 @@
|
||||
import { LANGUAGE_COOKIE_NAME } from "@/lib/i18n";
|
||||
import { LANGS, LANGUAGE_COOKIE_NAME, LANGUAGE_HEADER_NAME } from "@/lib/i18n";
|
||||
import deepmerge from "deepmerge";
|
||||
import { getRequestConfig } from "next-intl/server";
|
||||
import { cookies } from "next/headers";
|
||||
import { cookies, headers } from "next/headers";
|
||||
|
||||
export default getRequestConfig(async () => {
|
||||
const fallback = "en";
|
||||
const cookiesList = await cookies();
|
||||
const locale: string = cookiesList.get(LANGUAGE_COOKIE_NAME)?.value ?? "en";
|
||||
|
||||
let locale: string = fallback;
|
||||
|
||||
const languageHeader = await (await headers()).get(LANGUAGE_HEADER_NAME);
|
||||
if (languageHeader) {
|
||||
const headerLocale = languageHeader.split(",")[0].split("-")[0]; // Extract the language code
|
||||
if (LANGS.map((l) => l.code).includes(headerLocale)) {
|
||||
locale = headerLocale;
|
||||
}
|
||||
}
|
||||
|
||||
const languageCookie = cookiesList?.get(LANGUAGE_COOKIE_NAME);
|
||||
if (languageCookie && languageCookie.value) {
|
||||
if (LANGS.map((l) => l.code).includes(languageCookie.value)) {
|
||||
locale = languageCookie.value;
|
||||
}
|
||||
}
|
||||
|
||||
const userMessages = (await import(`../../locales/${locale}.json`)).default;
|
||||
const fallbackMessages = (await import(`../../locales/${fallback}.json`))
|
||||
|
@@ -23,3 +23,4 @@ export const LANGS: Lang[] = [
|
||||
];
|
||||
|
||||
export const LANGUAGE_COOKIE_NAME = "NEXT_LOCALE";
|
||||
export const LANGUAGE_HEADER_NAME = "accept-language";
|
||||
|
Reference in New Issue
Block a user