aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/lib/utils.ts2
-rw-r--r--src/routes/(static)/register/+page.server.ts7
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 };
};