import Config from "./config";
interface TokenValidateResponse {
"error-codes": string[];
success: boolean;
action: string;
cdata: string;
}
/**
* Validates captcha code
* @param {string} token
* @return {Promise<{ success: boolean, error: string? }>}
*/
export async function validateCaptcha(token: string) {
const response = await fetch(
"https://challenges.cloudflare.com/turnstile/v0/siteverify",
{
method: "POST",
headers: {
"content-type": "application/json"
},
body: JSON.stringify({
response: token,
secret: Config.captcha.secret
})
}
);
const data: TokenValidateResponse = await response.json();
return {
// Return the status
success: data.success,
// Return the first error if it exists
error: data["error-codes"]?.length ? data["error-codes"][0] : null
};
}
Source