Add reject button + email on trust center access request
Signed-off-by: Émile Ré <nemile.re@gmail.com>
This commit is contained in:
@@ -40,20 +40,22 @@ const (
|
||||
)
|
||||
|
||||
var (
|
||||
confirmEmailHTMLTemplate = htmltemplate.Must(htmltemplate.ParseFS(Templates, "dist/confirm-email.html.tmpl"))
|
||||
confirmEmailTextTemplate = texttemplate.Must(texttemplate.ParseFS(Templates, "dist/confirm-email.txt.tmpl"))
|
||||
passwordResetHTMLTemplate = htmltemplate.Must(htmltemplate.ParseFS(Templates, "dist/password-reset.html.tmpl"))
|
||||
passwordResetTextTemplate = texttemplate.Must(texttemplate.ParseFS(Templates, "dist/password-reset.txt.tmpl"))
|
||||
invitationHTMLTemplate = htmltemplate.Must(htmltemplate.ParseFS(Templates, "dist/invitation.html.tmpl"))
|
||||
invitationTextTemplate = texttemplate.Must(texttemplate.ParseFS(Templates, "dist/invitation.txt.tmpl"))
|
||||
documentSigningHTMLTemplate = htmltemplate.Must(htmltemplate.ParseFS(Templates, "dist/document-signing.html.tmpl"))
|
||||
documentSigningTextTemplate = texttemplate.Must(texttemplate.ParseFS(Templates, "dist/document-signing.txt.tmpl"))
|
||||
documentExportHTMLTemplate = htmltemplate.Must(htmltemplate.ParseFS(Templates, "dist/document-export.html.tmpl"))
|
||||
documentExportTextTemplate = texttemplate.Must(texttemplate.ParseFS(Templates, "dist/document-export.txt.tmpl"))
|
||||
frameworkExportHTMLTemplate = htmltemplate.Must(htmltemplate.ParseFS(Templates, "dist/framework-export.html.tmpl"))
|
||||
frameworkExportTextTemplate = texttemplate.Must(texttemplate.ParseFS(Templates, "dist/framework-export.txt.tmpl"))
|
||||
trustCenterAccessHTMLTemplate = htmltemplate.Must(htmltemplate.ParseFS(Templates, "dist/trust-center-access.html.tmpl"))
|
||||
trustCenterAccessTextTemplate = texttemplate.Must(texttemplate.ParseFS(Templates, "dist/trust-center-access.txt.tmpl"))
|
||||
confirmEmailHTMLTemplate = htmltemplate.Must(htmltemplate.ParseFS(Templates, "dist/confirm-email.html.tmpl"))
|
||||
confirmEmailTextTemplate = texttemplate.Must(texttemplate.ParseFS(Templates, "dist/confirm-email.txt.tmpl"))
|
||||
passwordResetHTMLTemplate = htmltemplate.Must(htmltemplate.ParseFS(Templates, "dist/password-reset.html.tmpl"))
|
||||
passwordResetTextTemplate = texttemplate.Must(texttemplate.ParseFS(Templates, "dist/password-reset.txt.tmpl"))
|
||||
invitationHTMLTemplate = htmltemplate.Must(htmltemplate.ParseFS(Templates, "dist/invitation.html.tmpl"))
|
||||
invitationTextTemplate = texttemplate.Must(texttemplate.ParseFS(Templates, "dist/invitation.txt.tmpl"))
|
||||
documentSigningHTMLTemplate = htmltemplate.Must(htmltemplate.ParseFS(Templates, "dist/document-signing.html.tmpl"))
|
||||
documentSigningTextTemplate = texttemplate.Must(texttemplate.ParseFS(Templates, "dist/document-signing.txt.tmpl"))
|
||||
documentExportHTMLTemplate = htmltemplate.Must(htmltemplate.ParseFS(Templates, "dist/document-export.html.tmpl"))
|
||||
documentExportTextTemplate = texttemplate.Must(texttemplate.ParseFS(Templates, "dist/document-export.txt.tmpl"))
|
||||
frameworkExportHTMLTemplate = htmltemplate.Must(htmltemplate.ParseFS(Templates, "dist/framework-export.html.tmpl"))
|
||||
frameworkExportTextTemplate = texttemplate.Must(texttemplate.ParseFS(Templates, "dist/framework-export.txt.tmpl"))
|
||||
trustCenterAccessHTMLTemplate = htmltemplate.Must(htmltemplate.ParseFS(Templates, "dist/trust-center-access.html.tmpl"))
|
||||
trustCenterAccessTextTemplate = texttemplate.Must(texttemplate.ParseFS(Templates, "dist/trust-center-access.txt.tmpl"))
|
||||
trustCenterDocumentAccessRejectedHTMLTemplate = htmltemplate.Must(htmltemplate.ParseFS(Templates, "dist/trust-center-document-access-rejected.html.tmpl"))
|
||||
trustCenterDocumentAccessRejectedTextTemplate = texttemplate.Must(texttemplate.ParseFS(Templates, "dist/trust-center-document-access-rejected.txt.tmpl"))
|
||||
)
|
||||
|
||||
func RenderConfirmEmail(baseURL, fullName, confirmationUrl string) (subject string, textBody string, htmlBody *string, err error) {
|
||||
@@ -171,6 +173,28 @@ func RenderTrustCenterAccess(baseURL, fullName, organizationName, accessUrl stri
|
||||
return fmt.Sprintf(subjectTrustCenterAccess, organizationName), textBody, htmlBody, err
|
||||
}
|
||||
|
||||
func RenderTrustCenterDocumentAccessRejected(
|
||||
baseURL string,
|
||||
fullName string,
|
||||
organizationName string,
|
||||
fileNames []string,
|
||||
) (subject string, textBody string, htmlBody *string, err error) {
|
||||
data := struct {
|
||||
FullName string
|
||||
OrganizationName string
|
||||
LogoURL string
|
||||
FileNames []string
|
||||
}{
|
||||
FullName: fullName,
|
||||
OrganizationName: organizationName,
|
||||
LogoURL: baseURL + logoURLPath,
|
||||
FileNames: fileNames,
|
||||
}
|
||||
|
||||
textBody, htmlBody, err = renderEmail(trustCenterDocumentAccessRejectedTextTemplate, trustCenterDocumentAccessRejectedHTMLTemplate, data)
|
||||
return fmt.Sprintf(subjectTrustCenterAccess, organizationName), textBody, htmlBody, err
|
||||
}
|
||||
|
||||
func renderEmail(textTemplate *texttemplate.Template, htmlTemplate *htmltemplate.Template, data any) (textBody string, htmlBody *string, err error) {
|
||||
var textBuf bytes.Buffer
|
||||
if err := textTemplate.Execute(&textBuf, data); err != nil {
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
"react-email": "^4.3.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@react-email/preview-server": "^4.3.2",
|
||||
"@types/node": "^22.10.7",
|
||||
"@types/react": "^19.0.6",
|
||||
"tsx": "^4.19.2",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { render } from '@react-email/components';
|
||||
import { copyFile, mkdir, writeFile } from 'fs/promises';
|
||||
import { dirname, join } from 'path';
|
||||
import { fileURLToPath } from 'url';
|
||||
import { copyFile, mkdir, writeFile } from 'node:fs/promises';
|
||||
import { dirname, join } from 'node:path';
|
||||
import { fileURLToPath } from 'node:url';
|
||||
import * as React from 'react';
|
||||
|
||||
import ConfirmEmail from '../src/ConfirmEmail';
|
||||
@@ -11,6 +11,7 @@ import FrameworkExport from '../src/FrameworkExport';
|
||||
import Invitation from '../src/Invitation';
|
||||
import PasswordReset from '../src/PasswordReset';
|
||||
import TrustCenterAccess from '../src/TrustCenterAccess';
|
||||
import TrustCenterDocumentAccessRejected from '../src/TrustCenterDocumentAccessRejected';
|
||||
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = dirname(__filename);
|
||||
@@ -49,6 +50,10 @@ const templates: TemplateConfig[] = [
|
||||
name: 'trust-center-access',
|
||||
render: () => TrustCenterAccess()
|
||||
},
|
||||
{
|
||||
name: 'trust-center-document-access-rejected',
|
||||
render: () => TrustCenterDocumentAccessRejected()
|
||||
},
|
||||
];
|
||||
|
||||
async function build() {
|
||||
|
||||
21
packages/emails/src/TrustCenterDocumentAccessRejected.tsx
Normal file
21
packages/emails/src/TrustCenterDocumentAccessRejected.tsx
Normal file
@@ -0,0 +1,21 @@
|
||||
import { Column, Row, Text } from '@react-email/components';
|
||||
import * as React from 'react';
|
||||
import EmailLayout, { bodyText, footerText } from './components/EmailLayout';
|
||||
|
||||
export const TrustCenterDocumentAccessRejected = () => {
|
||||
return (
|
||||
<EmailLayout subject={`Trust Center Access Invitation - ${'{{.OrganizationName}}'}`} organizationName={'{{.OrganizationName}}'}>
|
||||
<Text style={bodyText}>
|
||||
Your access request to the following files in <strong>{'{{.OrganizationName}}'}</strong>'s Trust Center has been rejected:
|
||||
</Text>
|
||||
|
||||
<Text style={bodyText}>
|
||||
{'{{range .FileNames}}'}
|
||||
• {'{{.}}'}<br/>
|
||||
{'{{end}}'}
|
||||
</Text>
|
||||
</EmailLayout>
|
||||
);
|
||||
};
|
||||
|
||||
export default TrustCenterDocumentAccessRejected;
|
||||
@@ -0,0 +1,11 @@
|
||||
Probo
|
||||
|
||||
Hi {{.FullName}},
|
||||
|
||||
Your access request to the following files in {{.OrganizationName}}'s Trust Center has been rejected:
|
||||
|
||||
{{range .FileNames}}
|
||||
- {{.}}
|
||||
{{end}}
|
||||
|
||||
Probo Inc, 490 Post St, STE 640, San Francisco, CA, 94102, US
|
||||
@@ -7,6 +7,6 @@
|
||||
"lib": ["ES2023", "DOM", "DOM.Iterable"],
|
||||
"types": ["node"]
|
||||
},
|
||||
"include": ["src/**/*"],
|
||||
"include": ["src/**/*", "scripts/**/*"],
|
||||
"exclude": ["node_modules", "dist"]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user