Merged PR 2290: add guard rail to check for locale and ensure verify request is language spec...

add guard rail to check for locale and ensure verify request is language specific

Related work items: #22303
This commit is contained in:
Robert Bond
2026-05-05 08:25:17 +00:00
parent d2e88b57d8
commit 0ff2d69ba6
+43 -5
View File
@@ -37,12 +37,12 @@ const appendParamsAndPathToNewUrl = (fromUrl, toUrl) => {
return toUrlObj.toString();
};
const resolveRequestLocale = (req) => {
const locale =
req?.body?.locale || req?.query?.locale || req?.cookies?.pedw_locale;
// const resolveRequestLocale = (req) => {
// const locale =
// req?.body?.locale || req?.query?.locale || req?.cookies?.pedw_locale;
return locale === "cy" ? "cy" : "en";
};
// return locale === "cy" ? "cy" : "en";
// };
const resolveCrmLocale = async (email) => {
if (!email) return null;
@@ -94,6 +94,44 @@ const buildLocalizedVerificationUrl = ({ url, email, effectiveLocale }) => {
return appendParamsAndPathToNewUrl(url, newURL);
};
const getLocaleFromCallbackUrl = (callbackUrl) => {
if (!callbackUrl) return null;
try {
const parsed = new URL(callbackUrl);
const locale = parsed.searchParams.get("locale");
if (locale === "cy" || parsed.pathname.startsWith("/cy")) {
return "cy";
}
if (locale === "en") {
return "en";
}
return null;
} catch {
return null;
}
};
const resolveRequestLocale = (req) => {
const directLocale =
req?.body?.locale || req?.query?.locale || req?.cookies?.pedw_locale;
if (directLocale === "cy") return "cy";
if (directLocale === "en") return "en";
const callbackLocale =
getLocaleFromCallbackUrl(req?.body?.callbackUrl) ||
getLocaleFromCallbackUrl(req?.query?.callbackUrl) ||
getLocaleFromCallbackUrl(
req?.cookies?.["__Secure-next-auth.callback-url"]
);
return callbackLocale === "cy" ? "cy" : "en";
};
const authOptions = (req, res) => {
const requestLocale = resolveRequestLocale(req);