From f2574b516e879dfc4ddba7a37f8a6fe0c71d1e3b Mon Sep 17 00:00:00 2001 From: Azalea <22280294+hykilpikonna@users.noreply.github.com> Date: Sat, 2 Mar 2024 19:27:13 -0500 Subject: [PATCH] [F] Fix: Automatically redirect users if not logged in --- AquaNet/src/libs/sdk.ts | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/AquaNet/src/libs/sdk.ts b/AquaNet/src/libs/sdk.ts index f9b30629..77c0fb46 100644 --- a/AquaNet/src/libs/sdk.ts +++ b/AquaNet/src/libs/sdk.ts @@ -78,7 +78,15 @@ export async function post(endpoint: string, params: any, init?: RequestInitWith if (!res.ok) { const text = await res.text() console.error(`${res.status}: ${text}`) - throw new Error(`${text}`) + + // Try to parse as json + let json + try { + json = JSON.parse(text) + } catch (e) { + throw new Error(text) + } + if (json.error) throw new Error(json.error) } const ret = res.json() @@ -102,16 +110,22 @@ async function login(user: { email: string, password: string, turnstile: string localStorage.setItem('token', data.token) } +const isLoggedIn = () => !!localStorage.getItem('token') +const ensureLoggedIn = () => !isLoggedIn() && (window.location.href = '/') + export const USER = { register, login, confirmEmail: (token: string) => post('/api/v2/user/confirm-email', { token }), - me: (): Promise => - post('/api/v2/user/me', {}), - isLoggedIn: () => !!localStorage.getItem('token'), + me: (): Promise => { + ensureLoggedIn() + return post('/api/v2/user/me', {}) + }, keychip: (): Promise => post('/api/v2/user/keychip', {}).then(it => it.keychip), + isLoggedIn, + ensureLoggedIn, } export const CARD = {