leonardovannucci
2020-05-13 74967f038707374661a6765245c062cb9f7bc7d7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package it.digione.dg1cloud.recaptcha;
 
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestOperations;
 
import javax.servlet.http.HttpServletRequest;
import java.net.URI;
 
@Service
public class ReCaptchaService {
 
   private static final Logger log = LoggerFactory.getLogger(ReCaptchaService.class);
 
   @Autowired
   private RestOperations restTemplate;
 
   @Autowired
   private CaptchaSettings captchaSettings;
 
   @Autowired
   private HttpServletRequest request;
 
   public boolean validate(String reCaptchaResponse){
       URI verifyUri = URI.create(String.format(
               captchaSettings.getUrl() + "?secret=%s&response=%s&remoteip=%s",
               captchaSettings.getSecret(),
               reCaptchaResponse,
               request.getRemoteAddr()
       ));
 
       try {
           ReCaptchaResponse response = restTemplate.getForObject(verifyUri, ReCaptchaResponse.class);
           return response.isSuccess();
       } catch (Exception ignored){
           log.error("", ignored);
           // ignore when google services are not available
           // maybe add some sort of logging or trigger that'll alert the administrator
       }
 
       return true;
   }
 
}