mirror of
https://github.com/hcengineering/platform.git
synced 2026-09-26 19:44:57 +02:00
EQMS-1302: fixed RBAC bypass for space / team related wizards and popups (develop port) (#8979)
Signed-off-by: Victor Ilyushchenko <alt13ri@gmail.com>
This commit is contained in:
@@ -13,12 +13,12 @@
|
||||
// limitations under the License.
|
||||
-->
|
||||
<script lang="ts">
|
||||
import { createEventDispatcher } from 'svelte'
|
||||
import { Label } from '@hcengineering/ui'
|
||||
import { TypedSpace, type Data, type Ref, type Permission } from '@hcengineering/core'
|
||||
import { type Employee, type PermissionsStore, getCurrentEmployee } from '@hcengineering/contact'
|
||||
import { getCurrentEmployee, type Employee } from '@hcengineering/contact'
|
||||
import { UserBoxItems, getPermittedPersons, permissionsStore } from '@hcengineering/contact-resources'
|
||||
import documents, { type ControlledDocument } from '@hcengineering/controlled-documents'
|
||||
import { UserBoxItems, permissionsStore } from '@hcengineering/contact-resources'
|
||||
import { TypedSpace, type Data, type Ref } from '@hcengineering/core'
|
||||
import { Label } from '@hcengineering/ui'
|
||||
import { createEventDispatcher } from 'svelte'
|
||||
|
||||
export let controlledDoc: Data<ControlledDocument>
|
||||
export let space: Ref<TypedSpace>
|
||||
@@ -34,23 +34,23 @@
|
||||
|
||||
$: permissionsSpace = space === documents.space.UnsortedTemplates ? documents.space.QualityDocuments : space
|
||||
|
||||
function getPermittedPersons (
|
||||
permission: Ref<Permission>,
|
||||
space: Ref<TypedSpace>,
|
||||
permissionsStore: PermissionsStore
|
||||
): Ref<Employee>[] {
|
||||
return Array.from(permissionsStore.ap[space]?.[permission] ?? []) as Ref<Employee>[]
|
||||
}
|
||||
$: permittedReviewers = getPermittedPersons(
|
||||
documents.permission.ReviewDocument,
|
||||
permissionsSpace,
|
||||
$permissionsStore
|
||||
) as Ref<Employee>[]
|
||||
|
||||
$: permittedReviewers = getPermittedPersons(documents.permission.ReviewDocument, permissionsSpace, $permissionsStore)
|
||||
|
||||
$: permittedApprovers = getPermittedPersons(documents.permission.ApproveDocument, permissionsSpace, $permissionsStore)
|
||||
$: permittedApprovers = getPermittedPersons(
|
||||
documents.permission.ApproveDocument,
|
||||
permissionsSpace,
|
||||
$permissionsStore
|
||||
) as Ref<Employee>[]
|
||||
|
||||
$: permittedCoAuthors = getPermittedPersons(
|
||||
documents.permission.CoAuthorDocument,
|
||||
permissionsSpace,
|
||||
$permissionsStore
|
||||
).filter((person) => person !== currentEmployee)
|
||||
).filter((person) => person !== currentEmployee) as Ref<Employee>[]
|
||||
|
||||
function handleUsersUpdated (type: 'reviewers' | 'approvers' | 'coAuthors', users: Ref<Employee>[]): void {
|
||||
dispatch('update', { type, users })
|
||||
|
||||
+5
-5
@@ -25,10 +25,10 @@
|
||||
type Project,
|
||||
type ProjectDocument
|
||||
} from '@hcengineering/controlled-documents'
|
||||
import { type Doc, type Ref, type Space } from '@hcengineering/core'
|
||||
import { TypedSpace, type Doc, type Ref, type Space } from '@hcengineering/core'
|
||||
import presentation, { getClient, SpaceSelector } from '@hcengineering/presentation'
|
||||
import { Button, Label } from '@hcengineering/ui'
|
||||
import { permissionsStore } from '@hcengineering/contact-resources'
|
||||
import { checkMyPermission, permissionsStore } from '@hcengineering/contact-resources'
|
||||
import { createEventDispatcher } from 'svelte'
|
||||
|
||||
import documentsRes from '../../../plugin'
|
||||
@@ -139,9 +139,9 @@
|
||||
const externalSpaces = hierarchy.getDescendants(documents.class.ExternalSpace)
|
||||
|
||||
$: hasParentSelector = targetSpaceId !== documents.space.UnsortedTemplates
|
||||
$: permissionRestrictedSpaces = Object.entries($permissionsStore.ps)
|
||||
.filter(([, pss]) => !pss.has(documents.permission.CreateDocument))
|
||||
.map(([s]) => s) as Ref<Space>[]
|
||||
$: permissionRestrictedSpaces = Object.keys($permissionsStore.ps).filter(
|
||||
(s) => !checkMyPermission(documents.permission.CreateDocument, s as Ref<TypedSpace>, $permissionsStore)
|
||||
) as Ref<TypedSpace>[]
|
||||
$: restrictedSpaces =
|
||||
sourceSpaceId !== undefined ? permissionRestrictedSpaces.concat(sourceSpaceId) : permissionRestrictedSpaces
|
||||
|
||||
|
||||
Reference in New Issue
Block a user