aboutsummaryrefslogtreecommitdiffstats
path: root/src/routes/(app)/+layout.server.ts
diff options
context:
space:
mode:
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 };
+}