summary refs log tree commit diff
path: root/api/src/util/utility/captcha.ts
diff options
context:
space:
mode:
authorMadeline <46743919+MaddyUnderStars@users.noreply.github.com>2022-07-20 14:35:32 +1000
committerMadeline <46743919+MaddyUnderStars@users.noreply.github.com>2022-07-20 14:39:35 +1000
commit8d9816879fbc838e4a8b54001673c487a3d3a36a (patch)
treecc26e5a5c503f80a5a6bfec8dbc6f42e56f6785e /api/src/util/utility/captcha.ts
parentHcaptcha support on login/register (diff)
downloadserver-8d9816879fbc838e4a8b54001673c487a3d3a36a.tar.xz
Hcaptcha backend
Diffstat (limited to '')
-rw-r--r--api/src/util/utility/captcha.ts25
1 files changed, 25 insertions, 0 deletions
diff --git a/api/src/util/utility/captcha.ts b/api/src/util/utility/captcha.ts
new file mode 100644

index 00000000..b32bd1c6 --- /dev/null +++ b/api/src/util/utility/captcha.ts
@@ -0,0 +1,25 @@ +import { Config } from "@fosscord/util"; +import fetch from "node-fetch"; + +export interface hcaptchaResponse { + success: boolean; + challenge_ts: string; + hostname: string; + credit: boolean; + "error-codes": string[]; + score: number; // enterprise only + score_reason: string[]; // enterprise only +} + +export async function verifyHcaptcha(response: string, ip?: string) { + const { security } = Config.get(); + const { secret, sitekey } = security.captcha; + + const res = await fetch("https://hcaptcha.com/siteverify", { + method: "POST", + body: `response=${response}&secret=${secret}&remoteip=${ip}&sitekey=${sitekey}`, + }) + + const json = await res.json() as hcaptchaResponse; + return json; +} \ No newline at end of file