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:
@@ -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,
|
||||
})
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user