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