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 19:29:59 +04:00 committed by GitHub
parent f09afc7eb3
commit afd682ed9b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 18 additions and 14 deletions

View File

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

View File

@ -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)) {