ui: Redirect to main website if not connected
This commit is contained in:
parent
fea58acbd2
commit
91a1aa74a0
16
ui/src/lib/stores/usersession.ts
Normal file
16
ui/src/lib/stores/usersession.ts
Normal 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);
|
||||
}
|
||||
}
|
@ -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 {};
|
||||
}
|
||||
|
@ -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
16
ui/src/routes/+page.ts
Normal 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 {};
|
||||
}
|
6
ui/src/routes/en/+page.ts
Normal file
6
ui/src/routes/en/+page.ts
Normal 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');
|
||||
}
|
6
ui/src/routes/fr/+page.ts
Normal file
6
ui/src/routes/fr/+page.ts
Normal 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');
|
||||
}
|
Loading…
Reference in New Issue
Block a user