feat: configure audit log embedding per document

This commit is contained in:
ephraimduncan
2026-05-21 03:42:41 +00:00
parent c0ea4c60e4
commit 89c804a635
28 changed files with 353 additions and 40 deletions
@@ -41,6 +41,7 @@ import { TemplateTypeSelect, TemplateTypeTooltip } from '@documenso/ui/component
import { cn } from '@documenso/ui/lib/utils';
import { Button } from '@documenso/ui/primitives/button';
import { CardDescription, CardHeader, CardTitle } from '@documenso/ui/primitives/card';
import { Checkbox } from '@documenso/ui/primitives/checkbox';
import { Combobox } from '@documenso/ui/primitives/combobox';
import {
Dialog,
@@ -50,7 +51,15 @@ import {
DialogTitle,
DialogTrigger,
} from '@documenso/ui/primitives/dialog';
import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from '@documenso/ui/primitives/form/form';
import {
Form,
FormControl,
FormDescription,
FormField,
FormItem,
FormLabel,
FormMessage,
} from '@documenso/ui/primitives/form/form';
import { Input } from '@documenso/ui/primitives/input';
import { MultiSelectCombobox } from '@documenso/ui/primitives/multi-select-combobox';
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@documenso/ui/primitives/select';
@@ -93,6 +102,7 @@ export const ZAddSettingsFormSchema = z.object({
timezone: ZDocumentMetaTimezoneSchema.default(DEFAULT_DOCUMENT_TIME_ZONE),
dateFormat: ZDocumentMetaDateFormatSchema.default(DEFAULT_DOCUMENT_DATE_FORMAT),
distributionMethod: z.nativeEnum(DocumentDistributionMethod).optional().default(DocumentDistributionMethod.EMAIL),
includeAuditLog: z.boolean().default(false),
redirectUrl: z
.string()
.optional()
@@ -181,6 +191,7 @@ export const EnvelopeEditorSettingsDialog = ({ trigger, ...props }: EnvelopeEdit
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
dateFormat: (envelope.documentMeta.dateFormat ?? DEFAULT_DOCUMENT_DATE_FORMAT) as TDocumentMetaDateFormat,
distributionMethod: envelope.documentMeta.distributionMethod || DocumentDistributionMethod.EMAIL,
includeAuditLog: envelope.documentMeta.includeAuditLog,
redirectUrl: envelope.documentMeta.redirectUrl ?? '',
language: envelope.documentMeta.language ?? 'en',
emailId: envelope.documentMeta.emailId ?? null,
@@ -236,6 +247,7 @@ export const EnvelopeEditorSettingsDialog = ({ trigger, ...props }: EnvelopeEdit
emailReplyTo,
envelopeExpirationPeriod,
reminderSettings,
includeAuditLog,
} = data.meta;
const parsedGlobalAccessAuth = z.array(ZDocumentAccessAuthTypesSchema).safeParse(data.globalAccessAuth);
@@ -265,6 +277,7 @@ export const EnvelopeEditorSettingsDialog = ({ trigger, ...props }: EnvelopeEdit
uploadSignatureEnabled: signatureTypes.includes(DocumentSignatureType.UPLOAD),
envelopeExpirationPeriod,
reminderSettings,
includeAuditLog,
},
});
@@ -892,6 +905,35 @@ export const EnvelopeEditorSettingsDialog = ({ trigger, ...props }: EnvelopeEdit
)}
/>
<FormField
control={form.control}
name="meta.includeAuditLog"
render={({ field }) => (
<FormItem>
<div className="flex items-center">
<FormControl>
<Checkbox
id="include-audit-log"
checked={field.value}
disabled={field.disabled || envelopeHasBeenSent}
onCheckedChange={(checked) => field.onChange(Boolean(checked))}
/>
</FormControl>
<FormLabel className="ml-2 text-muted-foreground text-sm" htmlFor="include-audit-log">
<Trans>Include audit logs in downloaded PDF</Trans>
</FormLabel>
</div>
<FormDescription>
<Trans>
Audit logs remain available to download separately from the document logs page.
</Trans>
</FormDescription>
</FormItem>
)}
/>
{!isEmbedded && (
<FormField
control={form.control}