Password reset loads reCAPTCHA v3 and sends grecaptcha.execute(siteKey, { action: 'password_reset' }) as recaptchaToken.
Removes react-google-recaptcha. That package is a v2 widget, and the Hesychia key is v3, so Google rejected the site key on https://hesychia.ai/password_reset/ before submit.
Site key stays 6LfENu4qAAAAAFtPejcrP3dwBDxcRPjqi7RhytJJ. The backend already checks the v3 token with CAPTCHA_SECRET_KEY and rejects a score under 0.5.
Test plan
CI=true npm test -- --watchAll=false --coverage=false --testPathPattern=pages/PasswordReset (6 passed)
Submit a real account email and confirm the reset email sends
Submit again with a bad or blocked client and confirm the page shows "Unable to reset password"
## Summary
- Closes #134.
- Password reset loads reCAPTCHA v3 and sends `grecaptcha.execute(siteKey, { action: 'password_reset' })` as `recaptchaToken`.
- Removes `react-google-recaptcha`. That package is a v2 widget, and the Hesychia key is v3, so Google rejected the site key on https://hesychia.ai/password_reset/ before submit.
- Site key stays `6LfENu4qAAAAAFtPejcrP3dwBDxcRPjqi7RhytJJ`. The backend already checks the v3 token with `CAPTCHA_SECRET_KEY` and rejects a score under 0.5.
## Test plan
- [x] `CI=true npm test -- --watchAll=false --coverage=false --testPathPattern=pages/PasswordReset` (6 passed)
- [ ] After deploy, open https://hesychia.ai/password_reset/ and confirm the invalid reCAPTCHA error is gone
- [ ] Submit a real account email and confirm the reset email sends
- [ ] Submit again with a bad or blocked client and confirm the page shows "Unable to reset password"
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
grecaptcha.execute(siteKey, { action: 'password_reset' })asrecaptchaToken.react-google-recaptcha. That package is a v2 widget, and the Hesychia key is v3, so Google rejected the site key on https://hesychia.ai/password_reset/ before submit.6LfENu4qAAAAAFtPejcrP3dwBDxcRPjqi7RhytJJ. The backend already checks the v3 token withCAPTCHA_SECRET_KEYand rejects a score under 0.5.Test plan
CI=true npm test -- --watchAll=false --coverage=false --testPathPattern=pages/PasswordReset(6 passed)