diff options
| author | Adam Soltys <[email protected]> | 2025-07-07 22:34:27 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2025-07-07 22:34:27 -0700 |
| commit | 209b1e64f1c4dda16a50e57c6570a3a35953085d (patch) | |
| tree | 4e8b260e5b8f832b03dd41f17f65b42aba58f268 /src/lib | |
| parent | 1b1718a4b64275bac8e1fe519d33c67e3a95f2c5 (diff) | |
| download | coinos-ui-209b1e64f1c4dda16a50e57c6570a3a35953085d.tar.gz coinos-ui-209b1e64f1c4dda16a50e57c6570a3a35953085d.zip | |
fund sweep
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/random.ts | 20 | ||||
| -rw-r--r-- | src/lib/utils.ts | 32 |
2 files changed, 52 insertions, 0 deletions
diff --git a/src/lib/random.ts b/src/lib/random.ts new file mode 100644 index 00000000..36dde0cc --- /dev/null +++ b/src/lib/random.ts @@ -0,0 +1,20 @@ +import { + NumberDictionary, + animals, + colors, + uniqueNamesGenerator, +} from "unique-names-generator"; + +export const randomName = () => + uniqueNamesGenerator({ + dictionaries: [animals, NumberDictionary.generate({ min: 10, max: 99 })], + length: 2, + separator: "", + }); + +export const randomPassword = () => + uniqueNamesGenerator({ + dictionaries: [colors, NumberDictionary.generate({ min: 100, max: 999 })], + length: 2, + separator: "", + }); diff --git a/src/lib/utils.ts b/src/lib/utils.ts index 2e1bb840..31d93fde 100644 --- a/src/lib/utils.ts +++ b/src/lib/utils.ts @@ -3,6 +3,7 @@ import { goto } from "$app/navigation"; import { page } from "$app/stores"; import { PUBLIC_COINOS_NETWORK, PUBLIC_COINOS_URL } from "$env/static/public"; import { bytesToHex } from "@noble/hashes/utils"; +import { fail as svelteFail, redirect } from "@sveltejs/kit"; import { toast } from "@zerodevx/svelte-toast"; import { differenceInDays, @@ -456,3 +457,34 @@ export const ago = (t) => { const days = differenceInDays(now, date); return `${days}d`; }; + +export const register = async (user, ip, cookies, loginRedirect) => { + let error; + + let sk; + try { + ({ sk } = await post("/register", { user }, { "cf-connecting-ip": ip })); + } catch (e) { + ({ message: error } = e as Error); + } + + try { + await login(user, cookies, ip); + error = null; + } catch (e) { + const { message } = e as Error; + error ||= message; + } + + const expires = new Date(); + expires.setSeconds(expires.getSeconds() + 21000000); + cookies.set("sk", sk, { + path: "/", + expires, + httpOnly: false, + sameSite: "lax", + }); + + if (error) return svelteFail(400, { error }); + redirect(303, loginRedirect || `/${user.username}`); +}; |
