From 22c302855e6c4dc48b11ecbd457cbcebb113c8ff Mon Sep 17 00:00:00 2001 From: PeterJFB Date: Tue, 9 May 2023 22:54:56 +0200 Subject: [PATCH] Add all moderator pages to svelte --- app/routes/index.ts | 3 - src/lib/assets/deactivate.mp3 | Bin 0 -> 81639 bytes src/lib/utils/callApi.ts | 38 +++++- src/lib/utils/cardKeyScanStore.ts | 2 +- src/lib/utils/userApi.ts | 2 +- src/routes/(election)/+page.svelte | 17 +-- src/routes/(election)/retrieve/+page.svelte | 2 +- src/routes/auth/login/+page.svelte | 4 +- .../(useCardKey)/activate_user/+page.svelte | 2 +- .../(useCardKey)/change_card/+page.svelte | 81 ++++++++++++ .../(useCardKey)/create_user/+page.svelte | 124 ++++++++++++++++++ .../deactivate_users/+page.svelte | 34 +++++ .../(useCardKey)/generate_user/+page.svelte | 73 +++++++++++ .../(useCardKey)/manage_register/+page.svelte | 86 ++++++++++++ .../moderator/(useCardKey)/qr/+page.svelte | 2 +- src/routes/moderator/change_card/+page.svelte | 0 src/routes/moderator/create_user/+page.svelte | 0 .../moderator/deactivate_users/+page.svelte | 0 .../moderator/generate_user/+page.svelte | 0 .../moderator/manage_register/+page.svelte | 0 20 files changed, 441 insertions(+), 29 deletions(-) create mode 100644 src/lib/assets/deactivate.mp3 create mode 100644 src/routes/moderator/(useCardKey)/change_card/+page.svelte create mode 100644 src/routes/moderator/(useCardKey)/create_user/+page.svelte create mode 100644 src/routes/moderator/(useCardKey)/deactivate_users/+page.svelte create mode 100644 src/routes/moderator/(useCardKey)/generate_user/+page.svelte create mode 100644 src/routes/moderator/(useCardKey)/manage_register/+page.svelte delete mode 100644 src/routes/moderator/change_card/+page.svelte delete mode 100644 src/routes/moderator/create_user/+page.svelte delete mode 100644 src/routes/moderator/deactivate_users/+page.svelte delete mode 100644 src/routes/moderator/generate_user/+page.svelte delete mode 100644 src/routes/moderator/manage_register/+page.svelte diff --git a/app/routes/index.ts b/app/routes/index.ts index 9153c0aa..bc8f727e 100644 --- a/app/routes/index.ts +++ b/app/routes/index.ts @@ -33,9 +33,6 @@ router.get('/admin*', checkAdmin, (req, res, next) => { // Make sure all moderator routes are secure router.get('/moderator*', checkModerator, (req, res, next) => { - if (env.NODE_ENV !== 'development') { - return res.render('moderatorIndex'); // Remove when migration is finished - } next(); }); diff --git a/src/lib/assets/deactivate.mp3 b/src/lib/assets/deactivate.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..f8f81bd31f429e8c8764013e4c39725c77765039 GIT binary patch literal 81639 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ⅇ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 literal 0 HcmV?d00001 diff --git a/src/lib/utils/callApi.ts b/src/lib/utils/callApi.ts index 27f0464a..7d78dfb0 100644 --- a/src/lib/utils/callApi.ts +++ b/src/lib/utils/callApi.ts @@ -8,34 +8,58 @@ const callApi = async < input: string, method: RequestInit['method'] = 'GET', body?: ReqBody, - headers?: RequestInit['headers'] -): Promise<{ status: number; body: ResBody }> => { + headers?: RequestInit['headers'], + fetchFunc = fetch +): Promise< + | { + result: 'success'; + status: number; + body: ResBody; + } + | { + result: 'failure'; + status: number; + body: { + message: string; + name: string; + }; + } +> => { let xsrfToken = get(xsrf); if (!xsrfToken && method.toUpperCase() !== 'GET') { await generateXSRFToken(); xsrfToken = get(xsrf); } - const res = await fetch('/api' + input, { + const res = await fetchFunc('/api' + input, { headers: { ...headers, - 'Content-Type': body ? 'application/json' : undefined, + 'content-type': body ? 'application/json' : undefined, 'X-XSRF-TOKEN': xsrfToken, }, method, body: body ? JSON.stringify(body) : undefined, }); - let resBody: ResBody; + let resBody: ResBody & { message: string; name: string }; if (res.headers.get('Content-Type')?.includes('application/json')) { resBody = await res.json(); } - return { status: res.status, body: resBody }; + + if (res.status < 400) { + return { result: 'success', status: res.status, body: resBody }; + } else { + return { + result: 'failure', + status: res.status, + body: resBody, + }; + } }; export const generateXSRFToken = async () => { const res = await callApi<{ csrfToken: string }>('/auth/token'); - if (res.status === 200) { + if (res.result === 'success') { xsrf.set(res.body.csrfToken); } else { console.error('Could not retrieve csrf-token'); diff --git a/src/lib/utils/cardKeyScanStore.ts b/src/lib/utils/cardKeyScanStore.ts index c248ca0f..036dd28a 100644 --- a/src/lib/utils/cardKeyScanStore.ts +++ b/src/lib/utils/cardKeyScanStore.ts @@ -114,11 +114,11 @@ export const cardKeyScanStore = writable<{ cardKey: number; time: number }>( }; } } catch (e) { + console.error(e); if (window.navigator.userAgent.includes('Android')) { alerts.push(e, 'ERROR'); } window.location.assign('/moderator/serial_error'); - console.error(e); } } diff --git a/src/lib/utils/userApi.ts b/src/lib/utils/userApi.ts index 2253d4f9..50dde710 100644 --- a/src/lib/utils/userApi.ts +++ b/src/lib/utils/userApi.ts @@ -17,7 +17,7 @@ export const changeCard = (user: Record) => { }; export const countActiveUsers = () => { - return callApi('/user/count?active=true'); + return callApi<{ users: number }>('/user/count?active=true'); }; export const deactivateNonAdminUsers = () => { diff --git a/src/routes/(election)/+page.svelte b/src/routes/(election)/+page.svelte index bf308935..33bbb490 100644 --- a/src/routes/(election)/+page.svelte +++ b/src/routes/(election)/+page.svelte @@ -21,30 +21,23 @@ let priorities: IAlternative[] = []; - type ErrorCode = { - name: string; - }; - type ErrorMessage = { - message: string; - }; - const getActiveElection = async (accessCode: string = '') => { - const res = await callApi( + const res = await callApi( '/election/active?accessCode=' + accessCode ); - if (res.status === 200) { + if (res.result === 'success') { priorities = []; electionExists = true; activeElection = res.body; errorCode = ''; } else { errorCode = res.body.name; - if (res.status == 404) { + if (res.status === 404) { electionExists = false; activeElection = null; accessCode = ''; - } else if (res.status == 403) { + } else if (res.status === 403) { electionExists = true; activeElection = null; accessCode = ''; @@ -62,7 +55,7 @@ election, priorities, }); - if (res.status === 201) { + if (res.result === 'success') { activeElection = null; priorities = []; electionExists = false; diff --git a/src/routes/(election)/retrieve/+page.svelte b/src/routes/(election)/retrieve/+page.svelte index 9783b904..79b9b4fc 100644 --- a/src/routes/(election)/retrieve/+page.svelte +++ b/src/routes/(election)/retrieve/+page.svelte @@ -24,7 +24,7 @@ const res = await callApi('/vote', 'GET', null, { 'Vote-Hash': voteHash, }); - if (res.status === 200) { + if (res.result === 'success') { vote = res.body; } }; diff --git a/src/routes/auth/login/+page.svelte b/src/routes/auth/login/+page.svelte index eaff0c99..303d2320 100644 --- a/src/routes/auth/login/+page.svelte +++ b/src/routes/auth/login/+page.svelte @@ -33,9 +33,9 @@ Object.fromEntries(new FormData(e.currentTarget)) ); - if (res.status == 200) { + if (res.result === 'success') { window.location.assign('/'); - } else if (res.status == 401) { + } else if (res.status === 401) { feedback = 'authfailed'; } else { feedback = 'unknownError'; diff --git a/src/routes/moderator/(useCardKey)/activate_user/+page.svelte b/src/routes/moderator/(useCardKey)/activate_user/+page.svelte index a19b9610..46139448 100644 --- a/src/routes/moderator/(useCardKey)/activate_user/+page.svelte +++ b/src/routes/moderator/(useCardKey)/activate_user/+page.svelte @@ -19,7 +19,7 @@ if (firstCall || !cardKey) return (firstCall = false); const res = await userApi.toggleUser(cardKey); - if (res.status === 200) { + if (res.result === 'success') { const lastAlert = alerts.getLastAlert(); if (dingAudio) dingAudio.play(); diff --git a/src/routes/moderator/(useCardKey)/change_card/+page.svelte b/src/routes/moderator/(useCardKey)/change_card/+page.svelte new file mode 100644 index 00000000..ec19f6a6 --- /dev/null +++ b/src/routes/moderator/(useCardKey)/change_card/+page.svelte @@ -0,0 +1,81 @@ + + +

diff --git a/src/routes/moderator/(useCardKey)/create_user/+page.svelte b/src/routes/moderator/(useCardKey)/create_user/+page.svelte new file mode 100644 index 00000000..2e5e2a80 --- /dev/null +++ b/src/routes/moderator/(useCardKey)/create_user/+page.svelte @@ -0,0 +1,124 @@ + + +
+
+
+ +
+ {#if !$cardKeyScanStore.cardKey} +

Kortnummer er påkrevd

+ {/if} +
+ + {#if !usernameMinLength} +

Brukernavn må være minst 5 tegn

+ {/if} + {#if !usernamePattern} +

+ Brukernavn kan bare inneholde tall eller bokstaver fra A-Z +

+ {/if} +
+
+ + {#if !passwordMinLength} +

Passord må være minst 6 tegn

+ {/if} +
+
+ + {#if !passwordMatch} +

Må være lik passordet

+ {/if} +
+ +
+
diff --git a/src/routes/moderator/(useCardKey)/deactivate_users/+page.svelte b/src/routes/moderator/(useCardKey)/deactivate_users/+page.svelte new file mode 100644 index 00000000..88848c63 --- /dev/null +++ b/src/routes/moderator/(useCardKey)/deactivate_users/+page.svelte @@ -0,0 +1,34 @@ + + +
+

Deaktivere alle brukere slik at all alle må reaktivere sin bruker.

+
    +
  1. Fysisk: Scanne seg inn i lokale med adgangskort
  2. +
  3. Digitalt: Skrive inn kode ved neste valg
  4. +
+ +
diff --git a/src/routes/moderator/(useCardKey)/generate_user/+page.svelte b/src/routes/moderator/(useCardKey)/generate_user/+page.svelte new file mode 100644 index 00000000..9827d138 --- /dev/null +++ b/src/routes/moderator/(useCardKey)/generate_user/+page.svelte @@ -0,0 +1,73 @@ + + +
+
+
+ + +
+
+ + +
+ +
+
diff --git a/src/routes/moderator/(useCardKey)/manage_register/+page.svelte b/src/routes/moderator/(useCardKey)/manage_register/+page.svelte new file mode 100644 index 00000000..f7aeca59 --- /dev/null +++ b/src/routes/moderator/(useCardKey)/manage_register/+page.svelte @@ -0,0 +1,86 @@ + + +
+
+

Genererte brukere

+

Tabellen under viser en oversikt over alle genererte brukere.

+ Brukere havner kun i denne oversikten hvis de er opprettet med "Generer bruker" + fanen, eller direkte fra API'et. Brukere laget med "Registrer bruker" eller "QR" + vil ikke vises under. +
+
+
+
+
+
+ Totalt {registers.length} genererte brukere +
+ +
+ + + + + + + + + + {#each registers.filter((r) => !searchText || Object.values(r).some((v) => typeof v === 'string' && v.includes(searchText))) as register (register._id)} + + + + + + + {/each} + +
IdentifikatorEmailFullført registrering
{register.identifier}{register.email} + {register.user ? 'Nei' : 'Ja'} + + +
+
diff --git a/src/routes/moderator/(useCardKey)/qr/+page.svelte b/src/routes/moderator/(useCardKey)/qr/+page.svelte index 37a74ba6..9cae2395 100644 --- a/src/routes/moderator/(useCardKey)/qr/+page.svelte +++ b/src/routes/moderator/(useCardKey)/qr/+page.svelte @@ -36,7 +36,7 @@ cardKey: cardKeyString, }); - if (res.status === 201) { + if (res.result === 'success') { goto( `/moderator/showqr/?token=${username}:${password}:${code}&cardKey=${cardKeyString}` ); diff --git a/src/routes/moderator/change_card/+page.svelte b/src/routes/moderator/change_card/+page.svelte deleted file mode 100644 index e69de29b..00000000 diff --git a/src/routes/moderator/create_user/+page.svelte b/src/routes/moderator/create_user/+page.svelte deleted file mode 100644 index e69de29b..00000000 diff --git a/src/routes/moderator/deactivate_users/+page.svelte b/src/routes/moderator/deactivate_users/+page.svelte deleted file mode 100644 index e69de29b..00000000 diff --git a/src/routes/moderator/generate_user/+page.svelte b/src/routes/moderator/generate_user/+page.svelte deleted file mode 100644 index e69de29b..00000000 diff --git a/src/routes/moderator/manage_register/+page.svelte b/src/routes/moderator/manage_register/+page.svelte deleted file mode 100644 index e69de29b..00000000