Working suergroup permissions overview

ref #48
This commit is contained in:
Nicolai Ort 2021-02-26 18:23:02 +01:00
parent 7e80608066
commit 7c324869a4

View File

@ -1,9 +1,9 @@
<script> <script>
import { _ } from "svelte-i18n"; import { _ } from "svelte-i18n";
import { import {
UserService,
PermissionService, PermissionService,
CreatePermission, CreatePermission,
UserGroupService,
} from "@odit/lfk-client-js"; } from "@odit/lfk-client-js";
import Toastify from "toastify-js"; import Toastify from "toastify-js";
import PromiseError from "../base/PromiseError.svelte"; import PromiseError from "../base/PromiseError.svelte";
@ -11,18 +11,17 @@
let [ let [
grantedPermissions_initial, grantedPermissions_initial,
grantedPermissions, grantedPermissions,
inheritedPermissions,
to_add, to_add,
to_delete, to_delete,
allpermissions, allpermissions,
promises, promises,
] = [[], [], [], [], [], [], []]; ] = [[], [], [], [], [], []];
$: original_data = {}; $: original_data = {};
$: save_enabled = $: save_enabled =
JSON.stringify(grantedPermissions) === JSON.stringify(grantedPermissions) ===
JSON.stringify(grantedPermissions_initial); JSON.stringify(grantedPermissions_initial);
const user_promise = UserService.userControllerGetOne(params.userid); const group_promise = UserGroupService.userGroupControllerGetOne(params.groupid);
user_promise.then((data) => { group_promise.then((data) => {
original_data = Object.assign(original_data, data); original_data = Object.assign(original_data, data);
}); });
function submit() { function submit() {
@ -62,18 +61,17 @@
allpermissions = allpermissions.concat([{ target: t, action: a }]); allpermissions = allpermissions.concat([{ target: t, action: a }]);
}); });
}); });
UserService.userControllerGetPermissions(params.userid).then((val) => { UserGroupService.userGroupControllerGetPermissions(params.groupid).then((val) => {
val.inherited.forEach((p) => {
inheritedPermissions = inheritedPermissions.concat([p]);
});
val.directlyGranted.forEach((p) => { val.directlyGranted.forEach((p) => {
delete p.responseType;
grantedPermissions = grantedPermissions.concat([p]); grantedPermissions = grantedPermissions.concat([p]);
}); });
console.log(grantedPermissions)
grantedPermissions_initial = grantedPermissions; grantedPermissions_initial = grantedPermissions;
}); });
</script> </script>
{#await user_promise} {#await group_promise}
<!-- --> <!-- -->
{:then user} {:then user}
<section class="container p-5 select-none"> <section class="container p-5 select-none">
@ -111,9 +109,7 @@
<polyline points="12 5 19 12 12 19" /></svg> <polyline points="12 5 19 12 12 19" /></svg>
</li> </li>
<li class="flex items-center"> <li class="flex items-center">
<span class="mr-2"><a href="../">{original_data.firstname} <span class="mr-2"><a href="../">{original_data.name}</a></span>
{original_data.middlename || ''}
{original_data.lastname}</a></span>
</li> </li>
<li class="flex items-center"> <li class="flex items-center">
<svg <svg
@ -142,9 +138,7 @@
</div> </div>
<div class="mb-8 text-3xl font-extrabold"> <div class="mb-8 text-3xl font-extrabold">
{$_('permissions')}: {$_('permissions')}:
{original_data.firstname} {original_data.name}
{original_data.middlename || ''}
{original_data.lastname}
<span> <span>
{#if promises.length === 0} {#if promises.length === 0}
<button <button
@ -162,24 +156,21 @@
</div> </div>
<!-- --> <!-- -->
<div class="flex flex-wrap -mx-1 overflow-hidden"> <div class="flex flex-wrap -mx-1 overflow-hidden">
<div class="my-1 px-1 w-full overflow-hidden sm:w-1/3"> <div class="my-1 px-1 w-full overflow-hidden sm:w-1/2">
{$_('verfuegbare')} {$_('verfuegbare')}
</div> </div>
<div class="my-1 px-1 w-full overflow-hidden sm:w-1/3"> <div class="my-1 px-1 w-full overflow-hidden sm:w-1/2">
{$_('erteilte')} granted
</div>
<div class="my-1 px-1 w-full overflow-hidden sm:w-1/3">
{$_('geerbte')}
</div> </div>
</div> </div>
<!-- --> <!-- -->
<div class="flex flex-wrap -mx-1 overflow-hidden"> <div class="flex flex-wrap -mx-1 overflow-hidden">
{#if allpermissions.length > 0} {#if allpermissions.length > 0}
<div class="my-1 px-1 w-full overflow-hidden sm:w-1/3"> <div class="my-1 px-1 w-full overflow-hidden sm:w-1/2">
<div <div
class="border-4 border-dashed rounded mb-4 p-5 text-lg text-center"> class="border-4 border-dashed rounded mb-4 p-5 text-lg text-center">
{#each allpermissions as p} {#each allpermissions as p}
{#if !grantedPermissions.includes(p)} {#if !(grantedPermissions.filter((o)=>p.target == o.target && p.action == o.action).length > 0)}
<p <p
class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 bg-gray-200 p-2 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input"> class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 bg-gray-200 p-2 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input">
{p.target + ':' + p.action} {p.target + ':' + p.action}
@ -205,7 +196,7 @@
{/each} {/each}
</div> </div>
</div> </div>
<div class="my-1 px-1 w-full overflow-hidden sm:w-1/3"> <div class="my-1 px-1 w-full overflow-hidden sm:w-1/2">
<div <div
class="border-4 border-dashed rounded mb-4 p-5 text-lg text-center"> class="border-4 border-dashed rounded mb-4 p-5 text-lg text-center">
{#each grantedPermissions as p} {#each grantedPermissions as p}
@ -227,17 +218,6 @@
{/each} {/each}
</div> </div>
</div> </div>
<div class="my-1 px-1 w-full overflow-hidden sm:w-1/3">
<div
class="border-4 border-dashed rounded mb-4 p-5 text-lg text-center">
{#each inheritedPermissions as p}
<p
class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 bg-gray-200 p-2 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input">
{p.target + ':' + p.action}
</p>
{/each}
</div>
</div>
{/if} {/if}
</div> </div>
</section> </section>