Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | 10x 10x 10x 8x 8x 64x 64x 40x 24x 8x 10x 1x 1x 1x | /*
* Copyright 2021 Harness Inc. All rights reserved.
* Use of this source code is governed by the PolyForm Free Trial 1.0.0 license
* that can be found in the licenses directory at the root of this repository, also available at
* https://polyformproject.org/wp-content/uploads/2020/05/PolyForm-Free-Trial-1.0.0.txt.
*/
import produce from 'immer'
import { PermissionIdentifier } from '@rbac/interfaces/PermissionIdentifier'
import type { ResourceType } from '@rbac/interfaces/ResourceType'
import type { Permission, PermissionResponse } from 'services/rbac'
export const getPermissionMap = (permissionList?: PermissionResponse[]): Map<ResourceType, Permission[]> => {
const permissionsMap: Map<ResourceType, Permission[]> = new Map()
permissionList?.map(response => {
Eif (response.permission.resourceType) {
if (permissionsMap.has(response.permission.resourceType as ResourceType)) {
permissionsMap.get(response.permission.resourceType as ResourceType)?.push(response.permission)
} else permissionsMap.set(response.permission.resourceType as ResourceType, [response.permission])
}
})
return permissionsMap
}
export const onPermissionChange = (
permission: string,
isAdd: boolean,
permissions: string[],
setPermissions: (value: React.SetStateAction<string[]>) => void
): void => {
Eif (isAdd) {
Iif (
permission === PermissionIdentifier.EDIT_DASHBOARD ||
permissions.indexOf(PermissionIdentifier.EDIT_DASHBOARD) !== -1
) {
setPermissions(_permissions => [...permissions, permission, PermissionIdentifier.VIEW_DASHBOARD])
} else {
setPermissions(_permissions => [...permissions, permission])
}
} else if (
!(
permission === PermissionIdentifier.VIEW_DASHBOARD &&
permissions.indexOf(PermissionIdentifier.EDIT_DASHBOARD) !== -1
)
) {
setPermissions(_permissions =>
produce(_permissions, draft => {
draft?.splice(permissions.indexOf(permission), 1)
})
)
}
}
|