diff --git a/src/App.svelte b/src/App.svelte
index 90ccbcef..806ac3f2 100644
--- a/src/App.svelte
+++ b/src/App.svelte
@@ -48,7 +48,7 @@
OpenAPI.BASE = config.baseurl;
import { register as registerSW } from "./swmodule";
import TeamDetail from "./components/TeamDetail.svelte";
- import RunnerDetail from "./components/RunnerDetail.svelte";
+ import UserPermissions from "./components/UserPermissions.svelte";
store.init();
registerSW();
@@ -72,8 +72,13 @@
-
-
+
+
+
+
+
+
+
@@ -82,13 +87,8 @@
-
-
-
-
-
-
-
+
+
diff --git a/src/components/AddUserModal.svelte b/src/components/AddUserModal.svelte
index c8b232fe..6298e61a 100644
--- a/src/components/AddUserModal.svelte
+++ b/src/components/AddUserModal.svelte
@@ -28,7 +28,10 @@
$: isLastnameValid = lastname_input_value.trim().length !== 0;
$: isFirstnameValid = firstname_input_value.trim().length !== 0;
$: createbtnenabled =
- isFirstnameValid && isLastnameValid && isEmailValid && isPasswordValid;
+ isFirstnameValid &&
+ isLastnameValid &&
+ isPasswordValid &&
+ !(!isEmailValid && username_input_value.trim().length === 0);
(function () {
document.onkeydown = function (e) {
e = e || window.event;
@@ -50,19 +53,14 @@
text: "User is being added...",
duration: -1,
}).showToast();
- let postdata={
+ UserService.userControllerPost({
firstname: firstname_input_value,
lastname: lastname_input_value,
middlename: middlename_input_value,
- password: password_input_value
- };
- if(email_input_value!==""){
- postdata.email=email_input_value;
- }
- if(username_input_value!==""){
- postdata.username=username_input_value;
- }
- UserService.userControllerPost(postdata)
+ password: password_input_value,
+ email: email_input_value,
+ username: username_input_value,
+ })
.then((result) => {
firstname_input_value = "";
lastname_input_value = "";
@@ -77,7 +75,7 @@
backgroundColor: "linear-gradient(to right, #00b09b, #96c93d)",
}).showToast();
current_users.push(result);
- current_users=current_users;
+ current_users = current_users;
})
.catch((err) => {
//
@@ -238,18 +236,21 @@
- {#if !isEmailValid}
+
+ {#if !isEmailValid && username_input_value.trim().length === 0}
+
+ valid email or username is required
{/if}
diff --git a/src/components/UserDetail.svelte b/src/components/UserDetail.svelte
index e1170eba..e60db298 100644
--- a/src/components/UserDetail.svelte
+++ b/src/components/UserDetail.svelte
@@ -2,31 +2,63 @@
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 = [];
+ 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_objects = [];
$: usergroups_array = [];
- let usergroups_array_original = [];
+ $: search_permission = "";
user_promise.then((data) => {
+ let current_target = "";
+ let colorindex = -1;
+ // alphabetically sort permissions for color compatibility for target
+ data.permissions = data.permissions.sort();
+ 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;
data.groups.forEach((g) => {
- usergroups_array=usergroups_array.concat([g.id]);
+ usergroups_array = usergroups_array.concat([g.id]);
});
usergroups_array_original = usergroups_array;
allgroups.forEach((g) => {
@@ -36,37 +68,28 @@
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])
- });
- });
$: changes_performed = !lodashIsEqual(original_data, editable_userdata);
- $: groups_changed = JSON.stringify(usergroups_array)===JSON.stringify(usergroups_array_original);
- $: save_enabled = changes_performed||!groups_changed;
+ $: 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) {
- let tmp=[];
- usergroups_array.forEach(g => {
- const group=allgroups.find(obj=>obj.id===g);
- tmp.push(group);
- });
- editable_userdata.groups=tmp;
+ editable_userdata.groups = usergroups_array;
Toastify({
text: $_("updating-user"),
duration: 2500,
}).showToast();
UserService.userControllerPut(original_data.id, editable_userdata)
.then((resp) => {
- Object.assign(original_data, editable_userdata);
- original_data = editable_userdata;
- Object.assign(original_data, editable_userdata);
+ Object.assign(original_data, resp);
+ Object.assign(editable_userdata, resp);
+ original_data.permissions = resp.permissions;
+ usergroups_array = [];
+ resp.groups.forEach((g) => {
+ usergroups_array = usergroups_array.concat([g.id]);
+ });
+ usergroups_array_original = usergroups_array;
//
Toastify({
text: $_("user-updated"),
@@ -74,9 +97,7 @@
backgroundColor: "linear-gradient(to right, #00b09b, #96c93d)",
}).showToast();
})
- .catch((err) => {
- });
- } else {
+ .catch((err) => {});
}
}
function deleteUser() {
@@ -84,8 +105,7 @@
.then((resp) => {
location.replace("./");
})
- .catch((err) => {
- });
+ .catch((err) => {});
}
@@ -135,7 +155,7 @@
-