aboutsummaryrefslogtreecommitdiffstats
path: root/src/routes/(app)/register/+page.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)/register/+page.server.ts
parent20337319212896c484ac0f8d3dfbac3b8d26f089 (diff)
downloadcoinos-ui-df71664f20312e81134ee90ad561f55d3020ee0a.tar.gz
coinos-ui-df71664f20312e81134ee90ad561f55d3020ee0a.zip
typescript
Diffstat (limited to 'src/routes/(app)/register/+page.server.ts')
-rw-r--r--src/routes/(app)/register/+page.server.ts41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/routes/(app)/register/+page.server.ts b/src/routes/(app)/register/+page.server.ts
new file mode 100644
index 00000000..9cbb777e
--- /dev/null
+++ b/src/routes/(app)/register/+page.server.ts
@@ -0,0 +1,41 @@
+import { fail, redirect } from "@sveltejs/kit";
+import { fd, post, login } from "$lib/utils";
+
+export const load = async ({ parent }) => {
+ let { user } = await parent();
+ if (user) redirect(307, `/${user.username}`);
+
+ let index = Math.floor(Math.random() * 64) + 1;
+
+ return { index };
+};
+
+export const actions = {
+ default: async ({ cookies, request }) => {
+ let ip = request.headers.get("cf-connecting-ip");
+
+ let form = await fd(request);
+ let { profile, username, password, cipher, salt, pubkey, loginRedirect } =
+ form;
+ let user = { profile, username, password, cipher, salt, pubkey };
+ let error;
+
+ if (loginRedirect === "undefined") loginRedirect = undefined;
+
+ try {
+ await post("/register", { user }, { "cf-connecting-ip": ip });
+ } catch (e) {
+ error = e.message;
+ }
+
+ try {
+ await login(user, cookies, ip);
+ error = null;
+ } catch (e) {
+ error ||= e.message;
+ }
+
+ if (error) return fail(400, { error });
+ redirect(307, loginRedirect || `/${user.username}`);
+ },
+};