Fix NPE on recapcha validation

This commit is contained in:
Paulo Gustavo Veiga 2022-02-03 21:27:43 -08:00
parent 119eb03f53
commit c55025f07f
2 changed files with 7 additions and 5 deletions

View File

@ -62,7 +62,7 @@ public class UserController extends BaseController {
// If tomcat is behind a reverse proxy, ip needs to be found in other header. // If tomcat is behind a reverse proxy, ip needs to be found in other header.
String remoteIp = request.getHeader(REAL_IP_ADDRESS_HEADER); String remoteIp = request.getHeader(REAL_IP_ADDRESS_HEADER);
if(remoteIp==null || remoteIp.isEmpty()){ if (remoteIp == null || remoteIp.isEmpty()) {
remoteIp = request.getRemoteAddr(); remoteIp = request.getRemoteAddr();
} }
logger.debug("Remote address" + remoteIp); logger.debug("Remote address" + remoteIp);
@ -85,7 +85,7 @@ public class UserController extends BaseController {
public void resetPassword(@RequestParam String email) throws InvalidAuthSchemaException, EmailNotExistsException { public void resetPassword(@RequestParam String email) throws InvalidAuthSchemaException, EmailNotExistsException {
try { try {
userService.resetPassword(email); userService.resetPassword(email);
}catch (InvalidUserEmailException e){ } catch (InvalidUserEmailException e) {
throw new EmailNotExistsException(e); throw new EmailNotExistsException(e);
} }
} }
@ -101,14 +101,14 @@ public class UserController extends BaseController {
if (recatchaEnabled) { if (recatchaEnabled) {
final String recaptcha = registration.getRecaptcha(); final String recaptcha = registration.getRecaptcha();
if (recaptcha != null) { if (recaptcha != null) {
final String reCaptchaResponse = captchaService.verifyRecaptcha(remoteAddress,recaptcha); final String reCaptchaResponse = captchaService.verifyRecaptcha(remoteAddress, recaptcha);
if (!reCaptchaResponse.isEmpty()) { if (reCaptchaResponse != null && !reCaptchaResponse.isEmpty()) {
errors.rejectValue("recaptcha", reCaptchaResponse); errors.rejectValue("recaptcha", reCaptchaResponse);
} }
} else { } else {
errors.rejectValue("recaptcha", Messages.CAPTCHA_LOADING_ERROR); errors.rejectValue("recaptcha", Messages.CAPTCHA_LOADING_ERROR);
} }
}else { } else {
logger.warn("captchaEnabled is enabled.Recommend to enable it for production environments."); logger.warn("captchaEnabled is enabled.Recommend to enable it for production environments.");
} }

View File

@ -6,6 +6,7 @@ import org.apache.http.NameValuePair;
import org.apache.http.client.fluent.Form; import org.apache.http.client.fluent.Form;
import org.apache.http.client.fluent.Request; import org.apache.http.client.fluent.Request;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import org.jetbrains.annotations.Nullable;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.io.IOException; import java.io.IOException;
@ -23,6 +24,7 @@ public class RecaptchaService {
private final static ObjectMapper objectMapper = new ObjectMapper(); private final static ObjectMapper objectMapper = new ObjectMapper();
private String recaptchaSecret; private String recaptchaSecret;
@Nullable
public String verifyRecaptcha(@NotNull String ip, @NotNull String recaptcha) { public String verifyRecaptcha(@NotNull String ip, @NotNull String recaptcha) {
final List<NameValuePair> build = Form.form() final List<NameValuePair> build = Form.form()