18123: Disable controls related to group for built in groups.
[arvados-workbench2.git] / src / models / group.ts
index dae516bddb0f19548b0417bef78f33632aa53648..a0c22212b794e72c6c2ce02e17c06f1c59ebacb9 100644 (file)
@@ -2,17 +2,32 @@
 //
 // SPDX-License-Identifier: AGPL-3.0
 
-import { Resource } from "../common/api/common-resource-service";
-import { ResourceKind } from "./kinds";
+import { ResourceKind, TrashableResource, ResourceObjectType, RESOURCE_UUID_REGEX } from "./resource";
 
-export interface GroupResource extends Resource {
-    kind: ResourceKind.Group;
+export interface GroupResource extends TrashableResource {
+    kind: ResourceKind.GROUP;
     name: string;
-    groupClass: string;
+    groupClass: GroupClass | null;
     description: string;
-    properties: string;
-    writeableBy: string[];
-    trashAt: string;
-    deleteAt: string;
-    isTrashed: boolean;
-}
\ No newline at end of file
+    properties: any;
+    writableBy: string[];
+    ensure_unique_name: boolean;
+}
+
+export enum GroupClass {
+    PROJECT = 'project',
+    FILTER  = 'filter',
+    ROLE  = 'role',
+}
+
+export const BUILTIN_GROUP_IDS = [
+    'fffffffffffffff',
+    'anonymouspublic',
+    '000000000000000',
+]
+
+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]);
+};