diff --git a/src/components/UserDetail.svelte b/src/components/UserDetail.svelte index 2dc3e7d7..502f4136 100644 --- a/src/components/UserDetail.svelte +++ b/src/components/UserDetail.svelte @@ -2,26 +2,56 @@ import { _ } from "svelte-i18n"; import lodashIsEqual from "lodash.isequal"; import store from "../store"; - import { - UserService, - UserGroupService, - PermissionService, - } from "@odit/lfk-client-js"; + import { UserService, UserGroupService } from "@odit/lfk-client-js"; import Toastify from "toastify-js"; import PromiseError from "./PromiseError.svelte"; export let params; const user_promise = UserService.userControllerGetOne(params.userid); let data_loaded = false; let usergroups_array_original = []; - let vererbte = []; + const colors = [ + "#f3558e", + "#17b978", + "#3498db", + "#3f3b3b", + "#775ada", + "#7ed6df_#000000", + "#000000", + "#21e6c1_#000000", + "#c0392b", + "#d35400", + "#7f8c8d", + "#6ab04c", + "#4834d4", + "#ff1f5a", + "#eac100", + ]; + let matched_colors = []; $: delete_triggered = false; $: original_data = {}; $: editable_userdata = {}; - $: allpermissions = []; $: allgroups = []; $: allgroups_ids = []; $: usergroups_array = []; + $: search_permission = ""; user_promise.then((data) => { + let current_target = ""; + let colorindex = -1; + data.permissions.forEach((p) => { + const target = p.split(":")[0]; + if (current_target !== p.split(":")[0]) { + colorindex++; + current_target = p.split(":")[0]; + } + let background = colors[colorindex]; + let foreground = "#fff"; + if (background.includes("_")) { + foreground = background.split("_")[1]; + background = background.split("_")[0]; + } + matched_colors[target] = [background, foreground]; + }); + // data_loaded = true; original_data = Object.assign(original_data, data); editable_userdata = data; @@ -36,35 +66,12 @@ UserGroupService.userGroupControllerGetAll().then((data) => { allgroups = data; }); - const permissions_promise = PermissionService.permissionControllerGetAll(); - permissions_promise.then((data) => { - data.forEach((p) => { - allpermissions = allpermissions.concat([p.target + ":" + p.action]); - }); - }); - UserService.userControllerGetPermissions(params.userid).then((val) => { - console.log(val); - editable_userdata.permissions = []; - val.directlyGranted.forEach((p) => { - editable_userdata.permissions = editable_userdata.permissions.concat([ - p.target + ":" + p.action, - ]); - }); - val.inherited.forEach((p) => { - vererbte = vererbte.concat([p.target + ":" + p.action]); - }); - }); $: changes_performed = !lodashIsEqual(original_data, editable_userdata); $: groups_changed = JSON.stringify(usergroups_array) === JSON.stringify(usergroups_array_original); $: save_enabled = changes_performed || !groups_changed; function submit() { - if ( - !lodashIsEqual(original_data.permissions, editable_userdata.permissions) - ) { - // TODO: add+delete permissions - } if (data_loaded === true && save_enabled) { editable_userdata.groups = usergroups_array; Toastify({ @@ -84,7 +91,6 @@ }).showToast(); }) .catch((err) => {}); - } else { } } function deleteUser() { @@ -142,7 +148,7 @@ -
Permissions
+ Edit + Permissions + + {#each original_data.permissions as p} + {#if p.toLowerCase().includes(search_permission.toLowerCase())} + {p} + + {/if} + {/each}