gristlabs_grist-core/app/server/lib/configureGristAuditLogger.ts
George Gevoian 3e22b89fa2 (core) Add audit logging machinery
Summary:
Adds machinery to support audit logging in the backend.

Logging is currently implemented by streaming events to external HTTP
endpoints. All flavors of Grist support a default "grist" payload format,
and Grist Enterprise additionally supports an HEC-compatible payload format.

Logging of all audit events will be added at a later date.

Test Plan: Server tests.

Reviewers: paulfitz

Reviewed By: paulfitz

Differential Revision: https://phab.getgrist.com/D4331
2024-09-12 12:13:41 -04:00

31 lines
958 B
TypeScript

import {appSettings} from 'app/server/lib/AppSettings';
import {GristAuditLogger} from 'app/server/lib/GristAuditLogger';
export function configureGristAuditLogger() {
const options = checkGristAuditLogger();
if (!options) { return undefined; }
return new GristAuditLogger(options);
}
export function checkGristAuditLogger() {
const settings = appSettings.section('auditLogger').section('http');
const endpoint = settings.flag('endpoint').readString({
envVar: 'GRIST_AUDIT_HTTP_ENDPOINT',
});
if (!endpoint) { return undefined; }
const payloadFormat = settings.flag('payloadFormat').readString({
envVar: 'GRIST_AUDIT_HTTP_PAYLOAD_FORMAT',
defaultValue: 'grist',
});
if (payloadFormat !== 'grist') { return undefined; }
const authorizationHeader = settings.flag('authorizationHeader').readString({
envVar: 'GRIST_AUDIT_HTTP_AUTHORIZATION_HEADER',
censor: true,
});
return {endpoint, authorizationHeader};
}