ui: Redirect to main website if not connected

This commit is contained in:
nemunaire 2022-11-22 17:19:50 +01:00
parent fea58acbd2
commit 91a1aa74a0
6 changed files with 50 additions and 2 deletions

View File

@ -0,0 +1,16 @@
import { writable, type Writable } from 'svelte/store';
import type { User } from '$lib/model/user';
export const userSession: Writable<null | User> = writable(null);
export async function refreshUserSession() {
const res = await fetch('/api/auth', {headers: {'Accept': 'application/json'}})
if (res.status == 200) {
const user = new User(await res.json());
userSession.update(user);
return user
} else {
userSession.set(null);
throw new Error((await res.json()).errmsg);
}
}

View File

@ -1,5 +1,6 @@
import type { Load } from '@sveltejs/kit';
import { refreshUserSession } from '$lib/stores/usersession';
import { config as tsConfig, locale, loadTranslations } from '$lib/translations';
export const ssr = false;
@ -9,5 +10,10 @@ export const load: Load = async({ url }) => {
await loadTranslations(initLocale, url.pathname);
// Load user session if any
try {
await refreshUserSession();
} catch {}
return {};
}

View File

@ -1,2 +0,0 @@
<h1>Welcome to SvelteKit</h1>
<p>Visit <a href="https://kit.svelte.dev">kit.svelte.dev</a> to read the documentation</p>

16
ui/src/routes/+page.ts Normal file
View File

@ -0,0 +1,16 @@
import { redirect } from '@sveltejs/kit';
import type { Load } from '@sveltejs/kit';
import { get_store_value } from 'svelte/internal';
import { userSession } from '$lib/stores/usersession';
import { config as tsConfig, locale } from '$lib/translations';
export const load: Load = async() => {
// If not connected, redirect to main website in the right language
if (!get_store_value(userSession)) {
const initLocale = locale.get() || window.navigator.language || window.navigator.languages[0] || tsConfig.fallbackLocale;
throw redirect(302, '/' + initLocale);
}
return {};
}

View File

@ -0,0 +1,6 @@
import { redirect } from '@sveltejs/kit';
import type { Load } from '@sveltejs/kit';
export const load: Load = async() => {
throw redirect(302, '/join');
}

View File

@ -0,0 +1,6 @@
import { redirect } from '@sveltejs/kit';
import type { Load } from '@sveltejs/kit';
export const load: Load = async() => {
throw redirect(302, '/join');
}