summary refs log tree commit diff
path: root/api/src/util/utility/captcha.ts
diff options
context:
space:
mode:
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