From 5937a0d7ce970d38ddb0e4c6a02d11f8c8b53e9b Mon Sep 17 00:00:00 2001 From: Philipp Dormann Date: Mon, 11 Jan 2021 21:07:30 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=92=20added=20rendering=20based=20on?= =?UTF-8?q?=20permission=20level?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ref #12 --- src/components/AddUserModal.svelte | 6 +- src/components/Footer.svelte | 11 +- src/components/UserDetail.svelte | 9 + src/components/Users.svelte | 25 ++- src/components/UsersOverview.svelte | 315 ++++++++++++++-------------- 5 files changed, 195 insertions(+), 171 deletions(-) diff --git a/src/components/AddUserModal.svelte b/src/components/AddUserModal.svelte index 8af83feb..5d9c3298 100644 --- a/src/components/AddUserModal.svelte +++ b/src/components/AddUserModal.svelte @@ -2,7 +2,7 @@ import { _ } from "svelte-i18n"; import { clickOutside } from "./outsideclick"; import { focusTrap } from "svelte-focus-trap"; - import { tracks as tracksstore } from "../store.js"; + import { tracks as usersstore } from "../store.js"; import { UserService } from "@odit/lfk-client-js"; import isEmail from "validator/es/lib/isEmail"; import Toastify from "toastify-js"; @@ -68,11 +68,11 @@ backgroundColor: "linear-gradient(to right, #00b09b, #96c93d)", }).showToast(); let storeval = []; - tracksstore.subscribe((val) => { + usersstore.subscribe((val) => { storeval = val; }); storeval.push(result); - tracksstore.set(storeval); + usersstore.set(storeval); }) .catch((err) => { // diff --git a/src/components/Footer.svelte b/src/components/Footer.svelte index 1ef90ea9..4669de93 100644 --- a/src/components/Footer.svelte +++ b/src/components/Footer.svelte @@ -1,9 +1,12 @@ diff --git a/src/components/UserDetail.svelte b/src/components/UserDetail.svelte index 6d290e88..1fe9da1c 100644 --- a/src/components/UserDetail.svelte +++ b/src/components/UserDetail.svelte @@ -1,6 +1,7 @@
{$_('users')} - + {#if store.state.jwtinfo.userdetails.permissions.includes('USER:CREATE')} + + {/if}

{$_('manage-admin-users')}

- + +{#if store.state.jwtinfo.userdetails.permissions.includes('USER:CREATE')} + +{/if} diff --git a/src/components/UsersOverview.svelte b/src/components/UsersOverview.svelte index 72296940..2bcf706d 100644 --- a/src/components/UsersOverview.svelte +++ b/src/components/UsersOverview.svelte @@ -5,6 +5,7 @@ const users_promise = UserService.userControllerGetAll(); import "gridjs/dist/theme/mermaid.css"; import { users as usersstore } from "../store.js"; + import store from "../store"; import UsersEmptyState from "./UsersEmptyState.svelte"; $: searchvalue = ""; $: active_deletes = []; @@ -19,163 +20,167 @@ }); -{#await users_promise} - -{:then users} - {#if userscache.length === 0} - - {:else} - {#if advanced_search} - advanced search - {:else} - - {/if} - +{#if store.state.jwtinfo.userdetails.permissions.includes('USER:GET')} + {#await users_promise}
- - - - - - - - - - - {#each users as u} - {#if Object.values(u) - .toString() - .toLowerCase() - .includes(searchvalue)} - - + {:else} + + {/if} + + {/if} + {/each} + +
- Name - - Status - - Groups - - Action -
-
- {#if u.profilePic} -
- -
- {/if} -
-
- {u.firstname} - {u.middlename || ''} - {u.lastname} -
-
- {u.email || u.username} + class="bg-teal-lightest border-t-4 border-teal rounded-b text-teal-darkest px-4 py-3 shadow-md my-2" + role="alert"> +

users are being loaded...

+

{$_('this-might-take-a-moment')}

+
+ {:then users} + {#if userscache.length === 0} + + {:else} + {#if advanced_search} + advanced search + {:else} + + {/if} + +
+ + + + + + + + + + + {#each users as u} + {#if Object.values(u) + .toString() + .toLowerCase() + .includes(searchvalue)} + + - - - {#if active_deletes[u.id] === true} - + + + {#if active_deletes[u.id] === true} + - {:else} - - {/if} - - {/if} - {/each} - -
+ Name + + Status + + Groups + + Action +
+
+ {#if u.profilePic} +
+ +
+ {/if} +
+
+ {u.firstname} + {u.middlename || ''} + {u.lastname} +
+
+ {u.email || u.username} +
- -
- {#if u.enabled} - Active - {:else} - Inactive - {/if} - - {#each u.groups as g} - {g.name} - {/each} - - - + {#if u.enabled} + Active + {:else} + Inactive + {/if} + + {#each u.groups as g} + {g.name} + {/each} + + + - - Edit - -
+ }} + tabindex="0" + class="ml-4 text-red-600 hover:text-red-900 cursor-pointer">Confirm + Delete +
+ Edit + {#if store.state.jwtinfo.userdetails.permissions.includes('USER:DELETE')} + + {/if} +
+
+ {/if} + {:catch error} +
+ + {$_('general_promise_error')} + {error} +
- {/if} -{:catch error} -
- - {$_('general_promise_error')} - {error} - -
-{/await} + {/await} +{/if}