From 8e57787ad45f790748322ca63c2d83fea05e2b93 Mon Sep 17 00:00:00 2001 From: Mohit Yadav <105265192+mohityadav766@users.noreply.github.com> Date: Mon, 21 Nov 2022 14:31:05 +0530 Subject: [PATCH] Fix Url For Email Verification etc (#8904) * Fix Url For Email Verification etc * yaml fix --- .../service/security/auth/BasicAuthenticator.java | 10 ++++------ .../org/openmetadata/service/util/EmailUtil.java | 15 +++++++++++++++ .../service/util/NotificationHandler.java | 6 +++--- .../resources/json/schema/email/smtpSettings.json | 2 +- 4 files changed, 23 insertions(+), 10 deletions(-) diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/security/auth/BasicAuthenticator.java b/openmetadata-service/src/main/java/org/openmetadata/service/security/auth/BasicAuthenticator.java index 7f692530e70..8eccd60dfed 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/security/auth/BasicAuthenticator.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/security/auth/BasicAuthenticator.java @@ -156,9 +156,8 @@ public class BasicAuthenticator implements AuthenticatorHandler { LOG.info("Generated Email verification token [" + mailVerificationToken + "]"); String emailVerificationLink = String.format( - "%s://%s/users/registrationConfirmation?user=%s&token=%s", - uriInfo.getRequestUri().getScheme(), - uriInfo.getRequestUri().getHost(), + "%s/users/registrationConfirmation?user=%s&token=%s", + EmailUtil.getInstance().buildBaseUrl(uriInfo.getRequestUri()), user.getFullyQualifiedName(), mailVerificationToken); try { @@ -180,9 +179,8 @@ public class BasicAuthenticator implements AuthenticatorHandler { LOG.info("Generated Password Reset verification token [" + mailVerificationToken + "]"); String passwordResetLink = String.format( - "%s://%s/users/password/reset?user=%s&token=%s", - uriInfo.getRequestUri().getScheme(), - uriInfo.getRequestUri().getHost(), + "%s/users/password/reset?user=%s&token=%s", + EmailUtil.getInstance().buildBaseUrl(uriInfo.getRequestUri()), user.getFullyQualifiedName(), mailVerificationToken); try { diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/util/EmailUtil.java b/openmetadata-service/src/main/java/org/openmetadata/service/util/EmailUtil.java index f0d359730d8..4d9e7e1be25 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/util/EmailUtil.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/util/EmailUtil.java @@ -10,9 +10,11 @@ import freemarker.template.Template; import freemarker.template.TemplateException; import java.io.IOException; import java.io.StringWriter; +import java.net.URI; import java.util.HashMap; import java.util.Map; import lombok.extern.slf4j.Slf4j; +import org.openmetadata.common.utils.CommonUtil; import org.openmetadata.schema.email.EmailRequest; import org.openmetadata.schema.email.SmtpSettings; import org.openmetadata.schema.entity.feed.Thread; @@ -278,6 +280,19 @@ public class EmailUtil { } } + public String buildBaseUrl(URI uri) { + try { + if (CommonUtil.nullOrEmpty(this.defaultSmtpSettings.getOpenMetadataUrl())) { + return String.format("%s://%s", uri.getScheme(), uri.getHost()); + } else { + URI serverUrl = new URI(this.defaultSmtpSettings.getOpenMetadataUrl()); + return String.format("%s://%s", serverUrl.getScheme(), serverUrl.getHost()); + } + } catch (Exception ex) { + throw new IllegalArgumentException("Missing URI info from URI and SMTP settings."); + } + } + public void testConnection() { mailer.testConnection(); } diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/util/NotificationHandler.java b/openmetadata-service/src/main/java/org/openmetadata/service/util/NotificationHandler.java index d8fc1190529..241e64defb5 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/util/NotificationHandler.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/util/NotificationHandler.java @@ -171,7 +171,7 @@ public class NotificationHandler { user.getName(), user.getEmail(), String.format( - "%s://%s/users/%s/tasks", urlInstance.getScheme(), urlInstance.getHost(), user.getName()), + "%s/users/%s/tasks", EmailUtil.getInstance().buildBaseUrl(urlInstance), user.getName()), thread, EmailUtil.getInstance().getTaskAssignmentSubject(), EmailUtil.TASK_NOTIFICATION_TEMPLATE); @@ -252,8 +252,8 @@ public class NotificationHandler { URI urlInstance = testCase.getHref(); String testLinkUrl = String.format( - "%s://%s/table/%s/activity_feed", - urlInstance.getScheme(), urlInstance.getHost(), testCase.getEntityFQN()); + "%s/table/%s/activity_feed", + EmailUtil.getInstance().buildBaseUrl(urlInstance), testCase.getEntityFQN()); try { EmailUtil.getInstance() .sendTestResultEmailNotificationToUser( diff --git a/openmetadata-spec/src/main/resources/json/schema/email/smtpSettings.json b/openmetadata-spec/src/main/resources/json/schema/email/smtpSettings.json index 961adf24b65..3c7675e34f7 100644 --- a/openmetadata-spec/src/main/resources/json/schema/email/smtpSettings.json +++ b/openmetadata-spec/src/main/resources/json/schema/email/smtpSettings.json @@ -52,5 +52,5 @@ } }, "additionalProperties": false, - "required": ["serverEndpoint", "serverPort", "username", "password", "senderMail"] + "required": ["serverEndpoint", "serverPort", "username", "password", "senderMail", "openMetadataUrl"] } \ No newline at end of file