@ambushsoftworks/nestjs-auth-graphql 0.9.0-rc.4 → 0.9.0
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/CHANGELOG.md +60 -19
- package/README.md +13 -2
- package/dist/auth.module.d.ts.map +1 -1
- package/dist/auth.module.js +2 -0
- package/dist/auth.module.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/interfaces/auth-logger.interface.d.ts.map +1 -1
- package/dist/interfaces/auth-logger.interface.js.map +1 -1
- package/dist/resolvers/base-auth.resolver.d.ts.map +1 -1
- package/dist/resolvers/base-auth.resolver.js +5 -4
- package/dist/resolvers/base-auth.resolver.js.map +1 -1
- package/dist/resolvers/oauth.controller.d.ts.map +1 -1
- package/dist/resolvers/oauth.controller.js +13 -12
- package/dist/resolvers/oauth.controller.js.map +1 -1
- package/dist/services/auth.service.d.ts.map +1 -1
- package/dist/services/auth.service.js +31 -30
- package/dist/services/auth.service.js.map +1 -1
- package/dist/services/brute-force-protection.service.d.ts.map +1 -1
- package/dist/services/brute-force-protection.service.js +4 -3
- package/dist/services/brute-force-protection.service.js.map +1 -1
- package/dist/services/configurable-email.service.d.ts.map +1 -1
- package/dist/services/configurable-email.service.js +4 -3
- package/dist/services/configurable-email.service.js.map +1 -1
- package/dist/services/console-logger.service.d.ts.map +1 -1
- package/dist/services/console-logger.service.js +6 -7
- package/dist/services/console-logger.service.js.map +1 -1
- package/dist/services/noop-email-sender.d.ts.map +1 -1
- package/dist/services/noop-email-sender.js +2 -1
- package/dist/services/noop-email-sender.js.map +1 -1
- package/dist/services/noop-email.service.d.ts.map +1 -1
- package/dist/services/noop-email.service.js +4 -3
- package/dist/services/noop-email.service.js.map +1 -1
- package/dist/services/noop-sms.service.d.ts.map +1 -1
- package/dist/services/noop-sms.service.js +4 -8
- package/dist/services/noop-sms.service.js.map +1 -1
- package/dist/services/resend-email-sender.d.ts.map +1 -1
- package/dist/services/resend-email-sender.js +3 -2
- package/dist/services/resend-email-sender.js.map +1 -1
- package/dist/services/sendgrid-email-sender.d.ts.map +1 -1
- package/dist/services/sendgrid-email-sender.js +2 -1
- package/dist/services/sendgrid-email-sender.js.map +1 -1
- package/dist/services/sendgrid-email.service.d.ts.map +1 -1
- package/dist/services/sendgrid-email.service.js +7 -6
- package/dist/services/sendgrid-email.service.js.map +1 -1
- package/dist/services/twilio-sms.service.d.ts.map +1 -1
- package/dist/services/twilio-sms.service.js +7 -7
- package/dist/services/twilio-sms.service.js.map +1 -1
- package/dist/services/verification.service.d.ts +0 -1
- package/dist/services/verification.service.d.ts.map +1 -1
- package/dist/services/verification.service.js +3 -8
- package/dist/services/verification.service.js.map +1 -1
- package/dist/strategies/facebook.strategy.d.ts.map +1 -1
- package/dist/strategies/facebook.strategy.js +2 -1
- package/dist/strategies/facebook.strategy.js.map +1 -1
- package/dist/utils/personal-data.d.ts +6 -0
- package/dist/utils/personal-data.d.ts.map +1 -0
- package/dist/utils/personal-data.js +67 -0
- package/dist/utils/personal-data.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.setPersonalDataLogSalt = setPersonalDataLogSalt;
|
|
4
|
+
exports.emailForLog = emailForLog;
|
|
5
|
+
exports.ipForLog = ipForLog;
|
|
6
|
+
exports.maskPhoneDigits = maskPhoneDigits;
|
|
7
|
+
exports.redactSecurityEventMetadata = redactSecurityEventMetadata;
|
|
8
|
+
const crypto_1 = require("crypto");
|
|
9
|
+
const ip_hash_1 = require("./ip-hash");
|
|
10
|
+
let configuredSalt;
|
|
11
|
+
let processSalt;
|
|
12
|
+
function setPersonalDataLogSalt(salt) {
|
|
13
|
+
configuredSalt = salt || undefined;
|
|
14
|
+
}
|
|
15
|
+
function currentSalt() {
|
|
16
|
+
if (configuredSalt) {
|
|
17
|
+
return configuredSalt;
|
|
18
|
+
}
|
|
19
|
+
processSalt ??= (0, crypto_1.randomBytes)(32).toString('hex');
|
|
20
|
+
return processSalt;
|
|
21
|
+
}
|
|
22
|
+
function hashEmail(email) {
|
|
23
|
+
return (0, crypto_1.createHmac)('sha256', currentSalt())
|
|
24
|
+
.update(email.trim().toLowerCase())
|
|
25
|
+
.digest('hex')
|
|
26
|
+
.slice(0, 16);
|
|
27
|
+
}
|
|
28
|
+
function emailForLog(email) {
|
|
29
|
+
return email ? `emailHash=${hashEmail(email)}` : 'emailHash=none';
|
|
30
|
+
}
|
|
31
|
+
function ipForLog(ipAddress) {
|
|
32
|
+
return ipAddress ? `ipHash=${(0, ip_hash_1.hashIp)(ipAddress, currentSalt())}` : 'ipHash=none';
|
|
33
|
+
}
|
|
34
|
+
function maskPhoneDigits(phoneNumber) {
|
|
35
|
+
if (!phoneNumber) {
|
|
36
|
+
return 'none';
|
|
37
|
+
}
|
|
38
|
+
const digitCount = phoneNumber.replace(/\D/g, '').length;
|
|
39
|
+
let seen = 0;
|
|
40
|
+
return phoneNumber.replace(/\d/g, (digit) => (++seen > digitCount - 2 ? digit : 'X'));
|
|
41
|
+
}
|
|
42
|
+
const EMAIL_FIELDS = ['email', 'normalizedEmail', 'newEmail'];
|
|
43
|
+
const IP_FIELDS = ['ipAddress', 'ip'];
|
|
44
|
+
const PHONE_FIELDS = ['phoneNumber', 'phone'];
|
|
45
|
+
function redactSecurityEventMetadata(metadata) {
|
|
46
|
+
const redacted = {};
|
|
47
|
+
for (const [field, value] of Object.entries(metadata)) {
|
|
48
|
+
const present = typeof value === 'string' && value.length > 0;
|
|
49
|
+
if (EMAIL_FIELDS.includes(field)) {
|
|
50
|
+
if (present)
|
|
51
|
+
redacted[`${field}Hash`] = hashEmail(value);
|
|
52
|
+
}
|
|
53
|
+
else if (IP_FIELDS.includes(field)) {
|
|
54
|
+
if (present)
|
|
55
|
+
redacted.ipHash = (0, ip_hash_1.hashIp)(value, currentSalt());
|
|
56
|
+
}
|
|
57
|
+
else if (PHONE_FIELDS.includes(field)) {
|
|
58
|
+
if (present)
|
|
59
|
+
redacted[field] = maskPhoneDigits(value);
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
redacted[field] = value;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return redacted;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=personal-data.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"personal-data.js","sourceRoot":"","sources":["../../src/utils/personal-data.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ambushsoftworks/nestjs-auth-graphql",
|
|
3
|
-
"version": "0.9.0
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "Production-grade authentication package for NestJS with GraphQL, supporting JWT, OAuth, email/SMS verification, and biometric auth",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|