mirror of
https://github.com/strapi/strapi.git
synced 2025-11-02 19:04:38 +00:00
Merge pull request #17600 from strapi/fix/cm-single-types-nav
This commit is contained in:
commit
f99537daf7
@ -6,9 +6,10 @@ import { resetPermissions, setPermissions } from './actions';
|
|||||||
import { selectCollectionTypePermissions, selectPermissions } from './selectors';
|
import { selectCollectionTypePermissions, selectPermissions } from './selectors';
|
||||||
|
|
||||||
const useSyncRbac = (query, collectionTypeUID, containerName = 'listView') => {
|
const useSyncRbac = (query, collectionTypeUID, containerName = 'listView') => {
|
||||||
|
const dispatch = useDispatch();
|
||||||
|
|
||||||
const collectionTypesRelatedPermissions = useSelector(selectCollectionTypePermissions);
|
const collectionTypesRelatedPermissions = useSelector(selectCollectionTypePermissions);
|
||||||
const permissions = useSelector(selectPermissions);
|
const permissions = useSelector(selectPermissions);
|
||||||
const dispatch = useDispatch();
|
|
||||||
|
|
||||||
const relatedPermissions = collectionTypesRelatedPermissions[collectionTypeUID];
|
const relatedPermissions = collectionTypesRelatedPermissions[collectionTypeUID];
|
||||||
|
|
||||||
@ -24,7 +25,14 @@ const useSyncRbac = (query, collectionTypeUID, containerName = 'listView') => {
|
|||||||
return () => {};
|
return () => {};
|
||||||
}, [relatedPermissions, dispatch, query, containerName]);
|
}, [relatedPermissions, dispatch, query, containerName]);
|
||||||
|
|
||||||
return permissions;
|
// Check if the permissions are related to the current collectionTypeUID
|
||||||
|
const isPermissionMismatch =
|
||||||
|
permissions?.some((permission) => permission.subject !== collectionTypeUID) ?? true;
|
||||||
|
|
||||||
|
return {
|
||||||
|
isValid: permissions && !isPermissionMismatch,
|
||||||
|
permissions,
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
export default useSyncRbac;
|
export default useSyncRbac;
|
||||||
|
|||||||
@ -16,7 +16,7 @@ const EditViewLayoutManager = ({ layout, ...rest }) => {
|
|||||||
const dispatch = useDispatch();
|
const dispatch = useDispatch();
|
||||||
const [{ query }] = useQueryParams();
|
const [{ query }] = useQueryParams();
|
||||||
const { runHookWaterfall } = useStrapiApp();
|
const { runHookWaterfall } = useStrapiApp();
|
||||||
const permissions = useSyncRbac(query, rest.slug, 'editView');
|
const { permissions, isValid: isValidPermissions } = useSyncRbac(query, rest.slug, 'editView');
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
// Allow the plugins to extend the edit view layout
|
// Allow the plugins to extend the edit view layout
|
||||||
@ -29,7 +29,7 @@ const EditViewLayoutManager = ({ layout, ...rest }) => {
|
|||||||
};
|
};
|
||||||
}, [layout, dispatch, query, runHookWaterfall]);
|
}, [layout, dispatch, query, runHookWaterfall]);
|
||||||
|
|
||||||
if (!currentLayout || !permissions) {
|
if (!currentLayout || !isValidPermissions) {
|
||||||
return <LoadingIndicatorPage />;
|
return <LoadingIndicatorPage />;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -14,7 +14,7 @@ const ListViewLayout = ({ layout, ...props }) => {
|
|||||||
const dispatch = useDispatch();
|
const dispatch = useDispatch();
|
||||||
const { replace } = useHistory();
|
const { replace } = useHistory();
|
||||||
const [{ query, rawQuery }] = useQueryParams();
|
const [{ query, rawQuery }] = useQueryParams();
|
||||||
const permissions = useSyncRbac(query, props.slug, 'listView');
|
const { permissions, isValid: isValidPermissions } = useSyncRbac(query, props.slug, 'listView');
|
||||||
const redirectionLink = useFindRedirectionLink(props.slug);
|
const redirectionLink = useFindRedirectionLink(props.slug);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@ -33,7 +33,7 @@ const ListViewLayout = ({ layout, ...props }) => {
|
|||||||
};
|
};
|
||||||
}, [dispatch]);
|
}, [dispatch]);
|
||||||
|
|
||||||
if (!permissions) {
|
if (!isValidPermissions) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user