overleaf/services/web/frontend/js/features/form-helpers/captcha.js
Jakob Ackermann 317f8fa73f Merge pull request #5115 from overleaf/jpa-recaptcha-detection
[web] form-helpers/captcha: step up detection of loaded recaptcha

GitOrigin-RevId: d9ed3b99277ffcdca68df9f8e0b162faeb363451
2021-09-16 08:03:15 +00:00

30 lines
796 B
JavaScript

const grecaptcha = window.grecaptcha
let recaptchaId
const recaptchaCallbacks = []
export async function validateCaptchaV2() {
if (
// Detect blocked recaptcha
typeof grecaptcha === 'undefined' ||
// Detect stubbed recaptcha
typeof grecaptcha.render !== 'function' ||
typeof grecaptcha.execute !== 'function' ||
typeof grecaptcha.reset !== 'function'
) {
return
}
if (recaptchaId === undefined) {
const el = document.getElementById('recaptcha')
recaptchaId = grecaptcha.render(el, {
callback: token => {
recaptchaCallbacks.splice(0).forEach(cb => cb(token))
grecaptcha.reset(recaptchaId)
},
})
}
return await new Promise(resolve => {
recaptchaCallbacks.push(resolve)
grecaptcha.execute(recaptchaId)
})
}