| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- import logger from '@overleaf/logger'
- import { ProjectAuditLogEntry } from '../../models/ProjectAuditLogEntry.js'
- import { callbackify } from '@overleaf/promise-utils'
- export default {
- promises: {
- addEntry,
- },
- addEntry: callbackify(addEntry), // callback version of addEntry
- addEntryInBackground,
- }
- /**
- * Add an audit log entry
- *
- * The entry should include at least the following fields:
- *
- * - operation: a string identifying the type of operation
- * - userId: the user on behalf of whom the operation was performed
- * - message: a string detailing what happened
- */
- async function addEntry(
- projectId,
- operation,
- initiatorId,
- ipAddress,
- info = {}
- ) {
- const entry = {
- projectId,
- operation,
- initiatorId,
- ipAddress,
- info,
- }
- await ProjectAuditLogEntry.create(entry)
- }
- /**
- * Add an audit log entry in the background
- *
- * This function doesn't return a promise. Instead, it catches any error and logs it.
- */
- function addEntryInBackground(
- projectId,
- operation,
- initiatorId,
- ipAddress,
- info = {}
- ) {
- addEntry(projectId, operation, initiatorId, ipAddress, info).catch(err => {
- logger.error(
- { err, projectId, operation, initiatorId, ipAddress, info },
- 'Failed to write audit log'
- )
- })
- }
|