From 8d643fb29d3604b78f6cb46582720dde2a46affb Mon Sep 17 00:00:00 2001 From: Jarrod Flesch Date: Tue, 20 Dec 2022 09:13:19 -0500 Subject: [PATCH] feat: adds doc permissions to account view --- .../utilities/DocumentInfo/index.tsx | 2 +- src/admin/components/views/Account/index.tsx | 33 ++++++++++--------- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/src/admin/components/utilities/DocumentInfo/index.tsx b/src/admin/components/utilities/DocumentInfo/index.tsx index f842c6b51b..b170b67b22 100644 --- a/src/admin/components/utilities/DocumentInfo/index.tsx +++ b/src/admin/components/utilities/DocumentInfo/index.tsx @@ -188,7 +188,7 @@ export const DocumentInfoProvider: React.FC = ({ const json = await res.json(); setDocPermissions(json); } else { - // fallback to permissions from the collection + // fallback to permissions from the entity type // (i.e. create has no id) setDocPermissions(permissions[pluralType][slug]); } diff --git a/src/admin/components/views/Account/index.tsx b/src/admin/components/views/Account/index.tsx index 4a012b6a7a..2f12666525 100644 --- a/src/admin/components/views/Account/index.tsx +++ b/src/admin/components/views/Account/index.tsx @@ -18,9 +18,9 @@ const AccountView: React.FC = () => { const { state: locationState } = useLocation<{ data: unknown }>(); const locale = useLocale(); const { setStepNav } = useStepNav(); - const { user, permissions } = useAuth(); + const { user } = useAuth(); const [initialState, setInitialState] = useState(); - const { id, preferencesKey } = useDocumentInfo(); + const { id, preferencesKey, docPermissions, slug } = useDocumentInfo(); const { getPreference } = usePreferences(); const { @@ -28,7 +28,6 @@ const AccountView: React.FC = () => { routes: { api }, collections, admin: { - user: adminUser, components: { views: { Account: CustomAccount, @@ -36,20 +35,16 @@ const AccountView: React.FC = () => { Account: undefined, }, } = {}, - } = { - user: 'users', }, } = useConfig(); const { t } = useTranslation('authentication'); - const collection = collections.find((coll) => coll.slug === adminUser); + const collection = collections.find((coll) => coll.slug === slug); const { fields } = collection; - const collectionPermissions = permissions?.collections?.[adminUser]; - const [{ data }] = usePayloadAPI( - `${serverURL}${api}/${collection?.slug}/${user?.id}`, + `${serverURL}${api}/${slug}/${id}`, { initialParams: { 'fallback-locale': 'null', @@ -58,11 +53,11 @@ const AccountView: React.FC = () => { }, ); - const hasSavePermission = collectionPermissions?.update?.permission; + const hasSavePermission = docPermissions?.update?.permission; const dataToRender = locationState?.data || data; - const apiURL = `${serverURL}${api}/${user.collection}/${data?.id}`; + const apiURL = `${serverURL}${api}/${slug}/${data?.id}`; - const action = `${serverURL}${api}/${user.collection}/${data?.id}?locale=${locale}&depth=0`; + const action = `${serverURL}${api}/${slug}/${data?.id}?locale=${locale}&depth=0`; useEffect(() => { const nav = [{ @@ -74,7 +69,15 @@ const AccountView: React.FC = () => { useEffect(() => { const awaitInitialState = async () => { - const state = await buildStateFromSchema({ fieldSchema: fields, data: dataToRender, operation: 'update', id, user, locale, t }); + const state = await buildStateFromSchema({ + fieldSchema: fields, + data: dataToRender, + operation: 'update', + id, + user, + locale, + t, + }); await getPreference(preferencesKey); setInitialState(state); }; @@ -90,11 +93,11 @@ const AccountView: React.FC = () => { action, data, collection, - permissions: collectionPermissions, + permissions: docPermissions, hasSavePermission, initialState, apiURL, - isLoading: !initialState, + isLoading: !initialState || !docPermissions, }} /> );