@riocrypto/common-server 1.0.1714 → 1.0.1716
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/services/logger.d.ts +1 -0
- package/build/services/logger.js +22 -12
- package/package.json +1 -1
package/build/services/logger.js
CHANGED
|
@@ -15,8 +15,8 @@ class LoggerService {
|
|
|
15
15
|
constructor() {
|
|
16
16
|
this.maskSensitiveData = (0, winston_1.format)((info) => {
|
|
17
17
|
// Mask sensitive headers
|
|
18
|
-
if (info.
|
|
19
|
-
const headers = info.
|
|
18
|
+
if (info.meta && info.meta.req && info.meta.req.headers) {
|
|
19
|
+
const headers = info.meta.req.headers;
|
|
20
20
|
const headerKeysToMask = [
|
|
21
21
|
"x-api-key",
|
|
22
22
|
"x-admin-api-key",
|
|
@@ -24,16 +24,21 @@ class LoggerService {
|
|
|
24
24
|
];
|
|
25
25
|
headerKeysToMask.forEach((key) => {
|
|
26
26
|
if (headers[key]) {
|
|
27
|
-
headers[key] =
|
|
27
|
+
headers[key] = this.maskValue(headers[key]); // Use maskValue function
|
|
28
28
|
}
|
|
29
29
|
});
|
|
30
|
+
// Mask cookies specifically
|
|
30
31
|
if (headers.cookie) {
|
|
31
32
|
headers.cookie = headers.cookie
|
|
32
33
|
.split("; ")
|
|
33
34
|
.map((cookie) => {
|
|
34
35
|
const [key, value] = cookie.split("=");
|
|
35
|
-
if (key === "accessToken" ||
|
|
36
|
-
|
|
36
|
+
if (key === "accessToken" ||
|
|
37
|
+
key === "adminAccessToken" ||
|
|
38
|
+
key === "refreshToken" ||
|
|
39
|
+
key === "adminRefreshToken" ||
|
|
40
|
+
key === "phoneVerifiedJWT") {
|
|
41
|
+
return `${key}=${this.maskValue(value)}`; // Mask the sensitive cookie
|
|
37
42
|
}
|
|
38
43
|
return cookie; // Return unmodified if not sensitive
|
|
39
44
|
})
|
|
@@ -41,7 +46,7 @@ class LoggerService {
|
|
|
41
46
|
}
|
|
42
47
|
}
|
|
43
48
|
// Mask sensitive request body fields
|
|
44
|
-
if (info.
|
|
49
|
+
if (info.meta && info.meta.req && info.meta.req.body) {
|
|
45
50
|
const requestBodyFieldsToMask = [
|
|
46
51
|
"password",
|
|
47
52
|
"newPassword",
|
|
@@ -50,17 +55,17 @@ class LoggerService {
|
|
|
50
55
|
"authenticatorCode",
|
|
51
56
|
];
|
|
52
57
|
requestBodyFieldsToMask.forEach((field) => {
|
|
53
|
-
if (info.
|
|
54
|
-
info.
|
|
58
|
+
if (info.meta.req.body.hasOwnProperty(field)) {
|
|
59
|
+
info.meta.req.body[field] = this.maskValue(info.meta.req.body[field]); // Use maskValue function
|
|
55
60
|
}
|
|
56
61
|
});
|
|
57
62
|
}
|
|
58
63
|
// Mask sensitive response body fields
|
|
59
|
-
if (info.
|
|
64
|
+
if (info.meta && info.meta.res && info.meta.res.body) {
|
|
60
65
|
const responseBodyFieldsToMask = ["secret", "value"];
|
|
61
66
|
responseBodyFieldsToMask.forEach((field) => {
|
|
62
|
-
if (info.
|
|
63
|
-
info.
|
|
67
|
+
if (info.meta.res.body.hasOwnProperty(field)) {
|
|
68
|
+
info.meta.res.body[field] = this.maskValue(info.meta.res.body[field]); // Use maskValue function
|
|
64
69
|
}
|
|
65
70
|
});
|
|
66
71
|
}
|
|
@@ -68,6 +73,11 @@ class LoggerService {
|
|
|
68
73
|
});
|
|
69
74
|
this.logger = null;
|
|
70
75
|
}
|
|
76
|
+
maskValue(value) {
|
|
77
|
+
return value.length > 4
|
|
78
|
+
? "*".repeat(value.length - 4) + value.slice(-4)
|
|
79
|
+
: value;
|
|
80
|
+
}
|
|
71
81
|
getLogger() {
|
|
72
82
|
if (!this.logger) {
|
|
73
83
|
return null;
|
|
@@ -92,7 +102,7 @@ class LoggerService {
|
|
|
92
102
|
}
|
|
93
103
|
else {
|
|
94
104
|
this.logger = (0, winston_1.createLogger)({
|
|
95
|
-
level: "
|
|
105
|
+
level: "info",
|
|
96
106
|
format: winston_1.format.combine(winston_1.format.timestamp(), this.maskSensitiveData(), winston_1.format.json(), winston_1.format.metadata(), winston_1.format.prettyPrint()),
|
|
97
107
|
transports: [new winston_1.transports.Console()],
|
|
98
108
|
});
|