added captcha to backend
This commit is contained in:
parent
0b9cfbcd2d
commit
12de24a0c0
|
@ -1,4 +1,23 @@
|
|||
package ch.bbw.pr.tresorbackend.controller;
|
||||
|
||||
import ch.bbw.pr.tresorbackend.model.RecaptchaRequest;
|
||||
import ch.bbw.pr.tresorbackend.service.RecaptchaService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/api")
|
||||
@CrossOrigin(origins = "*") // allow from React
|
||||
public class RecaptchaController {
|
||||
|
||||
@Autowired
|
||||
private RecaptchaService recaptchaService;
|
||||
|
||||
@PostMapping("/verify-recaptcha")
|
||||
public Map<String, Object> verifyCaptcha(@RequestBody RecaptchaRequest request) {
|
||||
boolean success = recaptchaService.verifyToken(request.getRecaptchaToken());
|
||||
return Map.of("success", success);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
package ch.bbw.pr.tresorbackend.model;
|
||||
|
||||
public class RecaptchaRequest {
|
||||
private String recaptchaToken;
|
||||
|
||||
public String getRecaptchaToken() {
|
||||
return recaptchaToken;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
package ch.bbw.pr.tresorbackend.service;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@Service
|
||||
public class RecaptchaService {
|
||||
|
||||
@Value("${google.recaptcha.secret}")
|
||||
private String recaptchaSecret;
|
||||
|
||||
private static final String VERIFY_URL = "https://www.google.com/recaptcha/api/siteverify";
|
||||
|
||||
public boolean verifyToken(String token) {
|
||||
RestTemplate restTemplate = new RestTemplate();
|
||||
Map<String, String> body = Map.of(
|
||||
"secret", recaptchaSecret,
|
||||
"response", token
|
||||
);
|
||||
|
||||
String url = VERIFY_URL + "?secret=" + recaptchaSecret + "&response=" + token;
|
||||
|
||||
Map<String, Object> response = restTemplate.postForObject(url, null, Map.class);
|
||||
|
||||
return (Boolean) response.get("success");
|
||||
}
|
||||
}
|
|
@ -11,3 +11,5 @@ spring.jpa.hibernate.ddl-auto=update
|
|||
CROSS_ORIGIN=http://localhost:3000
|
||||
|
||||
pepper=VfQqM
|
||||
|
||||
google.recaptcha.secret=6LdJj1crAAAAACpj8Vw_b7xUEcHJdNJRU_T7aCvf
|
Loading…
Reference in New Issue