fix(next): prevent locale upsert when not authenticated (#13621)
### What? When `?locale=` is present in an admin panel URL and that admin panel URL is visited in an unauthenticated browser, a runtime error is thrown. ### Why? `upsertPreferences` relies on `req.user` to successfully create a new `payload-preferences` document. When an unauthenticated user visits a URL with a `locale` parameter, `upsertPreferences` is called but `req.user` is not available. ### How? Prevent `upsertPreferences` from being called when `req.user` is not available. Fixes #13581 Co-authored-by: Patrik Kozak <35232443+PatrikKozak@users.noreply.github.com>
This commit is contained in:
@@ -13,7 +13,7 @@ export async function getRequestLocale({ req }: GetRequestLocalesArgs): Promise<
|
|||||||
if (req.payload.config.localization) {
|
if (req.payload.config.localization) {
|
||||||
const localeFromParams = req.query.locale as string | undefined
|
const localeFromParams = req.query.locale as string | undefined
|
||||||
|
|
||||||
if (localeFromParams) {
|
if (req.user && localeFromParams) {
|
||||||
await upsertPreferences<Locale['code']>({ key: 'locale', req, value: localeFromParams })
|
await upsertPreferences<Locale['code']>({ key: 'locale', req, value: localeFromParams })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user