한글뷰어 기능수정 Ver.01
This commit is contained in:
70
middlewares/activityLogger.js
Normal file
70
middlewares/activityLogger.js
Normal file
@@ -0,0 +1,70 @@
|
||||
const { addActivityLogJob } = require('../queue');
|
||||
|
||||
exports.activityLogger = (defaultAction) => {
|
||||
return (req, res, next) => {
|
||||
res.on('finish', () => {
|
||||
if (res.statusCode >= 200 && res.statusCode < 300) {
|
||||
try {
|
||||
const params = req.body?.params || {};
|
||||
|
||||
const projectId = params.projectId || req.baseUrl.split('/')[1] || '-';
|
||||
const activity = params.activity || defaultAction || '-';
|
||||
|
||||
let userId = 'system';
|
||||
if (params.userInfoString) {
|
||||
try {
|
||||
const userInfo = JSON.parse(params.userInfoString);
|
||||
userId = userInfo.user_id || 'system';
|
||||
} catch (e) {}
|
||||
} else if (req.user?.user_id) {
|
||||
userId = req.user.user_id;
|
||||
}
|
||||
|
||||
const userIp = req.ip || req.headers['x-forwarded-for'] || req.socket.remoteAddress;
|
||||
|
||||
let targetPath = '-';
|
||||
if (params.resourcePath) {
|
||||
targetPath = params.resourcePath;
|
||||
} else if (Array.isArray(params.resourcePathArr) && params.resourcePathArr.length > 0) {
|
||||
targetPath = params.resourcePathArr[0];
|
||||
} else if (Array.isArray(params.fromPathArr) && params.fromPathArr.length > 0) {
|
||||
targetPath = params.fromPathArr[0];
|
||||
}
|
||||
|
||||
let dataId = null;
|
||||
if (params.dataId) {
|
||||
dataId = params.dataId;
|
||||
} else if (Array.isArray(params.dataIdArr) && params.dataIdArr.length > 0) {
|
||||
dataId = params.dataIdArr[0];
|
||||
}
|
||||
|
||||
const logData = {
|
||||
projectId,
|
||||
activity,
|
||||
userId,
|
||||
userIp,
|
||||
targetPath,
|
||||
status: 'SUCCESS',
|
||||
logDate: new Date(),
|
||||
metaData: {
|
||||
method: req.method,
|
||||
url: req.originalUrl,
|
||||
dataIdArr: params.dataIdArr || (dataId ? [dataId] : []),
|
||||
dataType: params.dataType || '-',
|
||||
newName: params.newName || '-',
|
||||
oldName: params.oldName || '-'
|
||||
}
|
||||
};
|
||||
|
||||
addActivityLogJob(logData).catch(err => {
|
||||
console.error("[ActivityLogger Middleware] Queue Error:", err);
|
||||
});
|
||||
|
||||
} catch (err) {
|
||||
console.error("[ActivityLogger Middleware] Intercept Error:", err);
|
||||
}
|
||||
}
|
||||
});
|
||||
next();
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user