diff --git a/server/account-service/src/index.ts b/server/account-service/src/index.ts index 6e19aeb05d..268b663bc3 100644 --- a/server/account-service/src/index.ts +++ b/server/account-service/src/index.ts @@ -64,6 +64,8 @@ export function serveAccount (measureCtx: MeasureContext, brandings: BrandingMap }) const ses = process.env.SES_URL + const sesAuthToken = process.env.SES_AUTH_TOKEN + const frontURL = process.env.FRONT_URL const productName = process.env.PRODUCT_NAME const lang = process.env.LANGUAGE ?? 'en' @@ -85,6 +87,8 @@ export function serveAccount (measureCtx: MeasureContext, brandings: BrandingMap setMetadata(account.metadata.OtpTimeToLiveSec, parseInt(process.env.OTP_TIME_TO_LIVE ?? '60')) setMetadata(account.metadata.OtpRetryDelaySec, parseInt(process.env.OTP_RETRY_DELAY ?? '60')) setMetadata(account.metadata.SES_URL, ses) + setMetadata(account.metadata.SES_AUTH_TOKEN, sesAuthToken) + setMetadata(account.metadata.FrontURL, frontURL) setMetadata(account.metadata.WsLivenessDays, wsLivenessDays) diff --git a/server/account/src/operations.ts b/server/account/src/operations.ts index cc12e367ff..c842d76fc5 100644 --- a/server/account/src/operations.ts +++ b/server/account/src/operations.ts @@ -371,7 +371,7 @@ export async function sendInvite ( throw new PlatformError(new Status(Severity.ERROR, platform.status.WorkspaceNotFound, { workspaceUuid })) } - const sesURL = getSesUrl() + const { sesURL, sesAuth } = getSesUrl() const front = getFrontUrl(branding) const expHours = 48 const exp = expHours * 60 * 60 * 1000 @@ -389,7 +389,8 @@ export async function sendInvite ( await fetch(concatLink(sesURL, '/send'), { method: 'post', headers: { - 'Content-Type': 'application/json' + 'Content-Type': 'application/json', + ...(sesAuth != null ? { Authorization: `Bearer ${sesAuth}` } : {}) }, body: JSON.stringify({ text, @@ -599,7 +600,7 @@ export async function requestPasswordReset ( ) } - const sesURL = getSesUrl() + const { sesURL, sesAuth } = getSesUrl() const front = getFrontUrl(branding) const token = generateToken(account.uuid, undefined, { @@ -615,7 +616,8 @@ export async function requestPasswordReset ( await fetch(concatLink(sesURL, '/send'), { method: 'post', headers: { - 'Content-Type': 'application/json' + 'Content-Type': 'application/json', + ...(sesAuth != null ? { Authorization: `Bearer ${sesAuth}` } : {}) }, body: JSON.stringify({ text, diff --git a/server/account/src/plugin.ts b/server/account/src/plugin.ts index 311dbfb451..967971db04 100644 --- a/server/account/src/plugin.ts +++ b/server/account/src/plugin.ts @@ -12,6 +12,7 @@ export const accountPlugin = plugin(accountId, { metadata: { FrontURL: '' as Metadata, SES_URL: '' as Metadata, + SES_AUTH_TOKEN: '' as Metadata, ProductName: '' as Metadata, Transactors: '' as Metadata, OtpTimeToLiveSec: '' as Metadata, diff --git a/server/account/src/utils.ts b/server/account/src/utils.ts index 7eca625b92..ceb08465d7 100644 --- a/server/account/src/utils.ts +++ b/server/account/src/utils.ts @@ -378,6 +378,7 @@ export async function sendOtpEmail ( ctx.error('Please provide email service url to enable email otp') return } + const sesAuth = getMetadata(accountPlugin.metadata.SES_AUTH_TOKEN) const lang = branding?.language const app = branding?.title ?? getMetadata(accountPlugin.metadata.ProductName) @@ -390,7 +391,8 @@ export async function sendOtpEmail ( await fetch(concatLink(sesURL, '/send'), { method: 'POST', headers: { - 'Content-Type': 'application/json' + 'Content-Type': 'application/json', + ...(sesAuth != null ? { Authorization: `Bearer ${sesAuth}` } : {}) }, body: JSON.stringify({ text, @@ -735,6 +737,8 @@ export async function sendEmailConfirmation ( throw new PlatformError(new Status(Severity.ERROR, platform.status.InternalServerError, {})) } + const sesAuth = getMetadata(accountPlugin.metadata.SES_AUTH_TOKEN) + const front = branding?.front ?? getMetadata(accountPlugin.metadata.FrontURL) if (front === undefined || front === '') { ctx.error('Please provide front url via branding configuration or FRONT_URL variable') @@ -756,7 +760,8 @@ export async function sendEmailConfirmation ( await fetch(concatLink(sesURL, '/send'), { method: 'post', headers: { - 'Content-Type': 'application/json' + 'Content-Type': 'application/json', + ...(sesAuth != null ? { Authorization: `Bearer ${sesAuth}` } : {}) }, body: JSON.stringify({ text, @@ -863,14 +868,15 @@ export async function getEmailSocialId (db: AccountDB, email: string): Promise