🐛 Include locale when creating guest user

This commit is contained in:
Luke Vella 2024-09-12 09:28:52 +01:00
parent dc8de27682
commit d1194400b2
No known key found for this signature in database
GPG key ID: 469CAD687F0D784C
2 changed files with 17 additions and 6 deletions

View file

@ -42,7 +42,15 @@ export async function resetUser(res: NextResponse) {
await setCookie(res, jwt);
}
export async function initGuest(req: NextRequest, res: NextResponse) {
export async function initGuest(
req: NextRequest,
res: NextResponse,
{
locale,
}: {
locale: string;
},
) {
const { name } = getCookieSettings();
if (req.cookies.has(name)) {
@ -53,6 +61,7 @@ export async function initGuest(req: NextRequest, res: NextResponse) {
const jwt: JWT = {
sub: `user-${randomid()}`,
email: null,
locale,
};
await setCookie(res, jwt);

View file

@ -23,23 +23,25 @@ export const middleware = withAuth(
}
// Check if locale is specified in cookie
const preferredLocale = req.nextauth.token?.locale;
if (preferredLocale && supportedLocales.includes(preferredLocale)) {
newUrl.pathname = `/${preferredLocale}${newUrl.pathname}`;
let locale = req.nextauth.token?.locale;
if (locale && supportedLocales.includes(locale)) {
newUrl.pathname = `/${locale}${newUrl.pathname}`;
} else {
// Check if locale is specified in header
const acceptLanguageHeader = headers.get("accept-language");
const localeFromHeader = acceptLanguageHeader
? languageParser.pick(supportedLocales, acceptLanguageHeader)
: null;
const locale = localeFromHeader ?? "en";
locale = localeFromHeader ?? "en";
newUrl.pathname = `/${locale}${newUrl.pathname}`;
}
const res = NextResponse.rewrite(newUrl);
await initGuest(req, res);
await initGuest(req, res, {
locale,
});
return res;
},