Merge pull request #17600 from strapi/fix/cm-single-types-nav

This commit is contained in:
Jamie Howard 2023-08-09 08:48:31 +01:00 committed by GitHub
commit f99537daf7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 14 additions and 6 deletions

View File

@ -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;

View File

@ -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 />;
}

View File

@ -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;
}