diff --git a/frontend/src/lib/utils/redirection-util.ts b/frontend/src/lib/utils/redirection-util.ts index 4d411cc6..4240d83e 100644 --- a/frontend/src/lib/utils/redirection-util.ts +++ b/frontend/src/lib/utils/redirection-util.ts @@ -13,6 +13,7 @@ export function getAuthRedirectPath(path: string, user: User | null) { path.startsWith('/lc/') || path == '/signup' || path == '/signup/setup' || + path == '/setup' || path.startsWith('/st/'); const isPublicPath = ['/authorize', '/device', '/health', '/healthz'].includes(path); const isAdminPath = path == '/settings/admin' || path.startsWith('/settings/admin/'); diff --git a/frontend/src/routes/+layout.svelte b/frontend/src/routes/+layout.svelte index 84dcc32f..3830027a 100644 --- a/frontend/src/routes/+layout.svelte +++ b/frontend/src/routes/+layout.svelte @@ -1,12 +1,9 @@ {#if !appConfig} diff --git a/frontend/src/routes/+layout.ts b/frontend/src/routes/+layout.ts index 9e945030..7f5a9015 100644 --- a/frontend/src/routes/+layout.ts +++ b/frontend/src/routes/+layout.ts @@ -3,11 +3,13 @@ import UserService from '$lib/services/user-service'; import appConfigStore from '$lib/stores/application-configuration-store'; import userStore from '$lib/stores/user-store'; import { setLocaleForLibraries } from '$lib/utils/locale.util'; +import { getAuthRedirectPath } from '$lib/utils/redirection-util'; +import { redirect } from '@sveltejs/kit'; import type { LayoutLoad } from './$types'; export const ssr = false; -export const load: LayoutLoad = async () => { +export const load: LayoutLoad = async ({ url }) => { const userService = new UserService(); const appConfigService = new AppConfigService(); @@ -22,6 +24,11 @@ export const load: LayoutLoad = async () => { const [user, appConfig] = await Promise.all([userPromise, appConfigPromise]); + const redirectPath = getAuthRedirectPath(url.pathname, user); + if (redirectPath) { + redirect(302, redirectPath); + } + if (user) { await userStore.setUser(user); }