feat: add empty emails for envelopes

This commit is contained in:
David Nguyen
2025-12-02 18:52:02 +11:00
parent 4774324e07
commit 16481bc34e
34 changed files with 977 additions and 193 deletions
@@ -35,8 +35,10 @@ import {
import { getFileServerSide } from '../../universal/upload/get-file.server';
import { putPdfFileServerSide } from '../../universal/upload/put-file.server';
import { isDocumentCompleted } from '../../utils/document';
import { extractDocumentAuthMethods } from '../../utils/document-auth';
import { type EnvelopeIdOptions, mapSecondaryIdToDocumentId } from '../../utils/envelope';
import { toCheckboxCustomText, toRadioCustomText } from '../../utils/fields';
import { isRecipientEmailValidForSending } from '../../utils/recipients';
import { getEnvelopeWhereInput } from '../envelope/get-envelope-by-id';
import { insertFormValuesInPdf } from '../pdf/insert-form-values-in-pdf';
import { triggerWebhook } from '../webhooks/trigger/trigger-webhook';
@@ -128,6 +130,24 @@ export const sendDocument = async ({
);
}
// Validate that recipients with auth requirements have a valid email.
envelope.recipients.forEach((recipient) => {
const auth = extractDocumentAuthMethods({
documentAuth: envelope.authOptions,
recipientAuth: recipient.authOptions,
});
if (
recipient.role !== RecipientRole.CC &&
(auth.recipientAccessAuthRequired || auth.recipientActionAuthRequired) &&
!isRecipientEmailValidForSending(recipient)
) {
throw new AppError(AppErrorCode.INVALID_REQUEST, {
message: `Recipient ${recipient.id} requires an email because they have auth requirements.`,
});
}
});
// Commented out server side checks for minimum 1 signature per signer now since we need to
// decide if we want to enforce this for API & templates.
// const fields = await getFieldsForDocument({