From b64e7c846bacf33f1f7f469d0793d46a4b1096d7 Mon Sep 17 00:00:00 2001 From: mlm483 <128052931+mlm483@users.noreply.github.com> Date: Mon, 22 Apr 2024 16:44:18 -0400 Subject: [PATCH 1/5] [BI-2101] added transactional email configuration enabled direct SMTP connection to SES provided the correct authentication environment variables are present --- .../breedinginsight/utilities/Utilities.java | 8 +++++++ .../utilities/email/EmailUtil.java | 24 +++++++++++++++---- src/main/resources/application.yml | 2 ++ 3 files changed, 29 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/breedinginsight/utilities/Utilities.java b/src/main/java/org/breedinginsight/utilities/Utilities.java index c885eaa97..0119009ac 100644 --- a/src/main/java/org/breedinginsight/utilities/Utilities.java +++ b/src/main/java/org/breedinginsight/utilities/Utilities.java @@ -252,4 +252,12 @@ private static boolean isSafeChar(char c) { // See https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_282 return Character.isLetterOrDigit(c) || c == '-' || c == '_' || c == '.'; } + + public static boolean isNeitherNullNorEmpty(String s) { + return !isNullOrEmpty(s); + } + + public static boolean isNullOrEmpty(String s) { + return s == null || s.isEmpty(); + } } diff --git a/src/main/java/org/breedinginsight/utilities/email/EmailUtil.java b/src/main/java/org/breedinginsight/utilities/email/EmailUtil.java index f0f6652d9..1db3919a0 100644 --- a/src/main/java/org/breedinginsight/utilities/email/EmailUtil.java +++ b/src/main/java/org/breedinginsight/utilities/email/EmailUtil.java @@ -19,12 +19,10 @@ import io.micronaut.context.annotation.Property; import io.micronaut.http.server.exceptions.HttpServerException; +import org.breedinginsight.utilities.Utilities; import javax.inject.Singleton; -import javax.mail.Message; -import javax.mail.MessagingException; -import javax.mail.Session; -import javax.mail.Transport; +import javax.mail.*; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import java.io.UnsupportedEncodingException; @@ -40,13 +38,29 @@ public class EmailUtil { private Integer smtpHostPort; @Property(name = "email.from") private String fromEmail; + @Property(name = "email.relay-server.login") + private String smtpLogin; + @Property(name = "email.relay-server.password") + private String smtpPassword; private Session getSmtpHost() { Properties props = new Properties(); props.put("mail.smtp.host", smtpHostServer); props.put("mail.smtp.port", smtpHostPort); props.put("mail.debug", true); - return Session.getInstance(props, null); + Authenticator auth = null; + if (Utilities.isNeitherNullNorEmpty(smtpLogin) && Utilities.isNeitherNullNorEmpty(smtpPassword)) { + props.put("mail.smtp.auth", true); + props.put("mail.smtp.ssl.trust", smtpHostServer); + props.put("mail.smtp.starttls.enable", true); + auth = new Authenticator() { + @Override + protected PasswordAuthentication getPasswordAuthentication() { + return new PasswordAuthentication(smtpLogin, smtpPassword); + } + }; + } + return Session.getInstance(props, auth); } public void sendEmail(String toEmail, String subject, String body){ diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index aec211b82..3613365c3 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -177,6 +177,8 @@ email: relay-server: host: ${EMAIL_RELAY_HOST} port: ${EMAIL_RELAY_PORT} + login: ${EMAIL_RELAY_LOGIN} + password: ${EMAIL_RELAY_PASSWORD} from: ${EMAIL_FROM} redisson: From fe7d0e1cd2a38e7246411a0aa660d4cfbc4b57fb Mon Sep 17 00:00:00 2001 From: mlm483 <128052931+mlm483@users.noreply.github.com> Date: Tue, 23 Apr 2024 16:45:33 -0400 Subject: [PATCH 2/5] [BI-2101] updated email subject and body --- src/main/java/org/breedinginsight/services/UserService.java | 2 +- src/main/resources/email/newAccountEmail.st | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/breedinginsight/services/UserService.java b/src/main/java/org/breedinginsight/services/UserService.java index ebc4e94b4..7502ff8b2 100644 --- a/src/main/java/org/breedinginsight/services/UserService.java +++ b/src/main/java/org/breedinginsight/services/UserService.java @@ -388,7 +388,7 @@ private void sendAccountSignUpEmail(BiUserEntity user, SignedJWT jwtToken) { emailTemplate.add("expiration_time", expirationTime); String filledBody = emailTemplate.render(); - String subject = "New Account Sign Up"; + String subject = "Activate DeltaBreed Account"; // Send email emailUtil.sendEmail(user.getEmail(), subject, filledBody); diff --git a/src/main/resources/email/newAccountEmail.st b/src/main/resources/email/newAccountEmail.st index a5fd73303..6fa9c1154 100644 --- a/src/main/resources/email/newAccountEmail.st +++ b/src/main/resources/email/newAccountEmail.st @@ -2,7 +2,7 @@ Welcome to Breeding Insight! We use a common login system with ORCID to provide authentication and account security. You will need a current ORCID iD and account to log in to Breeding Insight. If you do not already have an ORCID iD, you can create one here: https://orcid.org/register -To activate your Breeding Insight account and connect your ORCID iD to Breeding Insight, use this link: +To activate your DeltaBreed account and connect your ORCID iD to DeltaBreed, use this link: From c5c556e772a0e83fdebf955b8e6f83e8b3a30f57 Mon Sep 17 00:00:00 2001 From: mlm483 <128052931+mlm483@users.noreply.github.com> Date: Wed, 24 Apr 2024 16:05:36 -0400 Subject: [PATCH 3/5] [BI-2101] added default values for email configuration --- src/main/resources/application.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 3613365c3..10acaf1f0 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -177,8 +177,8 @@ email: relay-server: host: ${EMAIL_RELAY_HOST} port: ${EMAIL_RELAY_PORT} - login: ${EMAIL_RELAY_LOGIN} - password: ${EMAIL_RELAY_PASSWORD} + login: ${EMAIL_RELAY_LOGIN:null} + password: ${EMAIL_RELAY_PASSWORD:null} from: ${EMAIL_FROM} redisson: From da45d4be18cd57a980ad649865af920a7ad9a6de Mon Sep 17 00:00:00 2001 From: mlm483 <128052931+mlm483@users.noreply.github.com> Date: Tue, 30 Apr 2024 11:06:17 -0400 Subject: [PATCH 4/5] [BI-2101] updated .env.template --- .env.template | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.env.template b/.env.template index 0f100a7db..81e26ab06 100644 --- a/.env.template +++ b/.env.template @@ -42,9 +42,11 @@ BRAPI_REFERENCE_SOURCE=breedinginsight.org WEB_BASE_URL=http://localhost:8080 # Email server -EMAIL_RELAY_HOST=mailhog -EMAIL_RELAY_PORT=1025 -EMAIL_FROM=bidevteam@cornell.edu +EMAIL_RELAY_HOST= +EMAIL_RELAY_PORT=<1025 for development, 25 for production> +EMAIL_FROM=noreply@breedinginsight.org +#EMAIL_RELAY_LOGIN= +#EMAIL_RELAY_PASSWORD= GIGWA_HOST= GIGWA_USER= From fa81b8dc379b56044765b1391cf7376fb0483fcc Mon Sep 17 00:00:00 2001 From: mlm483 <128052931+mlm483@users.noreply.github.com> Date: Tue, 30 Apr 2024 11:06:48 -0400 Subject: [PATCH 5/5] [BI-2101] used existing utility method --- .../java/org/breedinginsight/utilities/Utilities.java | 8 -------- .../org/breedinginsight/utilities/email/EmailUtil.java | 4 ++-- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/src/main/java/org/breedinginsight/utilities/Utilities.java b/src/main/java/org/breedinginsight/utilities/Utilities.java index 0119009ac..c885eaa97 100644 --- a/src/main/java/org/breedinginsight/utilities/Utilities.java +++ b/src/main/java/org/breedinginsight/utilities/Utilities.java @@ -252,12 +252,4 @@ private static boolean isSafeChar(char c) { // See https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_282 return Character.isLetterOrDigit(c) || c == '-' || c == '_' || c == '.'; } - - public static boolean isNeitherNullNorEmpty(String s) { - return !isNullOrEmpty(s); - } - - public static boolean isNullOrEmpty(String s) { - return s == null || s.isEmpty(); - } } diff --git a/src/main/java/org/breedinginsight/utilities/email/EmailUtil.java b/src/main/java/org/breedinginsight/utilities/email/EmailUtil.java index 1db3919a0..a839715a1 100644 --- a/src/main/java/org/breedinginsight/utilities/email/EmailUtil.java +++ b/src/main/java/org/breedinginsight/utilities/email/EmailUtil.java @@ -19,7 +19,7 @@ import io.micronaut.context.annotation.Property; import io.micronaut.http.server.exceptions.HttpServerException; -import org.breedinginsight.utilities.Utilities; +import org.apache.commons.lang3.StringUtils; import javax.inject.Singleton; import javax.mail.*; @@ -49,7 +49,7 @@ private Session getSmtpHost() { props.put("mail.smtp.port", smtpHostPort); props.put("mail.debug", true); Authenticator auth = null; - if (Utilities.isNeitherNullNorEmpty(smtpLogin) && Utilities.isNeitherNullNorEmpty(smtpPassword)) { + if (StringUtils.isNotBlank(smtpLogin) && StringUtils.isNotBlank(smtpPassword)) { props.put("mail.smtp.auth", true); props.put("mail.smtp.ssl.trust", smtpHostServer); props.put("mail.smtp.starttls.enable", true);