diff --git a/src/lib/userstore.ts b/src/lib/userstore.ts index cb36ead..235397d 100644 --- a/src/lib/userstore.ts +++ b/src/lib/userstore.ts @@ -2,93 +2,72 @@ import { AuthService, OpenAPI, type ResponseAuth } from '@odit/lfk-client-js'; import { writable } from 'svelte/store'; type UserState = { - access_token: string; - refresh_token: string; - isLoggedIn: boolean; - refreshInterval: NodeJS.Timer | undefined + access_token: string; + refresh_token: string; + isLoggedIn: boolean; + refreshInterval: NodeJS.Timer | undefined; }; - -const userStore = () => { - const state: UserState = { - access_token: '', - refresh_token: '', - isLoggedIn: false, - refreshInterval: undefined - }; - - const { subscribe, set, update } = writable(state); - - const methods = { - async login(resAuth: ResponseAuth) { - update((state: UserState) => { - if (!resAuth) { - return state; - } - - state.access_token = resAuth.access_token; - state.refresh_token = resAuth.refresh_token; - state.isLoggedIn = true; - state.refreshInterval = setInterval(() => { - this.refreshAuth(); - }, 2 * 60000) - - localStorage.setItem('kiosk-userdata', JSON.stringify(state)); - localStorage.setItem('kiosk-access_token', state.access_token); - OpenAPI.TOKEN = resAuth.access_token; - return state; - }); - }, - async refreshAuth() { - try { - const authRes = await AuthService.authControllerRefresh({ token: state.refresh_token }) as ResponseAuth; - OpenAPI.TOKEN = authRes.access_token; - } catch { - this.logout(); - } - }, - async loginFromStorage() { - console.log('loginFromStorage'); - const access_token = localStorage.getItem('kiosk-access_token'); - if (!access_token) { - throw new Error('Unauthorized'); - } - - const storagedata = localStorage.getItem('kiosk-userdata'); - const userdata = JSON.parse(storagedata || '{}') as UserState; - - update((state: UserState) => { - state.access_token = access_token; - state.refresh_token = userdata.refresh_token; - state.isLoggedIn = true; - state.refreshInterval = setInterval(() => { - this.refreshAuth(); - }, 2 * 60000); - OpenAPI.TOKEN = userdata.access_token; - - return state; - }); - - await this.refreshAuth(); - }, - async logout() { - update((state: UserState) => { - state.isLoggedIn = false; - state.access_token = ''; - state.refresh_token = ''; - state.refreshInterval = undefined; - localStorage.clear(); - return state; - }); - } - }; - - return { - subscribe, - set, - update, - state, - ...methods - }; +const state: UserState = { + access_token: '', + refresh_token: '', + isLoggedIn: false, + refreshInterval: undefined }; +const userState = writable(state); +async function auth_login(resAuth: ResponseAuth) { + if (!resAuth) { + return state; + } -export default userStore(); + state.access_token = resAuth.access_token; + state.refresh_token = resAuth.refresh_token; + state.isLoggedIn = true; + state.refreshInterval = setInterval(() => { + refreshAuth(); + }, 2 * 60000); + + localStorage.setItem('kiosk-userdata', JSON.stringify(state)); + localStorage.setItem('kiosk-access_token', state.access_token); + OpenAPI.TOKEN = resAuth.access_token; + userState.set(state); + return state; +} +async function refreshAuth() { + try { + const authRes = (await AuthService.authControllerRefresh({ + token: state.refresh_token + })) as ResponseAuth; + OpenAPI.TOKEN = authRes.access_token; + } catch { + logout(); + } +} +async function loginFromStorage() { + const access_token = localStorage.getItem('kiosk-access_token'); + if (!access_token) { + throw new Error('Unauthorized'); + } + + const storagedata = localStorage.getItem('kiosk-userdata'); + const userdata = JSON.parse(storagedata || '{}') as UserState; + + state.access_token = access_token; + state.refresh_token = userdata.refresh_token; + state.isLoggedIn = true; + state.refreshInterval = setInterval(() => { + refreshAuth(); + }, 2 * 60000); + OpenAPI.TOKEN = userdata.access_token; + userState.set(state); + return state; +} +async function logout() { + state.isLoggedIn = false; + state.access_token = ''; + state.refresh_token = ''; + state.refreshInterval = undefined; + localStorage.clear(); + return state; +} + +export { auth_login, logout, loginFromStorage, refreshAuth, userState }; diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 19923aa..21e02e9 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -2,10 +2,20 @@ import { OpenAPI } from '@odit/lfk-client-js'; import { env } from '$env/dynamic/public'; import '../app.postcss'; - import "@fontsource/athiti" - import Footer from '../components/footer.svelte'; + import '@fontsource/athiti'; + import { onMount } from 'svelte'; OpenAPI.BASE = env.PUBLIC_BASE_URL || 'https://run.lauf-fuer-kaya.de'; + onMount(() => { + window.addEventListener('keydown', (e) => { + if(e.altKey) e.preventDefault(); + // console.log(e); + // const { key, altKey } = e; + // if (key === 'F4' && altKey) { + // e.preventDefault(); + // } + }); + });
Für die Anmeldung vor Ort
-Für die Anmeldung vor Ort
++ Hierfür wird ein LfK Läufersystem Account benötigt +
+- Hierfür wird ein LfK Läufersystem Account benötigt -
-