mirror of
https://github.com/strapi/strapi.git
synced 2025-11-02 10:55:37 +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';
|
||||
|
||||
const useSyncRbac = (query, collectionTypeUID, containerName = 'listView') => {
|
||||
const dispatch = useDispatch();
|
||||
|
||||
const collectionTypesRelatedPermissions = useSelector(selectCollectionTypePermissions);
|
||||
const permissions = useSelector(selectPermissions);
|
||||
const dispatch = useDispatch();
|
||||
|
||||
const relatedPermissions = collectionTypesRelatedPermissions[collectionTypeUID];
|
||||
|
||||
@ -24,7 +25,14 @@ const useSyncRbac = (query, collectionTypeUID, containerName = 'listView') => {
|
||||
return () => {};
|
||||
}, [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;
|
||||
|
||||
@ -16,7 +16,7 @@ const EditViewLayoutManager = ({ layout, ...rest }) => {
|
||||
const dispatch = useDispatch();
|
||||
const [{ query }] = useQueryParams();
|
||||
const { runHookWaterfall } = useStrapiApp();
|
||||
const permissions = useSyncRbac(query, rest.slug, 'editView');
|
||||
const { permissions, isValid: isValidPermissions } = useSyncRbac(query, rest.slug, 'editView');
|
||||
|
||||
useEffect(() => {
|
||||
// Allow the plugins to extend the edit view layout
|
||||
@ -29,7 +29,7 @@ const EditViewLayoutManager = ({ layout, ...rest }) => {
|
||||
};
|
||||
}, [layout, dispatch, query, runHookWaterfall]);
|
||||
|
||||
if (!currentLayout || !permissions) {
|
||||
if (!currentLayout || !isValidPermissions) {
|
||||
return <LoadingIndicatorPage />;
|
||||
}
|
||||
|
||||
|
||||
@ -14,7 +14,7 @@ const ListViewLayout = ({ layout, ...props }) => {
|
||||
const dispatch = useDispatch();
|
||||
const { replace } = useHistory();
|
||||
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);
|
||||
|
||||
useEffect(() => {
|
||||
@ -33,7 +33,7 @@ const ListViewLayout = ({ layout, ...props }) => {
|
||||
};
|
||||
}, [dispatch]);
|
||||
|
||||
if (!permissions) {
|
||||
if (!isValidPermissions) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user