feat: add admin toggle to open/close public pre-registrations with ui messaging
This commit is contained in:
+19
-4
@@ -35,12 +35,21 @@ public class PublicInscriptionController {
|
||||
}
|
||||
|
||||
@GetMapping("/demarrer")
|
||||
public String showDemarrer() {
|
||||
public String showDemarrer(Model model) {
|
||||
Saison activeSaison = saisonRepository.findByEstActiveTrue().orElse(null);
|
||||
if (activeSaison == null || !activeSaison.getInscriptionsOuvertes()) {
|
||||
model.addAttribute("inscriptionsFermees", true);
|
||||
}
|
||||
return "public/demarrer";
|
||||
}
|
||||
|
||||
@PostMapping("/demarrer")
|
||||
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.");
|
||||
return "redirect:/inscription-public/demarrer";
|
||||
}
|
||||
// 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.");
|
||||
@@ -56,7 +65,13 @@ public class PublicInscriptionController {
|
||||
}
|
||||
|
||||
@GetMapping("/formulaire")
|
||||
public String showFormulaire(@RequestParam("token") String tokenUuid, Model model) {
|
||||
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.");
|
||||
return "redirect:/inscription-public/demarrer";
|
||||
}
|
||||
|
||||
TokenPreInscription token = tokenRepository.findByValeurUuid(tokenUuid).orElse(null);
|
||||
if (token == null || !token.isValide()) {
|
||||
return "public/lien-expire";
|
||||
@@ -77,8 +92,8 @@ public class PublicInscriptionController {
|
||||
}
|
||||
|
||||
Saison activeSaison = saisonRepository.findByEstActiveTrue().orElse(null);
|
||||
if (activeSaison == null) {
|
||||
redirectAttributes.addFlashAttribute("error", "Les inscriptions sont actuellement fermées.");
|
||||
if (activeSaison == null || !activeSaison.getInscriptionsOuvertes()) {
|
||||
redirectAttributes.addFlashAttribute("error", "Les inscriptions ne sont pas ouvertes pour le moment, veuillez contacter un responsable du club.");
|
||||
return "redirect:/inscription-public/demarrer";
|
||||
}
|
||||
|
||||
|
||||
@@ -58,4 +58,13 @@ public class SaisonController {
|
||||
|
||||
return "redirect:/saisons";
|
||||
}
|
||||
|
||||
@PostMapping("/{id}/toggle-inscriptions")
|
||||
public String toggleInscriptions(@PathVariable Long id) {
|
||||
Saison saison = saisonRepository.findById(id)
|
||||
.orElseThrow(() -> new IllegalArgumentException("Saison introuvable : " + id));
|
||||
saison.setInscriptionsOuvertes(!saison.getInscriptionsOuvertes());
|
||||
saisonRepository.save(saison);
|
||||
return "redirect:/saisons";
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user