From 3e7751f70555294b2ba891203efdfe2cbd4a0ebb Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Fri, 16 Dec 2022 09:53:17 +0100 Subject: [PATCH] groups --- .../src/lib/components/GroupEditor.svelte | 166 ++++++++++++++++++ frontend/src/lib/components/GroupModal.svelte | 105 ----------- frontend/src/lib/components/Path.svelte | 38 +++- .../flows/map/FlowModuleSchemaMap.svelte | 6 +- frontend/src/routes/groups.svelte | 21 ++- 5 files changed, 221 insertions(+), 115 deletions(-) create mode 100644 frontend/src/lib/components/GroupEditor.svelte delete mode 100644 frontend/src/lib/components/GroupModal.svelte diff --git a/frontend/src/lib/components/GroupEditor.svelte b/frontend/src/lib/components/GroupEditor.svelte new file mode 100644 index 0000000000..b6c4349d45 --- /dev/null +++ b/frontend/src/lib/components/GroupEditor.svelte @@ -0,0 +1,166 @@ + + +
+

Summary

+ {#if group} +

{group?.summary ?? 'No summary'}

+ {:else} + + {/if} +

Members

+ {#if can_write} +
+ + +
+ {/if} + {#if members} + + + user + + + + + {#each members as { name, role }} + {name} + + { + const group = e.detail + // const wasInGroup = (group?.members ?? []).includes(group) + // const inAcl = ( + // group?.extra_perms ? Object.keys(group?.extra_perms) : [] + // ).includes(group) + if (group == 'member') { + GroupService.addUserToGroup(group) + + GranularAclService.removeGranularAcls({ + workspace: $workspaceStore ?? '', + path: name, + kind: 'group_', + requestBody: $userStore. + }) + } + loadGroup() + }} + > + Viewer A viewer can see who are the members and managers of a group + Member A Member of a group can see everything the group can see, write to everything + the group can write, and generally act on behalf of the group + Manager A manager of a group can manage the group, adding and removing users and change + their roles. He is not necessarily a member of the group. + Member & Manager + + + {#if can_write} + + {/if} + {/each} + + + {:else} +
+ {#each new Array(6) as _} + + {/each} +
+ {/if} +
diff --git a/frontend/src/lib/components/GroupModal.svelte b/frontend/src/lib/components/GroupModal.svelte deleted file mode 100644 index 020957556c..0000000000 --- a/frontend/src/lib/components/GroupModal.svelte +++ /dev/null @@ -1,105 +0,0 @@ - - - - -
-

Summary

-

{group?.summary ?? 'No summary'}

-

Members

- {#if can_write} -
- - -
- {/if} - - - user - admin of group - - - - {#each members as { name, isAdmin }} - {name} - {isAdmin ? 'admin' : ''} - - {#if can_write} - - {/if} - {/each} - - -
-
-
diff --git a/frontend/src/lib/components/Path.svelte b/frontend/src/lib/components/Path.svelte index feed10f62b..04be4111e1 100644 --- a/frontend/src/lib/components/Path.svelte +++ b/frontend/src/lib/components/Path.svelte @@ -15,6 +15,9 @@ import { createEventDispatcher } from 'svelte' import Required from './Required.svelte' import Popover from './Popover.svelte' + import { Button, Drawer, DrawerContent } from './common' + import { faPlus } from '@fortawesome/free-solid-svg-icons' + import GroupEditor from './GroupEditor.svelte' type PathKind = 'resource' | 'script' | 'variable' | 'flow' | 'schedule' | 'app' let meta: Meta | undefined = undefined @@ -155,8 +158,37 @@ path = initialPath } } + + let newGroup: Drawer + let newGroupName: string + let groupCreated: string | undefined = undefined + + async function addGroup() { + await GroupService.createGroup({ + workspace: $workspaceStore ?? '', + requestBody: { name: newGroupName } + }) + groupCreated = newGroupName + loadGroups() + } + + +
+ + +
+ + {#if groupCreated} +
+ + {/if} + + +
{#if meta != undefined} @@ -202,7 +234,11 @@ {:else}