Update user data handling in UserIDMiddlewareAD.js and refactor getUserData function
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
2024-04-17 17:00:04 +02:00
parent 7a02f2682c
commit 06b1936840
9 changed files with 163 additions and 118 deletions

View File

@@ -3,16 +3,20 @@ const winston = require('winston');
const DailyRotateFile = require('winston-daily-rotate-file');
const logPrefix = (label) => {
if (label === 'server') {
return '[\x1b[32mServer\x1b[0m] ';
} else if (label === 'client') {
return '[\x1b[34mClient\x1b[0m] ';
} else if (label === 'Internal-Server-Error') {
return '[\x1b[38;5;9mInternal-Error\x1b[0m] ';
} else if (label === 'Authentification') {
return '[\x1b[33mAuthentification\x1b[0m] ';
}
return '';
if (label === 'server') {
return '[🖥️ \x1b[32mServer\x1b[0m] ';
} else if (label === 'client') {
return '[🌐 \x1b[34mClient\x1b[0m] ';
} else if (label === 'Internal-Server-Error') {
return '[❗️ \x1b[38;5;9mInternal-Error\x1b[0m] ';
} else if (label === 'Authentification') {
return '[🔒 \x1b[33mAuthentification\x1b[0m] ';
} else if (label === 'Suspicious Request') {
return '[⚠️ \x1b[38;5;208mSuspicious Request\x1b[0m] ';
}else if (label === 'API Request') {
return '[⚙️ \x1b[38;5;9mAPI Request\x1b[0m] ';
}
return '';
};
const createDailyRotateFileTransport = () => {
@@ -20,7 +24,7 @@ const createDailyRotateFileTransport = () => {
filename: 'logs/log-%DATE%.log',
datePattern: 'YYYY-MM-DD',
zippedArchive: false,
maxSize: '20m',
maxSize: '20m',
maxFiles: '14d'
});
};
@@ -32,11 +36,11 @@ const logger = winston.createLogger({
format.printf(info => {
const { timestamp, level, label, message } = info;
const prefix = logPrefix(label);
return `[${timestamp}] ${prefix}${message}`;
return `${prefix}[\x1b[36m${timestamp}\x1b[0m] ${message}`;
})
),
transports: [
new winston.transports.Console(),
new winston.transports.Console(),
createDailyRotateFileTransport()
]
});
@@ -48,11 +52,11 @@ const ErrorLogger = winston.createLogger({
format.printf(info => {
const { timestamp, level, label, message } = info;
const prefix = logPrefix(label);
return `[${timestamp}] ${prefix}${message}`;
return `${prefix}[\x1b[36m${timestamp}\x1b[0m] ${message}`;
})
),
transports: [
new winston.transports.Console(),
new winston.transports.Console(),
createDailyRotateFileTransport()
]
});
@@ -64,7 +68,7 @@ const clientLogger = winston.createLogger({
format.printf(info => {
const { timestamp, level, label, message } = info;
const prefix = logPrefix(label);
return `[${timestamp}] ${prefix}${message}`;
return `${prefix}[\x1b[36m${timestamp}\x1b[0m] ${message}`;
})
),
transports: [
@@ -80,7 +84,23 @@ const authLogger = winston.createLogger({
format.printf(info => {
const { timestamp, level, label, message } = info;
const prefix = logPrefix(label);
return `[${timestamp}] ${prefix}${message}`;
return `${prefix}[\x1b[36m${timestamp}\x1b[0m] ${message}`;
})
),
transports: [
new winston.transports.Console(),
createDailyRotateFileTransport()
]
});
const suspiciousLogger = winston.createLogger({
format: format.combine(
format.label({ label: 'Suspicious Request' }),
format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }),
format.printf(info => {
const { timestamp, level, label, message } = info;
const prefix = logPrefix(label);
return `${prefix}[\x1b[36m${timestamp}\x1b[0m] ${message}`;
})
),
transports: [
@@ -92,10 +112,36 @@ const authLogger = winston.createLogger({
const logRequestInfo = (req, res, next) => {
const ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
const userAgent = req.headers['user-agent'];
req.log = clientLogger;
req.log = clientLogger;
req.log.info(`[${ip}] - ${userAgent} - ${req.method} ${req.url}`);
next();
};
const apiLogger = winston.createLogger({
format: format.combine(
format.label({ label: 'API Request' }),
format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }),
format.printf(info => {
const { timestamp, level, label, message } = info;
const prefix = logPrefix(label);
return `${prefix}[\x1b[36m${timestamp}\x1b[0m] ${message}`;
})
),
transports: [
new winston.transports.Console(),
createDailyRotateFileTransport()
]
});
module.exports = { logger, clientLogger, ErrorLogger, logRequestInfo, authLogger };
const logApiRequest = (req, res, next) => {
const start = Date.now();
res.on('finish', () => {
const duration = Date.now() - start;
const ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
apiLogger.info(`[${ip}] - ${req.method} ${req.originalUrl} - ${res.statusCode} - ${duration}ms`);
});
next();
};
module.exports = { logger, clientLogger, ErrorLogger, logRequestInfo, authLogger, suspiciousLogger, logApiRequest };