summaryrefslogtreecommitdiffstats
path: root/apps/portal/src/app/index.svelte
diff options
context:
space:
mode:
Diffstat (limited to 'apps/portal/src/app/index.svelte')
-rw-r--r--apps/portal/src/app/index.svelte35
1 files changed, 29 insertions, 6 deletions
diff --git a/apps/portal/src/app/index.svelte b/apps/portal/src/app/index.svelte
index 0082aa2..fe143bc 100644
--- a/apps/portal/src/app/index.svelte
+++ b/apps/portal/src/app/index.svelte
@@ -2,32 +2,54 @@
<svelte:window bind:online={online}/>
<script>
- import {projects_base} from "$shared/lib/configuration";
- import Router from "svelte-spa-router";
+ import Router, {replace} from "svelte-spa-router";
import {wrap} from "svelte-spa-router/wrap";
import {is_active} from "$shared/lib/session";
import SignUp from "$app/pages/sign-up.svelte";
import Login from "$app/pages/login.svelte";
import Forgot from "$app/pages/forgot.svelte";
import Reset from "$app/pages/reset-password.svelte";
+ import Home from "$app/pages/home.svelte";
+ import ProfileHome from "$app/pages/profile/index.svelte";
import PreHeader from "$shared/components/pre-header.svelte";
let online = true;
- async function user_is_logged_in() {
- if (await is_active()) {
- location.replace(projects_base("#/home"));
+ const publicRoutes = ["/login", "/signup", "/reset-password", "/forgot"];
+ const guardedRoutes = ["/", "/home", "/profile"];
+
+ async function user_is_logged_in(event) {
+ const isActive = await is_active();
+ if (!isActive && !publicRoutes.includes(event.route)) {
+ return false;
+ }
+ if (isActive && !guardedRoutes.includes(event.route)) {
+ await replace("/");
}
return true;
}
+ function route_guarded(event) {
+ if (!publicRoutes.includes(event.detail.route)) {
+ replace("/login");
+ }
+ }
+
const routes = {
"/login": wrap({
component: Login,
conditions: [user_is_logged_in],
}),
+ "/home": wrap({
+ component: Home,
+ conditions: [user_is_logged_in],
+ }),
+ "/profile": wrap({
+ component: ProfileHome,
+ conditions: [user_is_logged_in],
+ }),
"/": wrap({
- component: Login,
+ component: Home,
conditions: [user_is_logged_in],
}),
"/signup": wrap({
@@ -50,6 +72,7 @@
<Router
{routes}
restoreScrollState={true}
+ on:conditionsFailed={route_guarded}
on:routeLoading={() => {
document.getElementById("loader").style.display = "inline-block";
}}