chore: audit trail log cert

This commit is contained in:
Catalin Pit
2025-02-17 11:18:41 +02:00
parent f6a24224fe
commit afb156f073
8 changed files with 58 additions and 8 deletions

View File

@ -41,6 +41,7 @@ const ZTeamDocumentPreferencesFormSchema = z.object({
includeSenderDetails: z.boolean(), includeSenderDetails: z.boolean(),
typedSignatureEnabled: z.boolean(), typedSignatureEnabled: z.boolean(),
includeSigningCertificate: z.boolean(), includeSigningCertificate: z.boolean(),
includeAuditTrailLog: z.boolean(),
}); });
type TTeamDocumentPreferencesFormSchema = z.infer<typeof ZTeamDocumentPreferencesFormSchema>; type TTeamDocumentPreferencesFormSchema = z.infer<typeof ZTeamDocumentPreferencesFormSchema>;
@ -72,6 +73,7 @@ export const TeamDocumentPreferencesForm = ({
includeSenderDetails: settings?.includeSenderDetails ?? false, includeSenderDetails: settings?.includeSenderDetails ?? false,
typedSignatureEnabled: settings?.typedSignatureEnabled ?? true, typedSignatureEnabled: settings?.typedSignatureEnabled ?? true,
includeSigningCertificate: settings?.includeSigningCertificate ?? true, includeSigningCertificate: settings?.includeSigningCertificate ?? true,
includeAuditTrailLog: settings?.includeAuditTrailLog ?? false,
}, },
resolver: zodResolver(ZTeamDocumentPreferencesFormSchema), resolver: zodResolver(ZTeamDocumentPreferencesFormSchema),
}); });
@ -300,6 +302,37 @@ export const TeamDocumentPreferencesForm = ({
)} )}
/> />
<FormField
control={form.control}
name="includeAuditTrailLog"
render={({ field }) => (
<FormItem className="flex-1">
<FormLabel>
<Trans>Include the Audit Trail Log in the Document</Trans>
</FormLabel>
<div>
<FormControl className="block">
<Switch
ref={field.ref}
name={field.name}
checked={field.value}
onCheckedChange={field.onChange}
/>
</FormControl>
</div>
<FormDescription>
<Trans>
Controls whether the audit trail log will be included in the document when it is
downloaded. The audit trail log can still be downloaded from the logs page
separately.
</Trans>
</FormDescription>
</FormItem>
)}
/>
<div className="flex flex-row justify-end space-x-4"> <div className="flex flex-row justify-end space-x-4">
<Button type="submit" loading={form.formState.isSubmitting}> <Button type="submit" loading={form.formState.isSubmitting}>
<Trans>Save</Trans> <Trans>Save</Trans>

View File

@ -17,6 +17,7 @@ const SEND_TEAM_DELETED_EMAIL_JOB_DEFINITION_SCHEMA = z.object({
documentLanguage: z.string(), documentLanguage: z.string(),
includeSenderDetails: z.boolean(), includeSenderDetails: z.boolean(),
includeSigningCertificate: z.boolean(), includeSigningCertificate: z.boolean(),
includeAuditTrailLog: z.boolean(),
brandingEnabled: z.boolean(), brandingEnabled: z.boolean(),
brandingLogo: z.string(), brandingLogo: z.string(),
brandingUrl: z.string(), brandingUrl: z.string(),

View File

@ -58,6 +58,7 @@ export const run = async ({
teamGlobalSettings: { teamGlobalSettings: {
select: { select: {
includeSigningCertificate: true, includeSigningCertificate: true,
includeAuditTrailLog: true,
}, },
}, },
}, },
@ -130,10 +131,13 @@ export const run = async ({
}).catch(() => null) }).catch(() => null)
: null; : null;
const auditLogData = await getAuditLogsPdf({ const auditLogData =
documentId, (document.team?.teamGlobalSettings?.includeAuditTrailLog ?? true)
language: document.documentMeta?.language, ? await getAuditLogsPdf({
}).catch(() => null); documentId,
language: document.documentMeta?.language,
}).catch(() => null)
: null;
const newDataId = await io.runTask('decorate-and-sign-pdf', async () => { const newDataId = await io.runTask('decorate-and-sign-pdf', async () => {
const pdfDoc = await PDFDocument.load(pdfData); const pdfDoc = await PDFDocument.load(pdfData);

View File

@ -62,6 +62,7 @@ export const sealDocument = async ({
teamGlobalSettings: { teamGlobalSettings: {
select: { select: {
includeSigningCertificate: true, includeSigningCertificate: true,
includeAuditTrailLog: true,
}, },
}, },
}, },
@ -118,10 +119,13 @@ export const sealDocument = async ({
}).catch(() => null) }).catch(() => null)
: null; : null;
const auditLogData = await getAuditLogsPdf({ const auditLogData =
documentId, (document.team?.teamGlobalSettings?.includeAuditTrailLog ?? true)
language: document.documentMeta?.language, ? await getAuditLogsPdf({
}).catch(() => null); documentId,
language: document.documentMeta?.language,
}).catch(() => null)
: null;
const doc = await PDFDocument.load(pdfData); const doc = await PDFDocument.load(pdfData);

View File

@ -17,6 +17,7 @@ export type UpdateTeamDocumentSettingsOptions = {
includeSenderDetails: boolean; includeSenderDetails: boolean;
typedSignatureEnabled: boolean; typedSignatureEnabled: boolean;
includeSigningCertificate: boolean; includeSigningCertificate: boolean;
includeAuditTrailLog: boolean;
}; };
}; };
@ -36,6 +37,7 @@ export const updateTeamDocumentSettings = async ({
documentLanguage, documentLanguage,
includeSenderDetails, includeSenderDetails,
includeSigningCertificate, includeSigningCertificate,
includeAuditTrailLog,
typedSignatureEnabled, typedSignatureEnabled,
} = settings; } = settings;
@ -61,6 +63,7 @@ export const updateTeamDocumentSettings = async ({
includeSenderDetails, includeSenderDetails,
typedSignatureEnabled, typedSignatureEnabled,
includeSigningCertificate, includeSigningCertificate,
includeAuditTrailLog,
}, },
update: { update: {
documentVisibility, documentVisibility,
@ -68,6 +71,7 @@ export const updateTeamDocumentSettings = async ({
includeSenderDetails, includeSenderDetails,
typedSignatureEnabled, typedSignatureEnabled,
includeSigningCertificate, includeSigningCertificate,
includeAuditTrailLog,
}, },
}); });
}; };

View File

@ -0,0 +1,2 @@
-- AlterTable
ALTER TABLE "TeamGlobalSettings" ADD COLUMN "includeAuditTrailLog" BOOLEAN NOT NULL DEFAULT false;

View File

@ -536,6 +536,7 @@ model TeamGlobalSettings {
includeSenderDetails Boolean @default(true) includeSenderDetails Boolean @default(true)
typedSignatureEnabled Boolean @default(true) typedSignatureEnabled Boolean @default(true)
includeSigningCertificate Boolean @default(true) includeSigningCertificate Boolean @default(true)
includeAuditTrailLog Boolean @default(false)
brandingEnabled Boolean @default(false) brandingEnabled Boolean @default(false)
brandingLogo String @default("") brandingLogo String @default("")

View File

@ -206,6 +206,7 @@ export const ZUpdateTeamDocumentSettingsMutationSchema = z.object({
includeSenderDetails: z.boolean().optional().default(false), includeSenderDetails: z.boolean().optional().default(false),
typedSignatureEnabled: z.boolean().optional().default(true), typedSignatureEnabled: z.boolean().optional().default(true),
includeSigningCertificate: z.boolean().optional().default(true), includeSigningCertificate: z.boolean().optional().default(true),
includeAuditTrailLog: z.boolean().optional().default(true),
}), }),
}); });