aboutsummaryrefslogtreecommitdiffstats
path: root/src/routes/(app)/+layout.server.ts
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2024-08-30 20:04:29 -0700
committerAdam Soltys <[email protected]>2024-08-30 20:04:29 -0700
commitdf71664f20312e81134ee90ad561f55d3020ee0a (patch)
tree3986d1c5aac77f256ed1091290bc067c899e2196 /src/routes/(app)/+layout.server.ts
parent20337319212896c484ac0f8d3dfbac3b8d26f089 (diff)
downloadcoinos-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.ts48
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 };
+}