fix(ui): field permissions not being correctly updated when locale changes (#7611)

Closes https://github.com/payloadcms/payload/issues/7262
This commit is contained in:
Paul
2024-08-09 18:39:14 -06:00
committed by GitHub
parent e225783d76
commit 4b2a9f75d0
2 changed files with 13 additions and 9 deletions

View File

@@ -31,7 +31,7 @@ type CreateAccessPromise = (args: {
export async function getEntityPolicies<T extends Args>(args: T): Promise<ReturnType<T>> {
const { id, type, entity, operations, req } = args
const { data, payload, user } = req
const { data, locale, payload, user } = req
const isLoggedIn = !!user
const policies = {
@@ -45,6 +45,8 @@ export async function getEntityPolicies<T extends Args>(args: T): Promise<Return
if (type === 'global') {
return payload.findGlobal({
slug: entity.slug,
fallbackLocale: null,
locale,
overrideAccess: true,
req,
})
@@ -55,7 +57,9 @@ export async function getEntityPolicies<T extends Args>(args: T): Promise<Return
const paginatedRes = await payload.find({
collection: entity.slug,
depth: 0,
fallbackLocale: null,
limit: 1,
locale,
overrideAccess: true,
pagination: false,
req,
@@ -79,6 +83,8 @@ export async function getEntityPolicies<T extends Args>(args: T): Promise<Return
id,
collection: entity.slug,
depth: 0,
fallbackLocale: null,
locale,
overrideAccess: true,
req,
})

View File

@@ -438,8 +438,11 @@ const DocumentInfo: React.FC<
serverURL,
signal: abortController.signal,
})
const data = reduceFieldsToValues(result, true)
setData(data)
if (localeChanged) void getDocPermissions(data)
setData(reduceFieldsToValues(result, true))
setInitialState(result)
} catch (err) {
if (!abortController.signal.aborted) {
@@ -474,6 +477,7 @@ const DocumentInfo: React.FC<
onLoadError,
initialDataFromProps,
initialStateFromProps,
getDocPermissions,
])
useEffect(() => {
@@ -494,13 +498,8 @@ const DocumentInfo: React.FC<
}, [collectionConfig, data, dateFormat, i18n, id, globalConfig])
useEffect(() => {
const localeChanged = locale !== prevLocalePermissions.current
if (data && (collectionSlug || globalSlug)) {
if (localeChanged) {
prevLocalePermissions.current = locale
void getDocPermissions(data)
} else if (
if (
hasInitializedDocPermissions.current === false &&
(!docPermissions ||
hasSavePermission === undefined ||
@@ -521,7 +520,6 @@ const DocumentInfo: React.FC<
collectionSlug,
globalSlug,
data,
locale,
docPermissions,
hasSavePermission,
hasPublishPermission,