feat: include audit logs

This commit is contained in:
Catalin Pit
2025-02-14 14:03:39 +02:00
parent 8b1b0de935
commit 080bb405f0
3 changed files with 52 additions and 14 deletions

View File

@ -118,9 +118,10 @@ export const sealDocument = async ({
}).catch(() => null)
: null;
const auditLogData = await getAuditLogsPdf({ documentId }).catch(() => null);
console.log({ auditLogData });
const auditLogData = await getAuditLogsPdf({
documentId,
language: document.documentMeta?.language,
}).catch(() => null);
const doc = await PDFDocument.load(pdfData);

View File

@ -2,13 +2,16 @@ import { DateTime } from 'luxon';
import type { Browser } from 'playwright';
import { NEXT_PUBLIC_WEBAPP_URL } from '../../constants/app';
import { type SupportedLanguageCodes, isValidLanguageCode } from '../../constants/i18n';
import { encryptSecondaryData } from '../crypto/encrypt';
export type GetAuditLogsPdfParams = {
documentId: number;
// eslint-disable-next-line @typescript-eslint/ban-types
language?: SupportedLanguageCodes | (string & {});
};
export const getAuditLogsPdf = async ({ documentId }: GetAuditLogsPdfParams) => {
export const getAuditLogsPdf = async ({ documentId, language }: GetAuditLogsPdfParams) => {
const { chromium } = await import('playwright');
const encryptedId = encryptSecondaryData({
@ -36,18 +39,36 @@ export const getAuditLogsPdf = async ({ documentId }: GetAuditLogsPdfParams) =>
const page = await browserContext.newPage();
await page.goto(`${NEXT_PUBLIC_WEBAPP_URL()}/__htmltopdf/audit-log?d=${encryptedId}`, {
waitUntil: 'networkidle',
timeout: 10_000,
});
const lang = isValidLanguageCode(language) ? language : 'en';
const result = await page.pdf({
format: 'A4',
});
await page.context().addCookies([
{
name: 'language',
value: lang,
url: NEXT_PUBLIC_WEBAPP_URL(),
},
]);
await browserContext.close();
try {
await page.goto(`${NEXT_PUBLIC_WEBAPP_URL()}/__htmltopdf/audit-log?d=${encryptedId}`, {
waitUntil: 'networkidle',
timeout: 10_000,
});
void browser.close();
const result = await page.pdf({
format: 'A4',
});
return result;
await browserContext.close();
void browser.close();
return result;
} catch (error) {
await browserContext.close();
void browser.close();
throw error;
}
};