improvement: address feedback

This commit is contained in:
Scott Wilson
2025-05-02 11:08:41 -07:00
parent 66fbcc6806
commit c7e707f20a
32 changed files with 65 additions and 123 deletions

View File

@@ -71,6 +71,7 @@ import { TIdentityTokenAuthServiceFactory } from "@app/services/identity-token-a
import { TIdentityUaServiceFactory } from "@app/services/identity-ua/identity-ua-service";
import { TIntegrationServiceFactory } from "@app/services/integration/integration-service";
import { TIntegrationAuthServiceFactory } from "@app/services/integration-auth/integration-auth-service";
import { TMicrosoftTeamsServiceFactory } from "@app/services/microsoft-teams/microsoft-teams-service";
import { TOrgRoleServiceFactory } from "@app/services/org/org-role-service";
import { TOrgServiceFactory } from "@app/services/org/org-service";
import { TOrgAdminServiceFactory } from "@app/services/org-admin/org-admin-service";
@@ -100,7 +101,6 @@ import { TUserServiceFactory } from "@app/services/user/user-service";
import { TUserEngagementServiceFactory } from "@app/services/user-engagement/user-engagement-service";
import { TWebhookServiceFactory } from "@app/services/webhook/webhook-service";
import { TWorkflowIntegrationServiceFactory } from "@app/services/workflow-integration/workflow-integration-service";
import { TMicrosoftTeamsServiceFactory } from "@app/services/microsoft-teams/microsoft-teams-service";
declare module "@fastify/request-context" {
interface RequestContextData {

View File

@@ -26,6 +26,7 @@ import { registerIdentityUaRouter } from "./identity-universal-auth-router";
import { registerIntegrationAuthRouter } from "./integration-auth-router";
import { registerIntegrationRouter } from "./integration-router";
import { registerInviteOrgRouter } from "./invite-org-router";
import { registerMicrosoftTeamsRouter } from "./microsoft-teams-router";
import { registerOrgAdminRouter } from "./org-admin-router";
import { registerOrgRouter } from "./organization-router";
import { registerPasswordRouter } from "./password-router";
@@ -47,7 +48,6 @@ import { registerUserEngagementRouter } from "./user-engagement-router";
import { registerUserRouter } from "./user-router";
import { registerWebhookRouter } from "./webhook-router";
import { registerWorkflowIntegrationRouter } from "./workflow-integration-router";
import { registerMicrosoftTeamsRouter } from "./microsoft-teams-router";
export const registerV1Routes = async (server: FastifyZodProvider) => {
await server.register(registerSsoRouter, { prefix: "/sso" });

View File

@@ -15,7 +15,7 @@ export const EmailMfaTemplate = ({ code, siteUrl, isCloud }: EmailMfaTemplatePro
<strong>MFA required</strong>
</Heading>
<Section className="px-[24px] mt-[36px] pt-[8px] text-center pb-[8px] text-[14px] border border-solid border-gray-200 rounded-md bg-gray-50">
<Text>Enter the MFA code below in the browser where you started sign-in.</Text>
<Text>Enter the MFA code shown below in the browser where you started sign-in.</Text>
<Text className="text-[24px] mt-[16px]">
<strong>{code}</strong>
</Text>
@@ -26,7 +26,7 @@ export const EmailMfaTemplate = ({ code, siteUrl, isCloud }: EmailMfaTemplatePro
{isCloud ? (
<>
Contact us at{" "}
<Link href={`mailto:support@infisical.com`} className="text-slate-700 no-underline">
<Link href="mailto:support@infisical.com" className="text-slate-700 no-underline">
support@infisical.com
</Link>{" "}
immediately

View File

@@ -12,14 +12,14 @@ export const EmailVerificationTemplate = ({ code, siteUrl, isCloud }: EmailVerif
return (
<BaseEmailWrapper
title="Confirm Your Email Address"
preview="Verify your email address to get continue with Infisical."
preview="Verify your email address to continue with Infisical."
siteUrl={siteUrl}
>
<Heading className="text-black text-[18px] leading-[28px] text-center font-normal p-0 mx-0">
<strong>Confirm your email address</strong>
</Heading>
<Section className="px-[24px] mt-[36px] pt-[8px] text-center pb-[8px] text-[14px] border border-solid border-gray-200 rounded-md bg-gray-50">
<Text>Enter the confirmation code below in the browser window requiring confirmation.</Text>
<Text>Enter the confirmation code shown below in the browser window requiring confirmation.</Text>
<Text className="text-[24px] mt-[16px]">
<strong>{code}</strong>
</Text>
@@ -30,7 +30,7 @@ export const EmailVerificationTemplate = ({ code, siteUrl, isCloud }: EmailVerif
{isCloud ? (
<>
Email us at{" "}
<Link href={`mailto:support@infisical.com`} className="text-slate-700 no-underline">
<Link href="mailto:support@infisical.com" className="text-slate-700 no-underline">
support@infisical.com
</Link>
</>

View File

@@ -21,7 +21,7 @@ export const ExternalImportFailedTemplate = ({ error, siteUrl, provider }: Exter
</Text>
<Text className="text-black text-[14px] leading-[24px]">
If your issue persists, you can contact the Infisical team at{" "}
<Link href={`mailto:support@infisical.com`} className="text-slate-700 no-underline">
<Link href="mailto:support@infisical.com" className="text-slate-700 no-underline">
support@infisical.com
</Link>
.

View File

@@ -26,5 +26,6 @@ export const ExternalImportStartedTemplate = ({ siteUrl, provider }: ExternalImp
export default ExternalImportStartedTemplate;
ExternalImportStartedTemplate.PreviewProps = {
provider: "EnvKey"
provider: "EnvKey",
siteUrl: "https://infisical.com"
} as ExternalImportStartedTemplateProps;

View File

@@ -24,7 +24,7 @@ export const IntegrationSyncFailedTemplate = ({
return (
<BaseEmailWrapper
title="Integration Sync Failed"
preview="An integration sync has error has occurred."
preview="An integration sync error has occurred."
siteUrl={siteUrl}
>
<Heading className="text-black text-[18px] leading-[28px] text-center font-normal p-0 mx-0">

View File

@@ -42,7 +42,7 @@ export const NewDeviceLoginTemplate = ({
<Text className="mb-[0px]">
If you believe that this login is suspicious, please contact{" "}
{isCloud ? (
<Link href={`mailto:support@infisical.com`} className="text-slate-700 no-underline">
<Link href="mailto:support@infisical.com" className="text-slate-700 no-underline">
support@infisical.com
</Link>
) : (

View File

@@ -24,7 +24,7 @@ export const OrgAdminBreakglassAccessTemplate = ({
siteUrl={siteUrl}
>
<Heading className="text-black text-[18px] leading-[28px] text-center font-normal p-0 mx-0">
The organization admin <strong>{email}</strong> has bypassed enforced SSO login.
The organization admin <strong>{email}</strong> has bypassed enforced SSO login
</Heading>
<Section className="px-[24px] mt-[36px] pt-[24px] pb-[8px] border border-solid border-gray-200 rounded-md bg-gray-50">
<strong className="text-[14px]">Timestamp</strong>
@@ -53,5 +53,5 @@ OrgAdminBreakglassAccessTemplate.PreviewProps = {
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.3.1 Safari/605.1.15",
timestamp: "Tue Apr 29 2025 23:03:27 GMT+0000 (Coordinated Universal Time)",
siteUrl: "https://infisical.com",
email: "august@infiscal.com"
email: "august@infisical.com"
} as OrgAdminBreakglassAccessTemplateProps;

View File

@@ -36,5 +36,6 @@ export default OrgAdminProjectGrantAccessTemplate;
OrgAdminProjectGrantAccessTemplate.PreviewProps = {
email: "kevin@infisical.com",
projectName: "Example Project"
projectName: "Example Project",
siteUrl: "https://infisical.com"
} as OrgAdminProjectGrantAccessTemplateProps;

View File

@@ -47,8 +47,8 @@ export const OrganizationInvitationTemplate = ({
</Section>
<Section className="text-center mt-[28px]">
<Button
href={`${callback_url}?token=${token}${metadata ? `&metadata=${metadata}` : ""}&to=${email}&organization_id=${organizationId}`}
className="rounded-md p-3 px-[28px] my-[8px] text-center text-[16px] bg-[#EBF852] border-solid border border-[#d1e309] text-black font-medium"
href={`${callback_url}?token=${token}${metadata ? `&metadata=${metadata}` : ""}&to=${encodeURIComponent(email)}&organization_id=${organizationId}`}
className="rounded-md p-3 px-[28px] my-[8px] text-center text-[16px] bg-[#EBF852] border-solid border border-[#d1e309] text-black font-medium"
>
Accept Invite
</Button>
@@ -71,5 +71,7 @@ OrganizationInvitationTemplate.PreviewProps = {
inviterUsername: "jane@infisical.com",
email: "john@infisical.com",
siteUrl: "https://infisical.com",
callback_url: "https://app.infisical.com"
callback_url: "https://app.infisical.com",
token: "preview-token",
organizationId: "1ae1c2c7-8068-461c-b15e-421737868a6a"
} as OrganizationInvitationTemplateProps;

View File

@@ -27,7 +27,7 @@ export const PasswordResetTemplate = ({ email, isCloud, siteUrl, callback_url, t
{isCloud ? (
<>
us immediately at{" "}
<Link href={`mailto:support@infisical.com`} className="text-slate-700 no-underline">
<Link href="mailto:support@infisical.com" className="text-slate-700 no-underline">
support@infisical.com
</Link>
</>
@@ -39,8 +39,8 @@ export const PasswordResetTemplate = ({ email, isCloud, siteUrl, callback_url, t
</Section>
<Section className="text-center mt-[28px]">
<Button
href={`${callback_url}?token=${token}&to=${email}`}
className="rounded-md p-3 px-[28px] my-[8px] text-center text-[16px] bg-[#EBF852] border-solid border border-[#d1e309] text-black font-medium"
href={`${callback_url}?token=${token}&to=${encodeURIComponent(email)}`}
className="rounded-md p-3 px-[28px] my-[8px] text-center text-[16px] bg-[#EBF852] border-solid border border-[#d1e309] text-black font-medium"
>
Reset Password
</Button>
@@ -54,5 +54,7 @@ export default PasswordResetTemplate;
PasswordResetTemplate.PreviewProps = {
email: "kevin@infisical.com",
callback_url: "https://app.infisical.com",
isCloud: true
isCloud: true,
token: "preview-token",
siteUrl: "https://infisical.com"
} as PasswordResetTemplateProps;

View File

@@ -26,7 +26,7 @@ export const PasswordSetupTemplate = ({ email, isCloud, siteUrl, callback_url, t
{isCloud ? (
<>
us immediately at{" "}
<Link href={`mailto:support@infisical.com`} className="text-slate-700 no-underline">
<Link href="mailto:support@infisical.com" className="text-slate-700 no-underline">
support@infisical.com
</Link>
</>
@@ -38,8 +38,8 @@ export const PasswordSetupTemplate = ({ email, isCloud, siteUrl, callback_url, t
</Section>
<Section className="text-center mt-[28px]">
<Button
href={`${callback_url}?token=${token}&to=${email}`}
className="rounded-md p-3 px-[28px] my-[8px] text-center text-[16px] bg-[#EBF852] border-solid border border-[#d1e309] text-black font-medium"
href={`${callback_url}?token=${token}&to=${encodeURIComponent(email)}`}
className="rounded-md p-3 px-[28px] my-[8px] text-center text-[16px] bg-[#EBF852] border-solid border border-[#d1e309] text-black font-medium"
>
Set Up Password
</Button>
@@ -53,5 +53,7 @@ export default PasswordSetupTemplate;
PasswordSetupTemplate.PreviewProps = {
email: "casey@infisical.com",
callback_url: "https://app.infisical.com",
isCloud: true
isCloud: true,
siteUrl: "https://infisical.com",
token: "preview-token"
} as PasswordSetupTemplateProps;

View File

@@ -45,10 +45,10 @@ export const PkiExpirationAlertTemplate = ({
</Fragment>
))}
<Hr />
<Text className="text-[14px] leading-[24px]">
<Text className="text-[14px] leading-[24px]">
Please take the necessary actions to renew these items before they expire.
</Text>
<Text className="text-[14px] leading-[24px]">
<Text className="text-[14px] leading-[24px]">
For more details, please log in to your Infisical account and check your PKI management section.
</Text>
</Section>
@@ -61,8 +61,9 @@ export default PkiExpirationAlertTemplate;
PkiExpirationAlertTemplate.PreviewProps = {
alertBeforeDays: 5,
items: [
{ type: "CA", friendlyName: "Example CA", serialNumber: "1234567890", expiryDate: "2022-01-01" },
{ type: "Certificate", friendlyName: "Example Certificate", serialNumber: "1234567890", expiryDate: "2022-01-01" }
{ type: "CA", friendlyName: "Example CA", serialNumber: "1234567890", expiryDate: "2032-01-01" },
{ type: "Certificate", friendlyName: "Example Certificate", serialNumber: "2345678901", expiryDate: "2032-01-01" }
],
alertName: "My PKI Alert"
alertName: "My PKI Alert",
siteUrl: "https://infisical.com"
} as PkiExpirationAlertTemplateProps;

View File

@@ -8,7 +8,6 @@ interface ProjectAccessRequestTemplateProps extends Omit<BaseEmailWrapperProps,
requesterName: string;
requesterEmail: string;
orgName: string;
environment: string;
note: string;
callback_url: string;
}
@@ -64,5 +63,6 @@ ProjectAccessRequestTemplate.PreviewProps = {
orgName: "Example Org",
siteUrl: "https://infisical.com",
projectName: "Example Project",
note: "I need access to the project for the new initiative for HR."
note: "I need access to the project for the new initiative for HR.",
callback_url: "https://infisical.com"
} as ProjectAccessRequestTemplateProps;

View File

@@ -16,7 +16,7 @@ export const ProjectInvitationTemplate = ({ callback_url, workspaceName, siteUrl
siteUrl={siteUrl}
>
<Heading className="text-black text-[18px] leading-[28px] text-center font-normal p-0 mx-0">
You've been invited to join a new project on Infisical
You've been invited to join a project on Infisical
</Heading>
<Section className="px-[24px] mt-[36px] pt-[12px] pb-[8px] border text-center border-solid border-gray-200 rounded-md bg-gray-50">
<Text className="text-black text-[14px] leading-[24px]">
@@ -26,7 +26,7 @@ export const ProjectInvitationTemplate = ({ callback_url, workspaceName, siteUrl
<Section className="text-center mt-[28px]">
<Button
href={callback_url}
className="rounded-md p-3 px-[28px] my-[8px] text-center text-[16px] bg-[#EBF852] border-solid border border-[#d1e309] text-black font-medium"
className="rounded-md p-3 px-[28px] my-[8px] text-center text-[16px] bg-[#EBF852] border-solid border border-[#d1e309] text-black font-medium"
>
Join Project
</Button>

View File

@@ -26,13 +26,13 @@ export const ScimUserProvisionedTemplate = ({
</Heading>
<Section className="px-[24px] mt-[36px] pt-[12px] pb-[8px] border text-center border-solid border-gray-200 rounded-md bg-gray-50">
<Text className="text-black text-[14px] leading-[24px]">
You've been invited you to collaborate on <strong>{organizationName}</strong>.
You've been invited to collaborate on <strong>{organizationName}</strong>.
</Text>
</Section>
<Section className="text-center mt-[28px]">
<Button
href={callback_url}
className="rounded-md p-3 px-[28px] my-[8px] text-center text-[16px] bg-[#EBF852] border-solid border border-[#d1e309] text-black font-medium"
className="rounded-md p-3 px-[28px] my-[8px] text-center text-[16px] bg-[#EBF852] border-solid border border-[#d1e309] text-black font-medium"
>
Accept Invite
</Button>

View File

@@ -25,10 +25,10 @@ export const SecretApprovalRequestNeedsReviewTemplate = ({
siteUrl={siteUrl}
>
<Heading className="text-black text-[18px] leading-[28px] text-center font-normal p-0 mx-0">
A secret approval request for the project <strong>{projectName}</strong> requires review.
A secret approval request for the project <strong>{projectName}</strong> requires review
</Heading>
<Section className="px-[24px] mt-[36px] pt-[12px] pb-[8px] border border-solid border-gray-200 rounded-md bg-gray-50">
<Text className="text-14px">Hello {firstName},</Text>
<Text className="text-[14px]">Hello {firstName},</Text>
<Text className="text-black text-[14px] leading-[24px]">
You have a new secret change request pending your review for the project <strong>{projectName}</strong> in the
organization <strong>{organizationName}</strong>.

View File

@@ -62,8 +62,8 @@ export const SecretLeakIncidentTemplate = ({
</Section>
<Section className="text-center mt-[28px]">
<Button
href={`${siteUrl}/secret-scanning`}
className="rounded-md p-3 px-[28px] my-[8px] text-center text-[16px] bg-[#EBF852] border-solid border border-[#d1e309] text-black font-medium"
href={`${siteUrl}/organization/secret-scanning`}
className="rounded-md p-3 px-[28px] my-[8px] text-center text-[16px] bg-[#EBF852] border-solid border border-[#d1e309] text-black font-medium"
>
View Leaked Secrets
</Button>

View File

@@ -18,7 +18,7 @@ export const SecretReminderTemplate = ({
return (
<BaseEmailWrapper title="Secret Reminder" preview="You have a new secret reminder." siteUrl={siteUrl}>
<Heading className="text-black text-[18px] leading-[28px] text-center font-normal p-0 mx-0">
Secret Reminder
<strong>Secret Reminder</strong>
</Heading>
<Section className="px-[24px] mt-[36px] pt-[8px] pb-[8px] text-[14px] border border-solid border-gray-200 rounded-md bg-gray-50">
<Text className="text-[14px]">

View File

@@ -3,7 +3,7 @@ import React from "react";
import { BaseEmailWrapper, BaseEmailWrapperProps } from "./BaseEmailWrapper";
interface ShareSecretTemplateProps extends Omit<BaseEmailWrapperProps, "title" | "preview" | "children"> {
interface SecretRequestCompletedTemplateProps extends Omit<BaseEmailWrapperProps, "title" | "preview" | "children"> {
name?: string;
respondentUsername: string;
secretRequestUrl: string;
@@ -14,14 +14,14 @@ export const SecretRequestCompletedTemplate = ({
siteUrl,
respondentUsername,
secretRequestUrl
}: ShareSecretTemplateProps) => {
}: SecretRequestCompletedTemplateProps) => {
return (
<BaseEmailWrapper title="Shared Secret" preview="A secret has been shared with you." siteUrl={siteUrl}>
<Heading className="text-black text-[18px] leading-[28px] text-center font-normal p-0 mx-0">
<strong>A secret has been shared with you</strong>
</Heading>
<Section className="px-[24px] mt-[36px] pt-[12px] text-center pb-[8px] border border-solid border-gray-200 rounded-md bg-gray-50">
<Text className="text-14px">
<Text className="text-[14px]">
{respondentUsername ? <strong>{respondentUsername}</strong> : "Someone"} shared a secret{" "}
{name && (
<>
@@ -50,4 +50,4 @@ SecretRequestCompletedTemplate.PreviewProps = {
siteUrl: "https://infisical.com",
secretRequestUrl: "https://infisical.com",
name: "API_TOKEN"
} as ShareSecretTemplateProps;
} as SecretRequestCompletedTemplateProps;

View File

@@ -26,7 +26,7 @@ export const SecretRotationFailedTemplate = ({
return (
<BaseEmailWrapper title="Secret Rotation Failed" preview="A secret rotation failed." siteUrl={siteUrl}>
<Heading className="text-black text-[18px] leading-[28px] text-center font-normal p-0 mx-0">
Your <strong>{rotationType}</strong> Rotation <strong>{rotationName}</strong> failed to rotate
Your <strong>{rotationType}</strong> rotation <strong>{rotationName}</strong> failed to rotate
</Heading>
<Section className="px-[24px] mt-[36px] pt-[26px] pb-[4px] text-[14px] border border-solid border-gray-200 rounded-md bg-gray-50">
<strong>Name</strong>
@@ -47,7 +47,7 @@ export const SecretRotationFailedTemplate = ({
href={`${rotationUrl}?search=${rotationName}&secretPath=${secretPath}`}
className="rounded-md p-3 px-[28px] my-[8px] text-center text-[16px] bg-[#EBF852] border-solid border border-[#d1e309] text-black font-medium"
>
View in Infiscal
View in Infisical
</Button>
</Section>
</BaseEmailWrapper>

View File

@@ -26,7 +26,7 @@ export const SecretSyncFailedTemplate = ({
return (
<BaseEmailWrapper title="Secret Sync Failed" preview="A secret sync failed." siteUrl={siteUrl}>
<Heading className="text-black text-[18px] leading-[28px] text-center font-normal p-0 mx-0">
Your <strong>{syncDestination}</strong> Sync <strong>{syncName}</strong> failed to sync
Your <strong>{syncDestination}</strong> sync <strong>{syncName}</strong> failed to complete
</Heading>
<Section className="px-[24px] mt-[36px] pt-[26px] pb-[4px] text-[14px] border border-solid border-gray-200 rounded-md bg-gray-50">
<strong>Name</strong>
@@ -59,7 +59,7 @@ export const SecretSyncFailedTemplate = ({
href={syncUrl}
className="rounded-md p-3 px-[28px] my-[8px] text-center text-[16px] bg-[#EBF852] border-solid border border-[#d1e309] text-black font-medium"
>
View in Infiscal
View in Infisical
</Button>
</Section>
</BaseEmailWrapper>

View File

@@ -25,7 +25,7 @@ export const ServiceTokenExpiryNoticeTemplate = ({
<strong>Service token expiry notice</strong>
</Heading>
<Section className="px-[24px] mt-[36px] pt-[12px] pb-[8px] border border-solid border-gray-200 rounded-md bg-gray-50">
<Text className="text-14px">
<Text className="text-[14px]">
Your service token <strong>{tokenName}</strong> for the project <strong>{projectName}</strong> will expire
within 24 hours.
</Text>

View File

@@ -19,7 +19,7 @@ export const SignupEmailVerificationTemplate = ({ code, siteUrl, isCloud }: Sign
<strong>Confirm your email address</strong>
</Heading>
<Section className="px-[24px] mt-[36px] pt-[8px] text-center pb-[8px] text-[14px] border border-solid border-gray-200 rounded-md bg-gray-50">
<Text>Enter the confirmation code below in the browser where you started sign-up.</Text>
<Text>Enter the confirmation code shown below in the browser where you started sign-up.</Text>
<Text className="text-[24px] mt-[16px]">
<strong>{code}</strong>
</Text>
@@ -30,7 +30,7 @@ export const SignupEmailVerificationTemplate = ({ code, siteUrl, isCloud }: Sign
{isCloud ? (
<>
Email us at{" "}
<Link href={`mailto:support@infisical.com`} className="text-slate-700 no-underline">
<Link href="mailto:support@infisical.com" className="text-slate-700 no-underline">
support@infisical.com
</Link>
</>

View File

@@ -19,7 +19,7 @@ export const UnlockAccountTemplate = ({ token, siteUrl, callback_url }: UnlockAc
<strong>Unlock your Infisical account</strong>
</Heading>
<Section className="px-[24px] mt-[36px] pt-[12px] pb-[8px] border border-solid border-gray-200 rounded-md bg-gray-50">
<Text className="text-14px">
<Text className="text-[14px]">
Your account has been temporarily locked due to multiple failed login attempts.
</Text>
<Text>If these attempts were not made by you, reset your password immediately.</Text>
@@ -41,6 +41,5 @@ export default UnlockAccountTemplate;
UnlockAccountTemplate.PreviewProps = {
callback_url: "Example Project",
siteUrl: "https://infisical.com",
url: "https://infisical.com",
token: "Example Token"
token: "preview-token"
} as UnlockAccountTemplateProps;

View File

@@ -9,7 +9,6 @@ export * from "./NewDeviceLoginTemplate";
export * from "./OrgAdminBreakglassAccessTemplate";
export * from "./OrgAdminProjectGrantAccessTemplate";
export * from "./OrganizationInvitationTemplate";
export * from "./OrganizationInvitationTemplate";
export * from "./PasswordResetTemplate";
export * from "./PasswordSetupTemplate";
export * from "./PkiExpirationAlertTemplate";

View File

@@ -1,5 +1,4 @@
import { render } from "@react-email/components";
import handlebars from "handlebars";
import { createTransport } from "nodemailer";
import SMTPTransport from "nodemailer/lib/smtp-transport";
import React from "react";
@@ -80,7 +79,7 @@ export enum SmtpTemplates {
export enum SmtpHost {
Sendgrid = "smtp.sendgrid.net",
Mailgun = "smtp.mailgun.org",
SocketLabs = "smtp.sockerlabs.com",
SocketLabs = "smtp.socketlabs.com",
Zohomail = "smtp.zoho.com",
Gmail = "smtp.gmail.com",
Office365 = "smtp.office365.com"
@@ -121,13 +120,6 @@ export const smtpServiceFactory = (cfg: TSmtpConfig) => {
const smtp = createTransport(cfg);
const isSmtpOn = Boolean(cfg.host);
handlebars.registerHelper("emailFooter", () => {
const { SITE_URL } = getConfig();
return new handlebars.SafeString(
`<p style="font-size: 12px;">Email sent via Infisical at <a href="${SITE_URL}">${SITE_URL}</a></p>`
);
});
const sendMail = async ({ substitutions, recipients, template, subjectLine }: TSmtpSendMail) => {
const appCfg = getConfig();

View File

@@ -1,22 +0,0 @@
<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="x-ua-compatible" content="ie=edge" />
<title>Import failed</title>
</head>
<body>
<h2>An import from {{provider}} to Infisical has failed</h2>
<p>An import from
{{provider}}
to Infisical has failed due to unforeseen circumstances. Please re-try your import, and if the issue persists, you
can contact the Infisical team at team@infisical.com.
</p>
<p>Error: {{error}}</p>
{{emailFooter}}
</body>
</html>

View File

@@ -1,19 +0,0 @@
<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="x-ua-compatible" content="ie=edge" />
<title>Import in progress</title>
</head>
<body>
<h2>An import from {{provider}} to Infisical is in progress</h2>
<p>An import from
{{provider}}
to Infisical is in progress. The import process may take up to 30 minutes, and you will receive once the import
has finished or if it fails.</p>
{{emailFooter}}
</body>
</html>

View File

@@ -1,16 +0,0 @@
<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="x-ua-compatible" content="ie=edge" />
<title>Import successful</title>
</head>
<body>
<h2>An import from {{provider}} to Infisical was successful</h2>
<p>An import from {{provider}} was successful. Your data is now available in Infisical.</p>
{{emailFooter}}
</body>
</html>

View File

@@ -26,7 +26,7 @@
"paths": {
"@app/*": ["./src/*"]
},
"jsx": "react"
"jsx": "react-jsx"
},
"include": ["src/**/*", "scripts/**/*", "e2e-test/**/*", "./.eslintrc.js", "./tsup.config.js"],
"exclude": ["node_modules"]