From 42b11eecf180e4130343284733170d070217670f Mon Sep 17 00:00:00 2001 From: akastijn Date: Sat, 23 Aug 2025 22:59:22 +0200 Subject: [PATCH] Add email re-validation handling with UI feedback and backend validation to prevent duplicate email verification attempts --- .../controllers/forms/MailController.java | 8 ++++++++ .../pages/forms/appeal/appeal.component.html | 8 ++++++++ .../pages/forms/appeal/appeal.component.scss | 20 +++++++++++++++++++ .../pages/forms/appeal/appeal.component.ts | 13 +++++++----- 4 files changed, 44 insertions(+), 5 deletions(-) diff --git a/backend/src/main/java/com/alttd/altitudeweb/controllers/forms/MailController.java b/backend/src/main/java/com/alttd/altitudeweb/controllers/forms/MailController.java index 847c050..3bbe45f 100644 --- a/backend/src/main/java/com/alttd/altitudeweb/controllers/forms/MailController.java +++ b/backend/src/main/java/com/alttd/altitudeweb/controllers/forms/MailController.java @@ -33,6 +33,14 @@ public class MailController implements MailApi { @RateLimit(limit = 5, timeValue = 1, timeUnit = TimeUnit.HOURS, key = "mailSubmit") public ResponseEntity submitEmailForVerification(SubmitEmailDto submitEmailDto) { UUID uuid = AuthenticatedUuid.getAuthenticatedUserUuid(); + boolean emailAlreadyVerified = mailVerificationService.listAll(uuid).stream() + .filter(EmailVerification::verified) + .map(EmailVerification::email) + .anyMatch(mail -> mail.equalsIgnoreCase(submitEmailDto.getEmail())); + if (emailAlreadyVerified) { + throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "Email already verified for user"); + } + EmailVerification saved = mailVerificationService.submitEmail(uuid, submitEmailDto.getEmail()); MailResponseDto response = new MailResponseDto() .email(saved.email()) diff --git a/frontend/src/app/pages/forms/appeal/appeal.component.html b/frontend/src/app/pages/forms/appeal/appeal.component.html index e1a2181..5f85bf7 100644 --- a/frontend/src/app/pages/forms/appeal/appeal.component.html +++ b/frontend/src/app/pages/forms/appeal/appeal.component.html @@ -93,6 +93,14 @@ } + @if (emailIsValid()) { +
+ + check + Your have already validated your email, and can continue to the next page! + +
+ }