feat(security): configuration dynamique du Captcha Cloudflare Turnstile
This commit is contained in:
+19
-13
@@ -24,10 +24,10 @@ public class PublicInscriptionController {
|
||||
private final PreInscriptionRepository preInscriptionRepository;
|
||||
private final SaisonRepository saisonRepository;
|
||||
|
||||
public PublicInscriptionController(CaptchaValidationService captchaValidationService,
|
||||
TokenPreInscriptionRepository tokenRepository,
|
||||
PreInscriptionRepository preInscriptionRepository,
|
||||
SaisonRepository saisonRepository) {
|
||||
public PublicInscriptionController(CaptchaValidationService captchaValidationService,
|
||||
TokenPreInscriptionRepository tokenRepository,
|
||||
PreInscriptionRepository preInscriptionRepository,
|
||||
SaisonRepository saisonRepository) {
|
||||
this.captchaValidationService = captchaValidationService;
|
||||
this.tokenRepository = tokenRepository;
|
||||
this.preInscriptionRepository = preInscriptionRepository;
|
||||
@@ -44,13 +44,16 @@ public class PublicInscriptionController {
|
||||
}
|
||||
|
||||
@PostMapping("/demarrer")
|
||||
public String processDemarrer(@RequestParam("cf-turnstile-response") String captchaResponse, RedirectAttributes redirectAttributes) {
|
||||
public String processDemarrer(@RequestParam("cf-turnstile-response") String captchaResponse,
|
||||
RedirectAttributes redirectAttributes) {
|
||||
Saison activeSaison = saisonRepository.findByEstActiveTrue().orElse(null);
|
||||
if (activeSaison == null || !activeSaison.getInscriptionsOuvertes()) {
|
||||
redirectAttributes.addFlashAttribute("error", "Les inscriptions ne sont pas ouvertes pour le moment, veuillez contacter un responsable du club.");
|
||||
redirectAttributes.addFlashAttribute("error",
|
||||
"Les inscriptions ne sont pas ouvertes pour le moment, veuillez contacter un responsable du club.");
|
||||
return "redirect:/inscription-public/demarrer";
|
||||
}
|
||||
// En vrai, captchaResponse dépend du fournisseur. Cloudflare Turnstile = cf-turnstile-response
|
||||
// En vrai, captchaResponse dépend du fournisseur. Cloudflare Turnstile =
|
||||
// cf-turnstile-response
|
||||
if (!captchaValidationService.validateCaptcha(captchaResponse)) {
|
||||
redirectAttributes.addFlashAttribute("error", "Validation CAPTCHA échouée. Veuillez réessayer.");
|
||||
return "redirect:/inscription-public/demarrer";
|
||||
@@ -65,13 +68,15 @@ public class PublicInscriptionController {
|
||||
}
|
||||
|
||||
@GetMapping("/formulaire")
|
||||
public String showFormulaire(@RequestParam("token") String tokenUuid, Model model, RedirectAttributes redirectAttributes) {
|
||||
public String showFormulaire(@RequestParam("token") String tokenUuid, Model model,
|
||||
RedirectAttributes redirectAttributes) {
|
||||
Saison activeSaison = saisonRepository.findByEstActiveTrue().orElse(null);
|
||||
if (activeSaison == null || !activeSaison.getInscriptionsOuvertes()) {
|
||||
redirectAttributes.addFlashAttribute("error", "Les inscriptions ne sont pas ouvertes pour le moment, veuillez contacter un responsable du club.");
|
||||
redirectAttributes.addFlashAttribute("error",
|
||||
"Les inscriptions ne sont pas ouvertes pour le moment, veuillez contacter un responsable du club.");
|
||||
return "redirect:/inscription-public/demarrer";
|
||||
}
|
||||
|
||||
|
||||
TokenPreInscription token = tokenRepository.findByValeurUuid(tokenUuid).orElse(null);
|
||||
if (token == null || !token.isValide()) {
|
||||
return "public/lien-expire";
|
||||
@@ -84,8 +89,8 @@ public class PublicInscriptionController {
|
||||
|
||||
@PostMapping("/formulaire")
|
||||
public String processFormulaire(@RequestParam("token") String tokenUuid,
|
||||
@ModelAttribute("preInscription") PreInscription preInscription,
|
||||
RedirectAttributes redirectAttributes) {
|
||||
@ModelAttribute("preInscription") PreInscription preInscription,
|
||||
RedirectAttributes redirectAttributes) {
|
||||
TokenPreInscription token = tokenRepository.findByValeurUuid(tokenUuid).orElse(null);
|
||||
if (token == null || !token.isValide()) {
|
||||
return "public/lien-expire";
|
||||
@@ -93,7 +98,8 @@ public class PublicInscriptionController {
|
||||
|
||||
Saison activeSaison = saisonRepository.findByEstActiveTrue().orElse(null);
|
||||
if (activeSaison == null || !activeSaison.getInscriptionsOuvertes()) {
|
||||
redirectAttributes.addFlashAttribute("error", "Les inscriptions ne sont pas ouvertes pour le moment, veuillez contacter un responsable du club.");
|
||||
redirectAttributes.addFlashAttribute("error",
|
||||
"Les inscriptions ne sont pas ouvertes pour le moment, veuillez contacter un responsable du club.");
|
||||
return "redirect:/inscription-public/demarrer";
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user