diff --git a/src/services/misc/usernotifiers.js b/src/services/misc/usernotifiers.js index c31a7f3..4164872 100644 --- a/src/services/misc/usernotifiers.js +++ b/src/services/misc/usernotifiers.js @@ -8,6 +8,7 @@ import { listObjects, newObject, } from '../../database/database.js'; +import { subscribeAuditLog, unsubscribeAuditLog } from '../../utils.js'; const logger = log4js.getLogger('UserNotifiers'); logger.level = config.server.logLevel; @@ -76,6 +77,8 @@ export const newUserNotifierRouteHandler = async (req, res) => { return res.status(result.code).send(result); } + await subscribeAuditLog(result.object._id, result.objectType, req.user); + logger.debug(`New user notifier with ID: ${result._id}`); res.send(result); }; @@ -140,6 +143,8 @@ export const deleteUserNotifierRouteHandler = async (req, res) => { return res.status(result.code).send(result); } + await unsubscribeAuditLog(existing.object._id, existing.objectType, req.user); + logger.info(`Successfully deleted user notifier ${id}`); res.send({ status: 'ok', diff --git a/src/utils.js b/src/utils.js index 028835e..d537e3a 100644 --- a/src/utils.js +++ b/src/utils.js @@ -790,6 +790,32 @@ async function newNoteNotification(note, user) { ); } +async function subscribeAuditLog(parentId, parentType, user) { + const auditLog = new auditLogModel({ + parent: parentId, + parentType, + owner: user._id, + ownerType: 'user', + operation: 'subscribe', + }); + await auditLog.save(); + await distributeNew(auditLog._id, 'auditLog'); + return auditLog; +} + +async function unsubscribeAuditLog(parentId, parentType, user) { + const auditLog = new auditLogModel({ + parent: parentId, + parentType, + owner: user._id, + ownerType: 'user', + operation: 'unsubscribe', + }); + await auditLog.save(); + await distributeNew(auditLog._id, 'auditLog'); + return auditLog; +} + async function getAuditLogs(idOrIds) { if (Array.isArray(idOrIds)) { return auditLogModel.find({ parent: { $in: idOrIds } }).populate('owner'); @@ -1256,4 +1282,6 @@ export { modelHasRef, getFieldsByRef, jsonToCacheKey, + subscribeAuditLog, + unsubscribeAuditLog, };