added captcha to backend

This commit is contained in:
Lorenz Hohermuth 2025-06-06 16:35:20 +02:00
parent 0b9cfbcd2d
commit 12de24a0c0
4 changed files with 61 additions and 1 deletions

View File

@ -1,4 +1,23 @@
package ch.bbw.pr.tresorbackend.controller; 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 { 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);
}
} }

View File

@ -0,0 +1,9 @@
package ch.bbw.pr.tresorbackend.model;
public class RecaptchaRequest {
private String recaptchaToken;
public String getRecaptchaToken() {
return recaptchaToken;
}
}

View File

@ -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");
}
}

View File

@ -10,4 +10,6 @@ spring.jpa.hibernate.ddl-auto=update
CROSS_ORIGIN=http://localhost:3000 CROSS_ORIGIN=http://localhost:3000
pepper=VfQqM pepper=VfQqM
google.recaptcha.secret=6LdJj1crAAAAACpj8Vw_b7xUEcHJdNJRU_T7aCvf