ezqms-1029: fix permissions check for creating project doc from context menu (#6282)

Signed-off-by: Alexey Zinoviev <alexey.zinoviev@xored.com>
This commit is contained in:
Alexey Zinoviev
2024-08-07 22:29:59 +07:00
committed by GitHub
parent f09afc7eb3
commit afd682ed9b
2 changed files with 18 additions and 14 deletions
@@ -39,7 +39,8 @@
setCurrentProject,
getProjectDocsHierarchy,
isEditableProject,
createDocument
createDocument,
canCreateChildDocument
} from '../../utils'
import documents from '../../plugin'
@@ -129,17 +130,19 @@
async function getSpaceActions (space: DocumentSpace): Promise<Action[]> {
const actions = await getActions(space)
const action: Action = {
icon: documents.icon.NewDocument,
label: documents.string.CreateDocument,
group: 'create',
action: async () => {
await createDocument(space)
}
}
if (spaceType?.projects === true && (await isEditableProject(project))) {
actions.push(action)
if (
spaceType?.projects === true &&
(await isEditableProject(project)) &&
(await canCreateChildDocument(space, true))
) {
actions.push({
icon: documents.icon.NewDocument,
label: documents.string.CreateDocument,
group: 'create',
action: async () => {
await createDocument(space)
}
})
}
return orderActions(actions)
@@ -605,7 +605,8 @@ export async function canCreateChildTemplate (
}
export async function canCreateChildDocument (
doc?: Document | Document[] | DocumentSpace | DocumentSpace[] | ProjectDocument | ProjectDocument[]
doc?: Document | Document[] | DocumentSpace | DocumentSpace[] | ProjectDocument | ProjectDocument[],
includeProjects = false
): Promise<boolean> {
if (doc === null || doc === undefined) {
return false
@@ -625,7 +626,7 @@ export async function canCreateChildDocument (
if (isSpace(hierarchy, doc)) {
const spaceType = await client.findOne(documents.class.DocumentSpaceType, { _id: doc.type })
return spaceType?.projects !== true
return includeProjects || spaceType?.projects !== true
}
if (isProjectDocument(hierarchy, doc)) {