From 50c4890a3e164c63cdc515c0e0c927e4c7fad1de Mon Sep 17 00:00:00 2001 From: Fabien Date: Wed, 30 Oct 2024 16:37:03 +0100 Subject: [PATCH] feat: allow a different support email for tenant and owner --- .../front/config/filter/RateLimitingFilter.java | 2 ++ .../filter/RateLimitingSupportMailFilter.java | 2 ++ .../api/front/form/ContactForm.java | 5 ++++- .../api/front/service/MailServiceImpl.java | 16 +++++++++------- .../src/main/resources/application.properties | 2 ++ 5 files changed, 19 insertions(+), 8 deletions(-) diff --git a/dossierfacile-api-tenant/src/main/java/fr/dossierfacile/api/front/config/filter/RateLimitingFilter.java b/dossierfacile-api-tenant/src/main/java/fr/dossierfacile/api/front/config/filter/RateLimitingFilter.java index 9680f46fc..5fb583cc7 100644 --- a/dossierfacile-api-tenant/src/main/java/fr/dossierfacile/api/front/config/filter/RateLimitingFilter.java +++ b/dossierfacile-api-tenant/src/main/java/fr/dossierfacile/api/front/config/filter/RateLimitingFilter.java @@ -3,9 +3,11 @@ import jakarta.servlet.Filter; import jakarta.servlet.annotation.WebFilter; import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Profile; import org.springframework.stereotype.Component; @Component +@Profile("!dev") @WebFilter("/api/register/account") public class RateLimitingFilter extends AbstractRateLimitingFilter implements Filter { @Value("${ratelimit.register.capacity}") diff --git a/dossierfacile-api-tenant/src/main/java/fr/dossierfacile/api/front/config/filter/RateLimitingSupportMailFilter.java b/dossierfacile-api-tenant/src/main/java/fr/dossierfacile/api/front/config/filter/RateLimitingSupportMailFilter.java index b1801ec85..97e59c0da 100644 --- a/dossierfacile-api-tenant/src/main/java/fr/dossierfacile/api/front/config/filter/RateLimitingSupportMailFilter.java +++ b/dossierfacile-api-tenant/src/main/java/fr/dossierfacile/api/front/config/filter/RateLimitingSupportMailFilter.java @@ -3,9 +3,11 @@ import jakarta.servlet.Filter; import jakarta.servlet.annotation.WebFilter; import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Profile; import org.springframework.stereotype.Component; @Component +@Profile("!dev") @WebFilter("/api/support/email") public class RateLimitingSupportMailFilter extends AbstractRateLimitingFilter implements Filter { diff --git a/dossierfacile-api-tenant/src/main/java/fr/dossierfacile/api/front/form/ContactForm.java b/dossierfacile-api-tenant/src/main/java/fr/dossierfacile/api/front/form/ContactForm.java index 8cec5e650..f91ea75c9 100644 --- a/dossierfacile-api-tenant/src/main/java/fr/dossierfacile/api/front/form/ContactForm.java +++ b/dossierfacile-api-tenant/src/main/java/fr/dossierfacile/api/front/form/ContactForm.java @@ -18,9 +18,12 @@ public class ContactForm { @JsonDeserialize(using = EmailDeserializer.class) String email; @NotEmpty - String profile; + Profile profile; @NotEmpty String subject; @NotEmpty String message; + public enum Profile { + tenant, owner + } } diff --git a/dossierfacile-api-tenant/src/main/java/fr/dossierfacile/api/front/service/MailServiceImpl.java b/dossierfacile-api-tenant/src/main/java/fr/dossierfacile/api/front/service/MailServiceImpl.java index fe7a4e08b..d03d0696c 100644 --- a/dossierfacile-api-tenant/src/main/java/fr/dossierfacile/api/front/service/MailServiceImpl.java +++ b/dossierfacile-api-tenant/src/main/java/fr/dossierfacile/api/front/service/MailServiceImpl.java @@ -21,11 +21,7 @@ import org.springframework.stereotype.Service; import java.time.format.DateTimeFormatter; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.util.*; import static fr.dossierfacile.common.enums.ApplicationType.COUPLE; import static fr.dossierfacile.common.enums.ApplicationType.GROUP; @@ -40,6 +36,8 @@ public class MailServiceImpl implements MailService { private String tenantBaseUrl; @Value("${email.support}") private String emailSupport; + @Value("${email.support.owner}") + private String emailSupportOwner; @Value("${brevo.template.id.welcome}") private Long templateIDWelcome; @Value("${brevo.template.id.welcome.partner}") @@ -233,12 +231,16 @@ public void sendEmailToSupport(ContactForm form) { variables.put("firstname", form.getFirstname()); variables.put("lastname", form.getLastname()); variables.put("email", form.getEmail()); - variables.put("profile", form.getProfile()); + if (form.getProfile() != null) { + variables.put("profile", form.getProfile().name()); + } variables.put("subject", form.getSubject()); variables.put("message", form.getMessage()); SendSmtpEmailTo sendSmtpEmailTo = new SendSmtpEmailTo(); - sendSmtpEmailTo.setEmail(emailSupport); + + String recipientEmail = (ContactForm.Profile.owner == form.getProfile()) ? emailSupportOwner : emailSupport; + sendSmtpEmailTo.setEmail(recipientEmail); sendSmtpEmailTo.setName("Support depuis formulaire"); SendSmtpEmailReplyTo sendSmtpEmailReplyTo = new SendSmtpEmailReplyTo(); diff --git a/dossierfacile-api-tenant/src/main/resources/application.properties b/dossierfacile-api-tenant/src/main/resources/application.properties index be279be40..7e82a09ec 100644 --- a/dossierfacile-api-tenant/src/main/resources/application.properties +++ b/dossierfacile-api-tenant/src/main/resources/application.properties @@ -61,6 +61,8 @@ spring.cache.caffeine.treated-files-by-operator-key.expire-after-write=5m # Emails +email.support= +email.support.owner= link.after.completed.default= link.after.created.default=