From 36a084eab6bd0c922da29ebb2d260ba803bf9675 Mon Sep 17 00:00:00 2001 From: Philipp Dormann Date: Tue, 12 Jan 2021 21:04:12 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=92=20UserDetail=20-=20WIP=20on=20Perm?= =?UTF-8?q?issions?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ref #12 --- src/components/UserDetail.svelte | 101 +++++++++++++++++++------------ 1 file changed, 61 insertions(+), 40 deletions(-) diff --git a/src/components/UserDetail.svelte b/src/components/UserDetail.svelte index 43197b5e..a9c77d80 100644 --- a/src/components/UserDetail.svelte +++ b/src/components/UserDetail.svelte @@ -2,7 +2,11 @@ import { _ } from "svelte-i18n"; import lodashIsEqual from "lodash.isequal"; import store from "../store"; - import { UserService, UserGroupService } from "@odit/lfk-client-js"; + import { + UserService, + UserGroupService, + PermissionService, + } from "@odit/lfk-client-js"; import "gridjs/dist/theme/mermaid.css"; import Toastify from "toastify-js"; import PromiseError from "./PromiseError.svelte"; @@ -11,7 +15,8 @@ let data_loaded = false; $: delete_triggered = false; $: original_data = {}; - $: editable_userdata = undefined; + $: editable_userdata = {}; + $: allpermissions = []; $: allgroups = []; $: allgroups_ids = []; $: usergroups_array = []; @@ -29,6 +34,12 @@ console.log(data); allgroups = data; }); + const permissions_promise = PermissionService.permissionControllerGetAll(); + permissions_promise.then((data) => { + data.forEach((p) => { + allpermissions.push(p.target + ":" + p.action); + }); + }); $: changes_performed = !lodashIsEqual(original_data, editable_userdata); function updateGroups() { console.log("updating groups..."); @@ -53,6 +64,11 @@ console.log(editable_userdata.groups); } function submit() { + if ( + !lodashIsEqual(original_data.permissions, editable_userdata.permissions) + ) { + // TODO: add+delete permissions + } if (data_loaded === true && changes_performed === true) { console.log("ok, submitting..."); console.log(editable_userdata); @@ -276,7 +292,7 @@ class="mt-1 focus:ring-indigo-500 focus:border-indigo-500 block w-full shadow-sm rounded-l-md sm:text-sm border-gray-300 border bg-gray-50 text-gray-500 dark:bg-gray-900 dark:text-gray-100 rounded-md p-2" multiple> {#each allgroups as g} - {#if editable_userdata.groups.some((obj) => obj.id === g.id)} + {#if usergroups_array.includes(g.id)} {:else} @@ -286,53 +302,58 @@
Permissions -
+
- -
- -
- + verfügbare
+
erteilte
-
-
-

- DEMO_PERMISSION -

-

- DEMO_PERMISSION -

+ {#if allpermissions.length > 0} +
+
+ {#each allpermissions as p} + {#if !editable_userdata.permissions.includes(p)} +

+ {p} + +

+ {/if} + {/each} +
-
- -
-
-

- DEMO_PERMISSION -

-

- DEMO_PERMISSION -

+
+
+ {#each allpermissions as p} + {#if editable_userdata.permissions.includes(p)} +

+ {p} + +

+ {/if} + {/each} +
-
+ {/if}
- TODO: permission picker 🔒