diff options
| -rw-r--r-- | src/lib/utils.ts | 2 | ||||
| -rw-r--r-- | src/routes/(static)/register/+page.server.ts | 7 |
2 files changed, 8 insertions, 1 deletions
diff --git a/src/lib/utils.ts b/src/lib/utils.ts index 28a219e1..ad95f29a 100644 --- a/src/lib/utils.ts +++ b/src/lib/utils.ts @@ -488,3 +488,5 @@ export const register = async (user, ip, cookies, loginRedirect) => { if (error) return svelteFail(400, { error }); redirect(303, loginRedirect || `/${user.username}`); }; + +export const captchas = new Set(); diff --git a/src/routes/(static)/register/+page.server.ts b/src/routes/(static)/register/+page.server.ts index cddd97ea..284c5a61 100644 --- a/src/routes/(static)/register/+page.server.ts +++ b/src/routes/(static)/register/+page.server.ts @@ -1,4 +1,5 @@ -import { fd, get, register } from "$lib/utils"; +import { randomUUID } from "crypto"; +import { fd, get, captchas, register } from "$lib/utils"; import { redirect } from "@sveltejs/kit"; export const load = async ({ parent }) => { @@ -8,6 +9,10 @@ export const load = async ({ parent }) => { const index = Math.floor(Math.random() * 64) + 1; const { challenge } = await get("/challenge"); + const captcha = randomUUID(); + captchas.add(captcha); + setTimeout(() => captchas.delete(captcha), 120000); + return { index, challenge }; }; |
