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>> {
|
export async function getEntityPolicies<T extends Args>(args: T): Promise<ReturnType<T>> {
|
||||||
const { id, type, entity, operations, req } = args
|
const { id, type, entity, operations, req } = args
|
||||||
const { data, payload, user } = req
|
const { data, locale, payload, user } = req
|
||||||
const isLoggedIn = !!user
|
const isLoggedIn = !!user
|
||||||
|
|
||||||
const policies = {
|
const policies = {
|
||||||
@@ -45,6 +45,8 @@ export async function getEntityPolicies<T extends Args>(args: T): Promise<Return
|
|||||||
if (type === 'global') {
|
if (type === 'global') {
|
||||||
return payload.findGlobal({
|
return payload.findGlobal({
|
||||||
slug: entity.slug,
|
slug: entity.slug,
|
||||||
|
fallbackLocale: null,
|
||||||
|
locale,
|
||||||
overrideAccess: true,
|
overrideAccess: true,
|
||||||
req,
|
req,
|
||||||
})
|
})
|
||||||
@@ -55,7 +57,9 @@ export async function getEntityPolicies<T extends Args>(args: T): Promise<Return
|
|||||||
const paginatedRes = await payload.find({
|
const paginatedRes = await payload.find({
|
||||||
collection: entity.slug,
|
collection: entity.slug,
|
||||||
depth: 0,
|
depth: 0,
|
||||||
|
fallbackLocale: null,
|
||||||
limit: 1,
|
limit: 1,
|
||||||
|
locale,
|
||||||
overrideAccess: true,
|
overrideAccess: true,
|
||||||
pagination: false,
|
pagination: false,
|
||||||
req,
|
req,
|
||||||
@@ -79,6 +83,8 @@ export async function getEntityPolicies<T extends Args>(args: T): Promise<Return
|
|||||||
id,
|
id,
|
||||||
collection: entity.slug,
|
collection: entity.slug,
|
||||||
depth: 0,
|
depth: 0,
|
||||||
|
fallbackLocale: null,
|
||||||
|
locale,
|
||||||
overrideAccess: true,
|
overrideAccess: true,
|
||||||
req,
|
req,
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -438,8 +438,11 @@ const DocumentInfo: React.FC<
|
|||||||
serverURL,
|
serverURL,
|
||||||
signal: abortController.signal,
|
signal: abortController.signal,
|
||||||
})
|
})
|
||||||
|
const data = reduceFieldsToValues(result, true)
|
||||||
|
setData(data)
|
||||||
|
|
||||||
|
if (localeChanged) void getDocPermissions(data)
|
||||||
|
|
||||||
setData(reduceFieldsToValues(result, true))
|
|
||||||
setInitialState(result)
|
setInitialState(result)
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
if (!abortController.signal.aborted) {
|
if (!abortController.signal.aborted) {
|
||||||
@@ -474,6 +477,7 @@ const DocumentInfo: React.FC<
|
|||||||
onLoadError,
|
onLoadError,
|
||||||
initialDataFromProps,
|
initialDataFromProps,
|
||||||
initialStateFromProps,
|
initialStateFromProps,
|
||||||
|
getDocPermissions,
|
||||||
])
|
])
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@@ -494,13 +498,8 @@ const DocumentInfo: React.FC<
|
|||||||
}, [collectionConfig, data, dateFormat, i18n, id, globalConfig])
|
}, [collectionConfig, data, dateFormat, i18n, id, globalConfig])
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const localeChanged = locale !== prevLocalePermissions.current
|
|
||||||
|
|
||||||
if (data && (collectionSlug || globalSlug)) {
|
if (data && (collectionSlug || globalSlug)) {
|
||||||
if (localeChanged) {
|
if (
|
||||||
prevLocalePermissions.current = locale
|
|
||||||
void getDocPermissions(data)
|
|
||||||
} else if (
|
|
||||||
hasInitializedDocPermissions.current === false &&
|
hasInitializedDocPermissions.current === false &&
|
||||||
(!docPermissions ||
|
(!docPermissions ||
|
||||||
hasSavePermission === undefined ||
|
hasSavePermission === undefined ||
|
||||||
@@ -521,7 +520,6 @@ const DocumentInfo: React.FC<
|
|||||||
collectionSlug,
|
collectionSlug,
|
||||||
globalSlug,
|
globalSlug,
|
||||||
data,
|
data,
|
||||||
locale,
|
|
||||||
docPermissions,
|
docPermissions,
|
||||||
hasSavePermission,
|
hasSavePermission,
|
||||||
hasPublishPermission,
|
hasPublishPermission,
|
||||||
|
|||||||
Reference in New Issue
Block a user