From d54235fb95b31565cb3a272a69622e07c04e04e5 Mon Sep 17 00:00:00 2001 From: phoebus-84 Date: Tue, 18 Feb 2025 13:07:35 +0100 Subject: [PATCH] fix: try login again the user if refresh token goes wrong --- src/lib/slangroom/refreshAuthToken.slang | 2 -- src/routes/+layout.svelte | 14 ++------------ src/routes/[[lang]]/(auth)/login/_lib/index.ts | 17 +++++++++++------ 3 files changed, 13 insertions(+), 20 deletions(-) diff --git a/src/lib/slangroom/refreshAuthToken.slang b/src/lib/slangroom/refreshAuthToken.slang index 352fbf7b..26c2b2a8 100644 --- a/src/lib/slangroom/refreshAuthToken.slang +++ b/src/lib/slangroom/refreshAuthToken.slang @@ -1,8 +1,6 @@ Rule unknown ignore Given I connect to 'pb_address' and start capacitor pb client -Given I send my_credentials 'my_credentials' and login and output into 'login_output' Given I refresh token and output into 'refresh_output' -Given I have a 'string dictionary' named 'login_output' Given I have a 'string dictionary' named 'refresh_output' Then print data \ No newline at end of file diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 5c50b6d7..58409229 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -20,16 +20,14 @@ import { m } from '$lib/i18n'; import { Network } from '@capacitor/network'; import { debugPopup, debugPopupContent } from '$lib/components/organisms/debug/debug'; - import { getUser } from '$lib/preferences/user'; - import { getUserPassword } from '$lib/preferences/userPassword'; import { refreshAuth } from './[[lang]]/(auth)/login/_lib'; - $: refreshUser(); + $: refreshAuth(); const controller = new AbortController(); const signal = controller.signal; - let isConnected: boolean; + let isConnected: boolean = true; const originalXhrOpen = XMLHttpRequest.prototype.open; const originalXhrSend = XMLHttpRequest.prototype.send; @@ -73,14 +71,6 @@ return originalXhrSend.apply(this, [body]); }; - const refreshUser = async () => { - const user = await getUser(); - const password = await getUserPassword(); - if (user && password) { - await refreshAuth(user.email, password); - } - }; - onMount(async () => { isConnected = (await Network.getStatus()).connected; Network.addListener('networkStatusChange', (status) => { diff --git a/src/routes/[[lang]]/(auth)/login/_lib/index.ts b/src/routes/[[lang]]/(auth)/login/_lib/index.ts index 267b936e..ffebd32d 100644 --- a/src/routes/[[lang]]/(auth)/login/_lib/index.ts +++ b/src/routes/[[lang]]/(auth)/login/_lib/index.ts @@ -16,7 +16,7 @@ import getPublicKeysScript from '$lib/slangroom/getPublicKeys.slang?raw'; import askResetPasswordScript from '$lib/slangroom/askResetPassword.slang?raw'; import checkUserExistScript from '$lib/slangroom/checkUserExist.slang?raw'; import refreshAuthToken from '$lib/slangroom/refreshAuthToken.slang?raw'; -import { setUserPassword } from '$lib/preferences/userPassword'; +import { getUserPassword, setUserPassword } from '$lib/preferences/userPassword'; // @@ -192,15 +192,20 @@ export const askResetPassword = async (email: string) => { return res.result.output; }; -export const refreshAuth = async (email: string, password: string) => { +export const refreshAuth = async () => { + const user = await getUser(); + const password = await getUserPassword(); + if (!(user || password)) return; const data = { pb_address: backendUri, my_credentials: { - email, + email: user!.email, password } }; - const res = await slangroom.execute(refreshAuthToken, { data }); - console.log(res); - return res.result.output; + try { + await slangroom.execute(refreshAuthToken, { data }); + } catch { + await slangroom.execute(loginScript, { data }); + } };