feat: adds doc permissions to account view
This commit is contained in:
@@ -188,7 +188,7 @@ export const DocumentInfoProvider: React.FC<Props> = ({
|
||||
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]);
|
||||
}
|
||||
|
||||
@@ -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<Fields>();
|
||||
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,
|
||||
}}
|
||||
/>
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user