summary refs log tree commit diff
path: root/api/src/util/utility/captcha.ts
diff options
context:
space:
mode:
Diffstat (limited to 'api/src/util/utility/captcha.ts')
-rw-r--r--api/src/util/utility/captcha.ts46
1 files changed, 0 insertions, 46 deletions
diff --git a/api/src/util/utility/captcha.ts b/api/src/util/utility/captcha.ts
deleted file mode 100644

index 739647d2..00000000 --- a/api/src/util/utility/captcha.ts +++ /dev/null
@@ -1,46 +0,0 @@ -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 interface recaptchaResponse { - success: boolean; - score: number; // between 0 - 1 - action: string; - challenge_ts: string; - hostname: string; - "error-codes"?: string[]; -} - -const verifyEndpoints = { - hcaptcha: "https://hcaptcha.com/siteverify", - recaptcha: "https://www.google.com/recaptcha/api/siteverify", -} - -export async function verifyCaptcha(response: string, ip?: string) { - const { security } = Config.get(); - const { service, secret, sitekey } = security.captcha; - - if (!service) throw new Error("Cannot verify captcha without service"); - - const res = await fetch(verifyEndpoints[service], { - method: "POST", - headers: { - "Content-Type": "application/x-www-form-urlencoded", - }, - body: `response=${encodeURIComponent(response)}` - + `&secret=${encodeURIComponent(secret!)}` - + `&sitekey=${encodeURIComponent(sitekey!)}` - + (ip ? `&remoteip=${encodeURIComponent(ip!)}` : ""), - }); - - return await res.json() as hcaptchaResponse | recaptchaResponse; -} \ No newline at end of file