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)/register/+page.server.ts | |
| parent | 20337319212896c484ac0f8d3dfbac3b8d26f089 (diff) | |
| download | coinos-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.ts | 41 |
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}`); + }, +}; |
