X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/2ec7fa451c0970c15c0b0d35fe70e473889f9ea3..2a7fd99c212c33a1ec9911f8529fa5afc59a7bb2:/src/models/group.ts diff --git a/src/models/group.ts b/src/models/group.ts index a0c22212b7..f6a72c538f 100644 --- a/src/models/group.ts +++ b/src/models/group.ts @@ -2,14 +2,19 @@ // // SPDX-License-Identifier: AGPL-3.0 -import { ResourceKind, TrashableResource, ResourceObjectType, RESOURCE_UUID_REGEX } from "./resource"; +import { + ResourceKind, + ResourceWithProperties, + RESOURCE_UUID_REGEX, + ResourceObjectType, + TrashableResource +} from "./resource"; -export interface GroupResource extends TrashableResource { +export interface GroupResource extends TrashableResource, ResourceWithProperties { kind: ResourceKind.GROUP; name: string; groupClass: GroupClass | null; description: string; - properties: any; writableBy: string[]; ensure_unique_name: boolean; } @@ -20,14 +25,18 @@ export enum GroupClass { ROLE = 'role', } -export const BUILTIN_GROUP_IDS = [ - 'fffffffffffffff', - 'anonymouspublic', - '000000000000000', -] +export enum BuiltinGroups { + ALL = 'fffffffffffffff', + ANON = 'anonymouspublic', + SYSTEM = '000000000000000', +} + +export const getBuiltinGroupUuid = (cluster: string, groupName: BuiltinGroups): string => { + return cluster ? `${cluster}-${ResourceObjectType.GROUP}-${groupName}` : ""; +}; export const isBuiltinGroup = (uuid: string) => { const match = RESOURCE_UUID_REGEX.exec(uuid); const parts = match ? match[0].split('-') : []; - return parts.length === 3 && parts[1] === ResourceObjectType.GROUP && BUILTIN_GROUP_IDS.includes(parts[2]); + return parts.length === 3 && parts[1] === ResourceObjectType.GROUP && Object.values(BuiltinGroups).includes(parts[2]); };