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 | df71664f20312e81134ee90ad561f55d3020ee0a (patch) | |
| tree | 3986d1c5aac77f256ed1091290bc067c899e2196 /src/routes/(app)/+layout.server.ts | |
| parent | 20337319212896c484ac0f8d3dfbac3b8d26f089 (diff) | |
| download | coinos-ui-df71664f20312e81134ee90ad561f55d3020ee0a.tar.gz coinos-ui-df71664f20312e81134ee90ad561f55d3020ee0a.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 }; +} |
