Skip to content

Commit

Permalink
more verbose logs when verifying captcha token
Browse files Browse the repository at this point in the history
  • Loading branch information
mnaamani committed Sep 21, 2023
1 parent 500edc7 commit 9deff89
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 3 deletions.
13 changes: 11 additions & 2 deletions src/captcha.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { error } from './debug'
import { log, error } from './debug'
import { HCAPTCHA_ENDPOINT, HCAPTCHA_SECRET } from './config'
import fetch from 'node-fetch'

Expand All @@ -10,13 +10,21 @@ export type CaptchaResponse = {
'error-codes'?: string[] // optional: any error codes
}

const observedTokens = new Set()

export async function verifyCaptcha(
token: string
): Promise<true | undefined | string[]> {
if (!HCAPTCHA_SECRET) {
return true
}

if(observedTokens.has(token)) {
log('Token reuse:', token)
} else {
observedTokens.add(token)
}

const formData = new URLSearchParams()
formData.append('secret', HCAPTCHA_SECRET)
formData.append('response', token)
Expand All @@ -31,12 +39,13 @@ export async function verifyCaptcha(
})
const data = (await response.json()) as CaptchaResponse
if (data.success) {
log('Captcha verification success:', data.hostname, data.challenge_ts)
return true
} else {
return data['error-codes']
}
} catch (e) {
error('Captcha verification error:', e)
return ['Unexpected error']
return ['unexpected-error']
}
}
2 changes: 1 addition & 1 deletion src/register.ts
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ export async function register(
} else {
const captchaResult = await verifyCaptcha(captchaToken)
if (captchaResult !== true) {
log('captcha verification failed')
log('captcha verification failed:', captchaResult)
callback(
{
error: 'InvalidCaptchaToken',
Expand Down

0 comments on commit 9deff89

Please sign in to comment.