mirror of
https://github.com/hcengineering/platform.git
synced 2026-09-11 12:17:44 +02:00
Do not select space not accessible to the user (#10707)
Signed-off-by: Artem Savchenko <armisav@gmail.com>
This commit is contained in:
@@ -364,7 +364,7 @@
|
||||
}
|
||||
|
||||
$: if (_space !== undefined) {
|
||||
spaceQuery.query(tracker.class.Project, { _id: _space }, (res) => {
|
||||
spaceQuery.query(tracker.class.Project, { _id: _space, members: getCurrentAccount().uuid }, (res) => {
|
||||
resetDefaultAssigneeId()
|
||||
currentProject = res[0]
|
||||
})
|
||||
@@ -689,6 +689,13 @@
|
||||
|
||||
let attachments: Map<Ref<Attachment>, Attachment> = new Map<Ref<Attachment>, Attachment>()
|
||||
|
||||
function isMemberOfProject (project: Project | undefined): boolean {
|
||||
if (project == null) return false
|
||||
const members = project.members
|
||||
if (!Array.isArray(members)) return true
|
||||
return members.includes(me.uuid)
|
||||
}
|
||||
|
||||
async function findDefaultSpace (): Promise<Project | undefined> {
|
||||
let targetRef: Ref<Project> | undefined
|
||||
if (relatedTo !== undefined) {
|
||||
@@ -733,12 +740,14 @@
|
||||
}
|
||||
})
|
||||
if (projects.length > 0) {
|
||||
return projects[0]
|
||||
const candidate = projects[0]
|
||||
return isMemberOfProject(candidate) ? candidate : undefined
|
||||
}
|
||||
}
|
||||
|
||||
if (targetRef !== undefined) {
|
||||
return await client.findOne(tracker.class.Project, { _id: targetRef })
|
||||
const candidate = await client.findOne(tracker.class.Project, { _id: targetRef })
|
||||
return isMemberOfProject(candidate) ? candidate : undefined
|
||||
}
|
||||
}
|
||||
|
||||
@@ -773,6 +782,10 @@
|
||||
<svelte:fragment slot="header">
|
||||
<SpaceSelector
|
||||
_class={tracker.class.Project}
|
||||
query={{
|
||||
archived: false,
|
||||
members: getCurrentAccount().uuid
|
||||
}}
|
||||
label={tracker.string.Project}
|
||||
bind:space={_space}
|
||||
on:object={(evt) => {
|
||||
@@ -782,6 +795,7 @@
|
||||
size={'small'}
|
||||
component={ProjectPresenter}
|
||||
defaultIcon={tracker.icon.Home}
|
||||
clearInvalidValue={true}
|
||||
{findDefaultSpace}
|
||||
/>
|
||||
<ObjectBox
|
||||
@@ -1054,7 +1068,7 @@
|
||||
<Button
|
||||
loading={okProcessing}
|
||||
focusIndex={10001}
|
||||
disabled={!canSave}
|
||||
disabled={canSave !== true}
|
||||
label={okLabel}
|
||||
kind={'primary'}
|
||||
size={'large'}
|
||||
|
||||
Reference in New Issue
Block a user