diff options
Diffstat (limited to 'src/routes/(app)/+layout.server.ts')
| -rw-r--r-- | src/routes/(app)/+layout.server.ts | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/src/routes/(app)/+layout.server.ts b/src/routes/(app)/+layout.server.ts new file mode 100644 index 00000000..655a9425 --- /dev/null +++ b/src/routes/(app)/+layout.server.ts @@ -0,0 +1,48 @@ +import { redirect } from "@sveltejs/kit"; + import { get, auth, protectedRoutes } from "$lib/utils"; + +export async function load({ cookies, request, url, params }) { + let { pathname } = url; + let token = cookies.get("token"); + let rate, + rates = { USD: 1 }; + + let user; + if (token) { + try { + user = await get("/me", auth(cookies)); + } catch (e) {} + } + + if (user?.needsMigration) { + redirect(307, `/migrate`); + } + + if ( + user && + ["/login", "/register"].includes(pathname) && + request.method === "GET" + ) { + redirect(307, `/${user.username}`); + } + + if ( + protectedRoutes.find((p) => pathname.match(p)) && + (!user || user.username !== params.username) + ) { + redirect(307, "/login"); + } + + if (user && !user.pubkey && !pathname.includes("generate")) { + redirect(303, `/${user.username}/generate`); + } + + try { + rate = await get("/rate"); + rates = await get("/rates"); + } catch (e) { + console.log(e); + } + + return { user, token, rate, rates }; +} |
