From a7668fc070c560f6d2a0e946a7dbc577132e39e0 Mon Sep 17 00:00:00 2001 From: mytja Date: Sun, 17 Apr 2022 21:13:31 +0200 Subject: [PATCH] A lot of improvements: - Principal & assistant principal role - Resolves https://github.com/MeetPlan/MeetPlanFrontend/issues/24 & Resolves https://github.com/MeetPlan/MeetPlanFrontend/issues/23 - Principal name in official documents - Linked to https://github.com/MeetPlan/MeetPlanFrontend/issues/15 - Start of school psychologist role - Linked to https://github.com/MeetPlan/MeetPlanFrontend/issues/22 - And a lot more small tweaks and big security updates --- src/Admin/Users.svelte | 28 ++++++++++++++++++++++------ src/ClassUser.svelte | 8 +++++--- src/Classes.svelte | 2 +- src/Drawer.svelte | 8 ++++---- src/Meals.svelte | 4 ++-- src/Meeting.svelte | 4 ++-- src/Samotestiranje.svelte | 2 +- 7 files changed, 37 insertions(+), 19 deletions(-) diff --git a/src/Admin/Users.svelte b/src/Admin/Users.svelte index 48c2433..6229914 100644 --- a/src/Admin/Users.svelte +++ b/src/Admin/Users.svelte @@ -10,6 +10,8 @@ let loaded: boolean = false; let items = []; + let principalId = undefined; + loadThings(); function loadThings() { @@ -20,11 +22,18 @@ .then((json) => { items = json["data"]; loaded = true; + for (let i in items) { + let item = items[i] + if (item.Role === "principal") { + principalId = item.ID; + break + } + } }, ); } - let choices = ["student", "parent", "teacher", "admin"]; + let choices = ["student", "parent", "teacher", "principal assistant", "principal"]; import jwt_decode, { JwtPayload } from "jwt-decode"; import { navigate } from "svelte-routing"; @@ -58,7 +67,7 @@ {item["Name"]} {item["Email"]} - {#if decoded["email"] !== item["Email"]} + {#if decoded["user_id"] !== item["ID"]} { e.stopPropagation(); console.log(e); @@ -66,6 +75,8 @@ let fd = new FormData(); fd.append("role", e.detail.segmentId); + principalId = undefined; + fetch(`${baseurl}/user/role/update/${item["ID"]}`, { headers: {"Authorization": "Bearer " + localStorage.getItem("key")}, body: fd, @@ -77,10 +88,15 @@ }, ); }} bind:selected="{item['Role']}"> - - - - + {#if + (decoded["role"] !== "principal assistant" && segment !== "principal") || + (decoded["role"] !== "principal assistant" && segment !== "principal assistant")} + {#if !(segment === "principal" && principalId !== undefined && principalId !== item.ID)} + + + + {/if} + {/if} {/if} diff --git a/src/ClassUser.svelte b/src/ClassUser.svelte index 1573d3f..477c8df 100644 --- a/src/ClassUser.svelte +++ b/src/ClassUser.svelte @@ -74,7 +74,9 @@ fetch(`${baseurl}/my/grades?studentId=${studentId}`, {headers: {"Authorization": "Bearer " + localStorage.getItem("key")}}) .then((r) => r.json()) .then((r) => { - grades = r["data"]; + if (grades.data !== "Forbidden") { + grades = r["data"]; + } }); } @@ -138,7 +140,7 @@ {#if userData}

{userData.Name}

{/if} - {#if decoded.role === "admin"} + {#if decoded.role === "admin" || decoded.role === "principal" || decoded.role === "principal assistant" || decoded.role === "school psychologist"}