diff options
Diffstat (limited to 'src/api/util/utility/captcha.ts')
-rw-r--r-- | src/api/util/utility/captcha.ts | 47 |
1 files changed, 0 insertions, 47 deletions
diff --git a/src/api/util/utility/captcha.ts b/src/api/util/utility/captcha.ts deleted file mode 100644 index 02983f3f..00000000 --- a/src/api/util/utility/captcha.ts +++ /dev/null @@ -1,47 +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; -} |