Add requester to recaptcha validation
This commit is contained in:
parent
288285f22b
commit
a6e7e30177
|
@ -401,7 +401,7 @@ public class AccountController {
|
||||||
{
|
{
|
||||||
|
|
||||||
if (captchaToken.isPresent()) {
|
if (captchaToken.isPresent()) {
|
||||||
boolean validToken = recaptchaClient.verify(captchaToken.get());
|
boolean validToken = recaptchaClient.verify(captchaToken.get(), requester);
|
||||||
|
|
||||||
if (validToken) {
|
if (validToken) {
|
||||||
captchaSuccessMeter.mark();
|
captchaSuccessMeter.mark();
|
||||||
|
|
|
@ -21,10 +21,11 @@ public class RecaptchaClient {
|
||||||
this.recaptchaSecret = recaptchaSecret;
|
this.recaptchaSecret = recaptchaSecret;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean verify(String captchaToken) {
|
public boolean verify(String captchaToken, String ip) {
|
||||||
MultivaluedMap<String, String> formData = new MultivaluedHashMap<>();
|
MultivaluedMap<String, String> formData = new MultivaluedHashMap<>();
|
||||||
formData.add("secret", recaptchaSecret);
|
formData.add("secret", recaptchaSecret);
|
||||||
formData.add("response", captchaToken);
|
formData.add("response", captchaToken);
|
||||||
|
formData.add("remoteip", ip);
|
||||||
|
|
||||||
VerifyResponse response = client.target("https://www.google.com/recaptcha/api/siteverify")
|
VerifyResponse response = client.target("https://www.google.com/recaptcha/api/siteverify")
|
||||||
.request()
|
.request()
|
||||||
|
|
|
@ -130,8 +130,8 @@ public class AccountControllerTest {
|
||||||
when(abusiveHostRules.getAbusiveHostRulesFor(eq(RESTRICTED_HOST))).thenReturn(Collections.singletonList(new AbusiveHostRule(RESTRICTED_HOST, false, Collections.singletonList("+123"))));
|
when(abusiveHostRules.getAbusiveHostRulesFor(eq(RESTRICTED_HOST))).thenReturn(Collections.singletonList(new AbusiveHostRule(RESTRICTED_HOST, false, Collections.singletonList("+123"))));
|
||||||
when(abusiveHostRules.getAbusiveHostRulesFor(eq(NICE_HOST))).thenReturn(Collections.emptyList());
|
when(abusiveHostRules.getAbusiveHostRulesFor(eq(NICE_HOST))).thenReturn(Collections.emptyList());
|
||||||
|
|
||||||
when(recaptchaClient.verify(eq(INVALID_CAPTCHA_TOKEN))).thenReturn(false);
|
when(recaptchaClient.verify(eq(INVALID_CAPTCHA_TOKEN), anyString())).thenReturn(false);
|
||||||
when(recaptchaClient.verify(eq(VALID_CAPTCHA_TOKEN))).thenReturn(true);
|
when(recaptchaClient.verify(eq(VALID_CAPTCHA_TOKEN), anyString())).thenReturn(true);
|
||||||
|
|
||||||
doThrow(new RateLimitExceededException(SENDER_OVER_PIN)).when(pinLimiter).validate(eq(SENDER_OVER_PIN));
|
doThrow(new RateLimitExceededException(SENDER_OVER_PIN)).when(pinLimiter).validate(eq(SENDER_OVER_PIN));
|
||||||
|
|
||||||
|
@ -216,7 +216,7 @@ public class AccountControllerTest {
|
||||||
assertThat(response.getStatus()).isEqualTo(200);
|
assertThat(response.getStatus()).isEqualTo(200);
|
||||||
|
|
||||||
verifyNoMoreInteractions(abusiveHostRules);
|
verifyNoMoreInteractions(abusiveHostRules);
|
||||||
verify(recaptchaClient).verify(eq(VALID_CAPTCHA_TOKEN));
|
verify(recaptchaClient).verify(eq(VALID_CAPTCHA_TOKEN), eq(ABUSIVE_HOST));
|
||||||
verify(smsSender).deliverSmsVerification(eq(SENDER), eq(Optional.empty()), anyString());
|
verify(smsSender).deliverSmsVerification(eq(SENDER), eq(Optional.empty()), anyString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -233,7 +233,7 @@ public class AccountControllerTest {
|
||||||
assertThat(response.getStatus()).isEqualTo(402);
|
assertThat(response.getStatus()).isEqualTo(402);
|
||||||
|
|
||||||
verifyNoMoreInteractions(abusiveHostRules);
|
verifyNoMoreInteractions(abusiveHostRules);
|
||||||
verify(recaptchaClient).verify(eq(INVALID_CAPTCHA_TOKEN));
|
verify(recaptchaClient).verify(eq(INVALID_CAPTCHA_TOKEN), eq(ABUSIVE_HOST));
|
||||||
verifyNoMoreInteractions(smsSender);
|
verifyNoMoreInteractions(smsSender);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue