fix: Only display collections for move/publish with permission

This commit is contained in:
Tom Moor
2024-04-21 12:26:41 -04:00
parent d80ef8329b
commit 96758437fd
2 changed files with 20 additions and 7 deletions

View File

@@ -20,7 +20,7 @@ type Props = {
};
function DocumentMove({ document }: Props) {
const { dialogs } = useStores();
const { dialogs, policies } = useStores();
const { t } = useTranslation();
const collectionTrees = useCollectionTrees();
const [selectedPath, selectPath] = React.useState<NavigationNode | null>(
@@ -29,9 +29,16 @@ function DocumentMove({ document }: Props) {
const items = React.useMemo(() => {
// Filter out the document itself and its existing parent doc, if any.
const nodes = flatten(collectionTrees.map(flattenTree)).filter(
(node) => node.id !== document.id && node.id !== document.parentDocumentId
);
const nodes = flatten(collectionTrees.map(flattenTree))
.filter(
(node) =>
node.id !== document.id && node.id !== document.parentDocumentId
)
.filter((node) =>
node.collectionId
? policies.get(node.collectionId)?.abilities.createDocument
: true
);
// If the document we're moving is a template, only show collections as
// move targets.
@@ -42,6 +49,7 @@ function DocumentMove({ document }: Props) {
}
return nodes;
}, [
policies,
collectionTrees,
document.id,
document.parentDocumentId,

View File

@@ -21,15 +21,20 @@ type Props = {
};
function DocumentPublish({ document }: Props) {
const { dialogs } = useStores();
const { dialogs, policies } = useStores();
const { t } = useTranslation();
const collectionTrees = useCollectionTrees();
const [selectedPath, selectPath] = React.useState<NavigationNode | null>(
null
);
const publishOptions = React.useMemo(
() => flatten(collectionTrees.map(flattenTree)),
[collectionTrees]
() =>
flatten(collectionTrees.map(flattenTree)).filter((node) =>
node.collectionId
? policies.get(node.collectionId)?.abilities.createDocument
: true
),
[policies, collectionTrees]
);
const publish = async () => {