diff options
| author | Adam Soltys <[email protected]> | 2024-08-30 20:04:29 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2024-08-30 20:04:29 -0700 |
| commit | c9acca0218d47226c567da62c4a8bf97691c9b0d (patch) | |
| tree | 3986d1c5aac77f256ed1091290bc067c899e2196 /src/routes/(app)/+layout.server.ts | |
| parent | 9a7bb1df8ce1cff544982520add7ca8fdee799f6 (diff) | |
| download | coinos-ui-c9acca0218d47226c567da62c4a8bf97691c9b0d.tar.gz coinos-ui-c9acca0218d47226c567da62c4a8bf97691c9b0d.zip | |
typescript
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 }; +} |
