@ambushsoftworks/nestjs-auth-graphql 0.7.2 → 0.9.0-rc.1

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.
Files changed (93) hide show
  1. package/README.md +270 -9
  2. package/dist/auth.module.d.ts +7 -0
  3. package/dist/auth.module.d.ts.map +1 -1
  4. package/dist/auth.module.js +53 -0
  5. package/dist/auth.module.js.map +1 -1
  6. package/dist/exceptions/invalid-auth-config.exception.d.ts +4 -0
  7. package/dist/exceptions/invalid-auth-config.exception.d.ts.map +1 -0
  8. package/dist/exceptions/invalid-auth-config.exception.js +12 -0
  9. package/dist/exceptions/invalid-auth-config.exception.js.map +1 -0
  10. package/dist/guards/tenant.guard.d.ts.map +1 -1
  11. package/dist/guards/tenant.guard.js +9 -1
  12. package/dist/guards/tenant.guard.js.map +1 -1
  13. package/dist/index.d.ts +2 -0
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +2 -0
  16. package/dist/index.js.map +1 -1
  17. package/dist/interfaces/auth-lifecycle-hooks.interface.d.ts +1 -0
  18. package/dist/interfaces/auth-lifecycle-hooks.interface.d.ts.map +1 -1
  19. package/dist/interfaces/auth-logger.interface.d.ts +2 -0
  20. package/dist/interfaces/auth-logger.interface.d.ts.map +1 -1
  21. package/dist/interfaces/auth-logger.interface.js +2 -0
  22. package/dist/interfaces/auth-logger.interface.js.map +1 -1
  23. package/dist/interfaces/brute-force-repository.interface.d.ts +1 -0
  24. package/dist/interfaces/brute-force-repository.interface.d.ts.map +1 -1
  25. package/dist/interfaces/email-service.interface.d.ts +2 -6
  26. package/dist/interfaces/email-service.interface.d.ts.map +1 -1
  27. package/dist/interfaces/email-template-renderer.interface.d.ts +2 -6
  28. package/dist/interfaces/email-template-renderer.interface.d.ts.map +1 -1
  29. package/dist/interfaces/realm-extractor.interface.d.ts +1 -1
  30. package/dist/interfaces/realm-extractor.interface.d.ts.map +1 -1
  31. package/dist/interfaces/tenant-extractor.interface.d.ts +1 -1
  32. package/dist/interfaces/tenant-extractor.interface.d.ts.map +1 -1
  33. package/dist/middleware/realm.middleware.d.ts +2 -1
  34. package/dist/middleware/realm.middleware.d.ts.map +1 -1
  35. package/dist/middleware/realm.middleware.js +15 -5
  36. package/dist/middleware/realm.middleware.js.map +1 -1
  37. package/dist/repositories/noop-brute-force.repository.d.ts +1 -0
  38. package/dist/repositories/noop-brute-force.repository.d.ts.map +1 -1
  39. package/dist/repositories/noop-brute-force.repository.js +4 -0
  40. package/dist/repositories/noop-brute-force.repository.js.map +1 -1
  41. package/dist/resolvers/base-auth.resolver.d.ts +1 -0
  42. package/dist/resolvers/base-auth.resolver.d.ts.map +1 -1
  43. package/dist/resolvers/base-auth.resolver.js +12 -2
  44. package/dist/resolvers/base-auth.resolver.js.map +1 -1
  45. package/dist/services/auth.service.d.ts +9 -0
  46. package/dist/services/auth.service.d.ts.map +1 -1
  47. package/dist/services/auth.service.js +34 -11
  48. package/dist/services/auth.service.js.map +1 -1
  49. package/dist/services/brute-force-protection.service.d.ts +12 -3
  50. package/dist/services/brute-force-protection.service.d.ts.map +1 -1
  51. package/dist/services/brute-force-protection.service.js +70 -6
  52. package/dist/services/brute-force-protection.service.js.map +1 -1
  53. package/dist/services/configurable-email.service.d.ts +3 -7
  54. package/dist/services/configurable-email.service.d.ts.map +1 -1
  55. package/dist/services/configurable-email.service.js +16 -60
  56. package/dist/services/configurable-email.service.js.map +1 -1
  57. package/dist/services/default-email-template-renderer.d.ts +4 -7
  58. package/dist/services/default-email-template-renderer.d.ts.map +1 -1
  59. package/dist/services/default-email-template-renderer.js +40 -55
  60. package/dist/services/default-email-template-renderer.js.map +1 -1
  61. package/dist/services/noop-email-sender.d.ts +2 -0
  62. package/dist/services/noop-email-sender.d.ts.map +1 -1
  63. package/dist/services/noop-email-sender.js +28 -0
  64. package/dist/services/noop-email-sender.js.map +1 -1
  65. package/dist/services/noop-email.service.d.ts +2 -6
  66. package/dist/services/noop-email.service.d.ts.map +1 -1
  67. package/dist/services/noop-email.service.js +9 -17
  68. package/dist/services/noop-email.service.js.map +1 -1
  69. package/dist/services/sendgrid-email.service.d.ts +0 -13
  70. package/dist/services/sendgrid-email.service.d.ts.map +1 -1
  71. package/dist/services/sendgrid-email.service.js +4 -528
  72. package/dist/services/sendgrid-email.service.js.map +1 -1
  73. package/dist/services/verification.service.d.ts +15 -0
  74. package/dist/services/verification.service.d.ts.map +1 -1
  75. package/dist/services/verification.service.js +70 -3
  76. package/dist/services/verification.service.js.map +1 -1
  77. package/dist/test-utils/index.d.ts +1 -1
  78. package/dist/test-utils/index.d.ts.map +1 -1
  79. package/dist/test-utils/index.js +2 -1
  80. package/dist/test-utils/index.js.map +1 -1
  81. package/dist/test-utils/mock-repositories.d.ts.map +1 -1
  82. package/dist/test-utils/mock-repositories.js +1 -0
  83. package/dist/test-utils/mock-repositories.js.map +1 -1
  84. package/dist/test-utils/mock-services.d.ts +2 -0
  85. package/dist/test-utils/mock-services.d.ts.map +1 -1
  86. package/dist/test-utils/mock-services.js +10 -4
  87. package/dist/test-utils/mock-services.js.map +1 -1
  88. package/dist/utils/ip-hash.d.ts +2 -0
  89. package/dist/utils/ip-hash.d.ts.map +1 -0
  90. package/dist/utils/ip-hash.js +11 -0
  91. package/dist/utils/ip-hash.js.map +1 -0
  92. package/examples/full-resolver-template.ts +311 -0
  93. package/package.json +2 -1
@@ -18,6 +18,7 @@ const crypto_1 = require("crypto");
18
18
  const constants_1 = require("../constants");
19
19
  const auth_logger_interface_1 = require("../interfaces/auth-logger.interface");
20
20
  const verification_type_enum_1 = require("../enums/verification-type.enum");
21
+ const DEFAULT_PLACEHOLDER_BASE_URL = 'https://app.example.com';
21
22
  let VerificationService = class VerificationService {
22
23
  constructor(options, userRepository, verificationRepository, securityLogger) {
23
24
  this.options = options;
@@ -27,6 +28,8 @@ let VerificationService = class VerificationService {
27
28
  this.codeLength = 6;
28
29
  this.expiryMinutes = 15;
29
30
  this.maxAttempts = 3;
31
+ this.warnedLegacyBaseUrl = false;
32
+ this.warnedPlaceholderBaseUrl = false;
30
33
  }
31
34
  async generateCode(identifier, type, realm) {
32
35
  const user = await this.resolveUser(identifier, type, realm);
@@ -184,13 +187,48 @@ let VerificationService = class VerificationService {
184
187
  get verificationMode() {
185
188
  return this.options.features?.verificationMode ?? 'code';
186
189
  }
190
+ get codeExpiresInMinutes() {
191
+ return this.expiryMinutes;
192
+ }
193
+ get tokenExpiresInMinutes() {
194
+ return this.options.verification?.tokenExpiresInMinutes ?? 60;
195
+ }
196
+ get credentialExpiresInMinutes() {
197
+ return this.verificationMode === 'token'
198
+ ? this.tokenExpiresInMinutes
199
+ : this.codeExpiresInMinutes;
200
+ }
201
+ async issueCredential(identifier, type, realm) {
202
+ const mode = this.verificationMode;
203
+ if (mode === 'token') {
204
+ const token = await this.generateToken(identifier, type, realm);
205
+ return {
206
+ credential: token,
207
+ url: this.buildVerificationUrl(token, type, identifier),
208
+ expiresInMinutes: this.tokenExpiresInMinutes,
209
+ mode,
210
+ };
211
+ }
212
+ const code = await this.generateCode(identifier, type, realm);
213
+ return {
214
+ credential: code,
215
+ url: this.buildPageUrl(type),
216
+ expiresInMinutes: this.codeExpiresInMinutes,
217
+ mode,
218
+ };
219
+ }
220
+ async verifyCredential(identifier, type, submitted, realm) {
221
+ return this.verificationMode === 'token'
222
+ ? this.verifyToken(identifier, type, submitted, realm)
223
+ : this.validateCode(identifier, type, submitted, realm);
224
+ }
187
225
  async generateToken(identifier, type, realm) {
188
226
  const user = await this.resolveUser(identifier, type, realm);
189
227
  if (!user) {
190
228
  throw new common_1.BadRequestException('User not found');
191
229
  }
192
230
  const tokenLength = this.options.verification?.tokenLength ?? 64;
193
- const expiryMinutes = this.options.verification?.tokenExpiresInMinutes ?? 60;
231
+ const expiryMinutes = this.tokenExpiresInMinutes;
194
232
  const rawToken = (0, crypto_1.randomBytes)(tokenLength).toString('hex');
195
233
  const tokenHash = this.hashToken(rawToken);
196
234
  const expiresAt = new Date(Date.now() + expiryMinutes * 60 * 1000);
@@ -251,12 +289,41 @@ let VerificationService = class VerificationService {
251
289
  throw new Error('verification.baseUrl is required to build verification URLs. ' +
252
290
  'Configure it in AuthModuleOptions.verification.baseUrl.');
253
291
  }
254
- const path = type === 'email' ? '/verify-email' : '/reset-password';
255
- const url = new URL(path, baseUrl);
292
+ const url = new URL(this.verificationPath(type), baseUrl);
256
293
  url.searchParams.set('token', token);
257
294
  url.searchParams.set('email', email);
258
295
  return url.toString();
259
296
  }
297
+ verificationPath(type) {
298
+ return type === 'email' ? '/verify-email' : '/reset-password';
299
+ }
300
+ buildPageUrl(type) {
301
+ const configured = this.options.verification?.baseUrl;
302
+ const legacy = process.env.FRONTEND_URL;
303
+ if (!configured && legacy && !this.warnedLegacyBaseUrl) {
304
+ this.warnedLegacyBaseUrl = true;
305
+ this.securityLogger.warn('Building verification links from the FRONTEND_URL environment variable. ' +
306
+ 'Set AuthModuleOptions.verification.baseUrl instead — it is the single ' +
307
+ 'source consulted by every link builder, and is required for ' +
308
+ "verificationMode: 'token'.", 'VerificationService');
309
+ }
310
+ const baseUrl = configured ?? legacy ?? DEFAULT_PLACEHOLDER_BASE_URL;
311
+ if (baseUrl === DEFAULT_PLACEHOLDER_BASE_URL && !this.warnedPlaceholderBaseUrl) {
312
+ this.warnedPlaceholderBaseUrl = true;
313
+ this.securityLogger.warn(`No verification base URL configured — falling back to the ${DEFAULT_PLACEHOLDER_BASE_URL} ` +
314
+ 'placeholder. Any link built from it will not resolve. Set ' +
315
+ 'AuthModuleOptions.verification.baseUrl.', 'VerificationService');
316
+ }
317
+ try {
318
+ return new URL(this.verificationPath(type), baseUrl).toString();
319
+ }
320
+ catch {
321
+ this.securityLogger.warn(`Verification base URL "${baseUrl}" is not a valid absolute URL; ` +
322
+ 'sending the email without a link. Set AuthModuleOptions.verification.baseUrl ' +
323
+ 'to an absolute URL such as https://app.example.com.', 'VerificationService');
324
+ return undefined;
325
+ }
326
+ }
260
327
  hashToken(token) {
261
328
  return (0, crypto_1.createHash)('sha256').update(token).digest('hex');
262
329
  }
@@ -1 +1 @@
1
- {"version":3,"file":"verification.service.js","sourceRoot":"","sources":["../../src/services/verification.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verification.service.js","sourceRoot":"","sources":["../../src/services/verification.service.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  export { createMockUserRepository, createMockRefreshTokenRepository, createMockVerificationRepository, createMockBruteForceRepository, createMockBiometricRepository, } from './mock-repositories';
2
- export { createMockEmailService, createMockSmsService, createMockAuthLifecycleHooks, createMockAuthLogger, } from './mock-services';
2
+ export { createMockEmailService, createMockSmsService, createMockAuthLifecycleHooks, createMockAuthLogger, issuedCredential, } from './mock-services';
3
3
  export { UserFactory, JwtPayloadFactory, RefreshTokenFactory, VerificationCodeFactory, OAuthTokenFactory, BiometricCredentialFactory, DateFactory, } from './test-factories';
4
4
  export { createMockJwtService, hashPassword, comparePassword, wait, freezeTime, unfreezeTime, advanceTime, createMockRequest, createMockContext, expectError, expectAsyncError, randomEmail, randomPhoneNumber, generateStrongPassword, clearAllMocks, resetAllMocks, } from './test-helpers';
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/test-utils/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,wBAAwB,EACxB,gCAAgC,EAChC,gCAAgC,EAChC,8BAA8B,EAC9B,6BAA6B,GAC9B,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,4BAA4B,EAC5B,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,uBAAuB,EACvB,iBAAiB,EACjB,0BAA0B,EAC1B,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,oBAAoB,EACpB,YAAY,EACZ,eAAe,EACf,IAAI,EACJ,UAAU,EACV,YAAY,EACZ,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,iBAAiB,EACjB,sBAAsB,EACtB,aAAa,EACb,aAAa,GACd,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/test-utils/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,wBAAwB,EACxB,gCAAgC,EAChC,gCAAgC,EAChC,8BAA8B,EAC9B,6BAA6B,GAC9B,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,4BAA4B,EAC5B,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,uBAAuB,EACvB,iBAAiB,EACjB,0BAA0B,EAC1B,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,oBAAoB,EACpB,YAAY,EACZ,eAAe,EACf,IAAI,EACJ,UAAU,EACV,YAAY,EACZ,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,iBAAiB,EACjB,sBAAsB,EACtB,aAAa,EACb,aAAa,GACd,MAAM,gBAAgB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.resetAllMocks = exports.clearAllMocks = exports.generateStrongPassword = exports.randomPhoneNumber = exports.randomEmail = exports.expectAsyncError = exports.expectError = exports.createMockContext = exports.createMockRequest = exports.advanceTime = exports.unfreezeTime = exports.freezeTime = exports.wait = exports.comparePassword = exports.hashPassword = exports.createMockJwtService = exports.DateFactory = exports.BiometricCredentialFactory = exports.OAuthTokenFactory = exports.VerificationCodeFactory = exports.RefreshTokenFactory = exports.JwtPayloadFactory = exports.UserFactory = exports.createMockAuthLogger = exports.createMockAuthLifecycleHooks = exports.createMockSmsService = exports.createMockEmailService = exports.createMockBiometricRepository = exports.createMockBruteForceRepository = exports.createMockVerificationRepository = exports.createMockRefreshTokenRepository = exports.createMockUserRepository = void 0;
3
+ exports.resetAllMocks = exports.clearAllMocks = exports.generateStrongPassword = exports.randomPhoneNumber = exports.randomEmail = exports.expectAsyncError = exports.expectError = exports.createMockContext = exports.createMockRequest = exports.advanceTime = exports.unfreezeTime = exports.freezeTime = exports.wait = exports.comparePassword = exports.hashPassword = exports.createMockJwtService = exports.DateFactory = exports.BiometricCredentialFactory = exports.OAuthTokenFactory = exports.VerificationCodeFactory = exports.RefreshTokenFactory = exports.JwtPayloadFactory = exports.UserFactory = exports.issuedCredential = exports.createMockAuthLogger = exports.createMockAuthLifecycleHooks = exports.createMockSmsService = exports.createMockEmailService = exports.createMockBiometricRepository = exports.createMockBruteForceRepository = exports.createMockVerificationRepository = exports.createMockRefreshTokenRepository = exports.createMockUserRepository = void 0;
4
4
  var mock_repositories_1 = require("./mock-repositories");
5
5
  Object.defineProperty(exports, "createMockUserRepository", { enumerable: true, get: function () { return mock_repositories_1.createMockUserRepository; } });
6
6
  Object.defineProperty(exports, "createMockRefreshTokenRepository", { enumerable: true, get: function () { return mock_repositories_1.createMockRefreshTokenRepository; } });
@@ -12,6 +12,7 @@ Object.defineProperty(exports, "createMockEmailService", { enumerable: true, get
12
12
  Object.defineProperty(exports, "createMockSmsService", { enumerable: true, get: function () { return mock_services_1.createMockSmsService; } });
13
13
  Object.defineProperty(exports, "createMockAuthLifecycleHooks", { enumerable: true, get: function () { return mock_services_1.createMockAuthLifecycleHooks; } });
14
14
  Object.defineProperty(exports, "createMockAuthLogger", { enumerable: true, get: function () { return mock_services_1.createMockAuthLogger; } });
15
+ Object.defineProperty(exports, "issuedCredential", { enumerable: true, get: function () { return mock_services_1.issuedCredential; } });
15
16
  var test_factories_1 = require("./test-factories");
16
17
  Object.defineProperty(exports, "UserFactory", { enumerable: true, get: function () { return test_factories_1.UserFactory; } });
17
18
  Object.defineProperty(exports, "JwtPayloadFactory", { enumerable: true, get: function () { return test_factories_1.JwtPayloadFactory; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/test-utils/index.ts"],"names":[],"mappings":";;;AACA,yDAM6B;AAL3B,6HAAA,wBAAwB,OAAA;AACxB,qIAAA,gCAAgC,OAAA;AAChC,qIAAA,gCAAgC,OAAA;AAChC,mIAAA,8BAA8B,OAAA;AAC9B,kIAAA,6BAA6B,OAAA;AAI/B,iDAKyB;AAJvB,uHAAA,sBAAsB,OAAA;AACtB,qHAAA,oBAAoB,OAAA;AACpB,6HAAA,4BAA4B,OAAA;AAC5B,qHAAA,oBAAoB,OAAA;AAItB,mDAQ0B;AAPxB,6GAAA,WAAW,OAAA;AACX,mHAAA,iBAAiB,OAAA;AACjB,qHAAA,mBAAmB,OAAA;AACnB,yHAAA,uBAAuB,OAAA;AACvB,mHAAA,iBAAiB,OAAA;AACjB,4HAAA,0BAA0B,OAAA;AAC1B,6GAAA,WAAW,OAAA;AAIb,+CAiBwB;AAhBtB,oHAAA,oBAAoB,OAAA;AACpB,4GAAA,YAAY,OAAA;AACZ,+GAAA,eAAe,OAAA;AACf,oGAAA,IAAI,OAAA;AACJ,0GAAA,UAAU,OAAA;AACV,4GAAA,YAAY,OAAA;AACZ,2GAAA,WAAW,OAAA;AACX,iHAAA,iBAAiB,OAAA;AACjB,iHAAA,iBAAiB,OAAA;AACjB,2GAAA,WAAW,OAAA;AACX,gHAAA,gBAAgB,OAAA;AAChB,2GAAA,WAAW,OAAA;AACX,iHAAA,iBAAiB,OAAA;AACjB,sHAAA,sBAAsB,OAAA;AACtB,6GAAA,aAAa,OAAA;AACb,6GAAA,aAAa,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/test-utils/index.ts"],"names":[],"mappings":";;;AACA,yDAM6B;AAL3B,6HAAA,wBAAwB,OAAA;AACxB,qIAAA,gCAAgC,OAAA;AAChC,qIAAA,gCAAgC,OAAA;AAChC,mIAAA,8BAA8B,OAAA;AAC9B,kIAAA,6BAA6B,OAAA;AAI/B,iDAMyB;AALvB,uHAAA,sBAAsB,OAAA;AACtB,qHAAA,oBAAoB,OAAA;AACpB,6HAAA,4BAA4B,OAAA;AAC5B,qHAAA,oBAAoB,OAAA;AACpB,iHAAA,gBAAgB,OAAA;AAIlB,mDAQ0B;AAPxB,6GAAA,WAAW,OAAA;AACX,mHAAA,iBAAiB,OAAA;AACjB,qHAAA,mBAAmB,OAAA;AACnB,yHAAA,uBAAuB,OAAA;AACvB,mHAAA,iBAAiB,OAAA;AACjB,4HAAA,0BAA0B,OAAA;AAC1B,6GAAA,WAAW,OAAA;AAIb,+CAiBwB;AAhBtB,oHAAA,oBAAoB,OAAA;AACpB,4GAAA,YAAY,OAAA;AACZ,+GAAA,eAAe,OAAA;AACf,oGAAA,IAAI,OAAA;AACJ,0GAAA,UAAU,OAAA;AACV,4GAAA,YAAY,OAAA;AACZ,2GAAA,WAAW,OAAA;AACX,iHAAA,iBAAiB,OAAA;AACjB,iHAAA,iBAAiB,OAAA;AACjB,2GAAA,WAAW,OAAA;AACX,gHAAA,gBAAgB,OAAA;AAChB,2GAAA,WAAW,OAAA;AACX,iHAAA,iBAAiB,OAAA;AACjB,sHAAA,sBAAsB,OAAA;AACtB,6GAAA,aAAa,OAAA;AACb,6GAAA,aAAa,OAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"mock-repositories.d.ts","sourceRoot":"","sources":["../../src/test-utils/mock-repositories.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAM/I,wBAAgB,wBAAwB,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAwCvE;AAKD,wBAAgB,gCAAgC,IAAI,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAYvF;AAKD,wBAAgB,gCAAgC,IAAI,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAOvF;AAKD,wBAAgB,8BAA8B,IAAI,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAQnF;AAKD,wBAAgB,6BAA6B,IAAI,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAUjF"}
1
+ {"version":3,"file":"mock-repositories.d.ts","sourceRoot":"","sources":["../../src/test-utils/mock-repositories.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAM/I,wBAAgB,wBAAwB,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAwCvE;AAKD,wBAAgB,gCAAgC,IAAI,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAYvF;AAKD,wBAAgB,gCAAgC,IAAI,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAOvF;AAKD,wBAAgB,8BAA8B,IAAI,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,CASnF;AAKD,wBAAgB,6BAA6B,IAAI,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAUjF"}
@@ -73,6 +73,7 @@ function createMockBruteForceRepository() {
73
73
  lockAccount: jest.fn(),
74
74
  checkAccountLock: jest.fn(),
75
75
  clearFailedAttempts: jest.fn(),
76
+ deleteOlderThan: jest.fn(),
76
77
  };
77
78
  }
78
79
  function createMockBiometricRepository() {
@@ -1 +1 @@
1
- {"version":3,"file":"mock-repositories.js","sourceRoot":"","sources":["../../src/test-utils/mock-repositories.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mock-repositories.js","sourceRoot":"","sources":["../../src/test-utils/mock-repositories.ts"],"names":[],"mappings":";;AAMA,4DAwCC;AAKD,4EAYC;AAKD,4EAOC;AAKD,wEASC;AAKD,sEAUC;AAlGD,SAAgB,wBAAwB;IACtC,OAAO;QACL,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE;QACtB,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE;QACnB,cAAc,EAAE,IAAI,CAAC,EAAE,EAAE;QACzB,gBAAgB,EAAE,IAAI,CAAC,EAAE,EAAE;QAC3B,aAAa,EAAE,IAAI,CAAC,EAAE,EAAE;QACxB,iBAAiB,EAAE,IAAI,CAAC,EAAE,EAAE;QAC5B,wBAAwB,EAAE,IAAI,CAAC,EAAE,EAAE;QACnC,qBAAqB,EAAE,IAAI,CAAC,EAAE,EAAE;QAChC,2BAA2B,EAAE,IAAI,CAAC,EAAE,EAAE;QACtC,6BAA6B,EAAE,IAAI,CAAC,EAAE,EAAE;QACxC,0BAA0B,EAAE,IAAI,CAAC,EAAE,EAAE;QACrC,sBAAsB,EAAE,IAAI,CAAC,EAAE,EAAE;QAEjC,mBAAmB,EAAE,IAAI,CAAC,EAAE,EAAE;QAC9B,gCAAgC,EAAE,IAAI,CAAC,EAAE,EAAE;QAC3C,gBAAgB,EAAE,IAAI,CAAC,EAAE,EAAE;QAC3B,kBAAkB,EAAE,IAAI,CAAC,EAAE,EAAE;QAC7B,gBAAgB,EAAE,IAAI,CAAC,EAAE,EAAE;QAC3B,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE;QACjB,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE;QACjB,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE;QACtB,cAAc,EAAE,IAAI,CAAC,EAAE,EAAE;QACzB,iBAAiB,EAAE,IAAI,CAAC,EAAE,EAAE;QAC5B,iBAAiB,EAAE,IAAI,CAAC,EAAE,EAAE;QAC5B,4BAA4B,EAAE,IAAI,CAAC,EAAE,EAAE;QACvC,wBAAwB,EAAE,IAAI,CAAC,EAAE,EAAE;QACnC,iBAAiB,EAAE,IAAI,CAAC,EAAE,EAAE;QAC5B,eAAe,EAAE,IAAI,CAAC,EAAE,EAAE;QAC1B,gBAAgB,EAAE,IAAI,CAAC,EAAE,EAAE;QAC3B,wBAAwB,EAAE,IAAI,CAAC,EAAE,EAAE;QACnC,iBAAiB,EAAE,IAAI,CAAC,EAAE,EAAE;QAC5B,mBAAmB,EAAE,IAAI,CAAC,EAAE,EAAE;QAC9B,mBAAmB,EAAE,IAAI,CAAC,EAAE,EAAE;QAC9B,qBAAqB,EAAE,IAAI,CAAC,EAAE,EAAE;QAChC,gBAAgB,EAAE,IAAI,CAAC,EAAE,EAAE;QAC3B,kBAAkB,EAAE,IAAI,CAAC,EAAE,EAAE;QAC7B,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE;KACc,CAAC;AACpC,CAAC;AAKD,SAAgB,gCAAgC;IAC9C,OAAO;QACL,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE;QACjB,iBAAiB,EAAE,IAAI,CAAC,EAAE,EAAE;QAC5B,YAAY,EAAE,IAAI,CAAC,EAAE,EAAE;QACvB,0BAA0B,EAAE,IAAI,CAAC,EAAE,EAAE;QACrC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE;QACjB,mBAAmB,EAAE,IAAI,CAAC,EAAE,EAAE;QAC9B,cAAc,EAAE,IAAI,CAAC,EAAE,EAAE;QACzB,aAAa,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC7C,mBAAmB,EAAE,IAAI,CAAC,EAAE,EAAE;KACS,CAAC;AAC5C,CAAC;AAKD,SAAgB,gCAAgC;IAC9C,OAAO;QACL,qBAAqB,EAAE,IAAI,CAAC,EAAE,EAAE;QAChC,mBAAmB,EAAE,IAAI,CAAC,EAAE,EAAE;QAC9B,6BAA6B,EAAE,IAAI,CAAC,EAAE,EAAE;QACxC,qBAAqB,EAAE,IAAI,CAAC,EAAE,EAAE;KACO,CAAC;AAC5C,CAAC;AAKD,SAAgB,8BAA8B;IAC5C,OAAO;QACL,mBAAmB,EAAE,IAAI,CAAC,EAAE,EAAE;QAC9B,qBAAqB,EAAE,IAAI,CAAC,EAAE,EAAE;QAChC,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE;QACtB,gBAAgB,EAAE,IAAI,CAAC,EAAE,EAAE;QAC3B,mBAAmB,EAAE,IAAI,CAAC,EAAE,EAAE;QAC9B,eAAe,EAAE,IAAI,CAAC,EAAE,EAAE;KACW,CAAC;AAC1C,CAAC;AAKD,SAAgB,6BAA6B;IAC3C,OAAO;QACL,wBAAwB,EAAE,IAAI,CAAC,EAAE,EAAE;QACnC,sBAAsB,EAAE,IAAI,CAAC,EAAE,EAAE;QACjC,wBAAwB,EAAE,IAAI,CAAC,EAAE,EAAE;QACnC,yBAAyB,EAAE,IAAI,CAAC,EAAE,EAAE;QACpC,uBAAuB,EAAE,IAAI,CAAC,EAAE,EAAE;QAClC,qBAAqB,EAAE,IAAI,CAAC,EAAE,EAAE;QAChC,mBAAmB,EAAE,IAAI,CAAC,EAAE,EAAE;KACM,CAAC;AACzC,CAAC"}
@@ -1,4 +1,6 @@
1
1
  import { IEmailService, ISmsService, IAuthLifecycleHooks, IAuthLogger } from '../interfaces';
2
+ import type { IssuedVerificationCredential } from '../services/verification.service';
3
+ export declare function issuedCredential(overrides?: Partial<IssuedVerificationCredential>): IssuedVerificationCredential;
2
4
  export declare function createMockEmailService(): jest.Mocked<IEmailService>;
3
5
  export declare function createMockSmsService(): jest.Mocked<ISmsService>;
4
6
  export declare function createMockAuthLifecycleHooks(): jest.Mocked<IAuthLifecycleHooks>;
@@ -1 +1 @@
1
- {"version":3,"file":"mock-services.d.ts","sourceRoot":"","sources":["../../src/test-utils/mock-services.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAK7F,wBAAgB,sBAAsB,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAUnE;AAKD,wBAAgB,oBAAoB,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAQ/D;AAKD,wBAAgB,4BAA4B,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAU/E;AAKD,wBAAgB,oBAAoB,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAQ/D"}
1
+ {"version":3,"file":"mock-services.d.ts","sourceRoot":"","sources":["../../src/test-utils/mock-services.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC7F,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,kCAAkC,CAAC;AAUrF,wBAAgB,gBAAgB,CAC9B,SAAS,GAAE,OAAO,CAAC,4BAA4B,CAAM,GACpD,4BAA4B,CAQ9B;AAKD,wBAAgB,sBAAsB,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAMnE;AAKD,wBAAgB,oBAAoB,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAQ/D;AAKD,wBAAgB,4BAA4B,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAU/E;AAKD,wBAAgB,oBAAoB,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAQ/D"}
@@ -1,17 +1,23 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.issuedCredential = issuedCredential;
3
4
  exports.createMockEmailService = createMockEmailService;
4
5
  exports.createMockSmsService = createMockSmsService;
5
6
  exports.createMockAuthLifecycleHooks = createMockAuthLifecycleHooks;
6
7
  exports.createMockAuthLogger = createMockAuthLogger;
8
+ function issuedCredential(overrides = {}) {
9
+ return {
10
+ credential: '123456',
11
+ url: 'https://app.example.com/verify-email',
12
+ expiresInMinutes: 15,
13
+ mode: 'code',
14
+ ...overrides,
15
+ };
16
+ }
7
17
  function createMockEmailService() {
8
18
  return {
9
19
  sendVerificationEmail: jest.fn(),
10
20
  sendPasswordResetEmail: jest.fn(),
11
- sendAccountLockedEmail: jest.fn(),
12
- sendWelcomeEmail: jest.fn(),
13
- sendAccountLinkedEmail: jest.fn(),
14
- sendAccountUnlinkedEmail: jest.fn(),
15
21
  sendPasswordChangedEmail: jest.fn(),
16
22
  };
17
23
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mock-services.js","sourceRoot":"","sources":["../../src/test-utils/mock-services.ts"],"names":[],"mappings":";;AAKA,wDAUC;AAKD,oDAQC;AAKD,oEAUC;AAKD,oDAQC;AAnDD,SAAgB,sBAAsB;IACpC,OAAO;QACL,qBAAqB,EAAE,IAAI,CAAC,EAAE,EAAE;QAChC,sBAAsB,EAAE,IAAI,CAAC,EAAE,EAAE;QACjC,sBAAsB,EAAE,IAAI,CAAC,EAAE,EAAE;QACjC,gBAAgB,EAAE,IAAI,CAAC,EAAE,EAAE;QAC3B,sBAAsB,EAAE,IAAI,CAAC,EAAE,EAAE;QACjC,wBAAwB,EAAE,IAAI,CAAC,EAAE,EAAE;QACnC,wBAAwB,EAAE,IAAI,CAAC,EAAE,EAAE;KACN,CAAC;AAClC,CAAC;AAKD,SAAgB,oBAAoB;IAClC,OAAO;QACL,mBAAmB,EAAE,IAAI,CAAC,EAAE,EAAE;QAC9B,oBAAoB,EAAE,IAAI,CAAC,EAAE,EAAE;QAC/B,eAAe,EAAE,IAAI,CAAC,EAAE,EAAE;QAC1B,oBAAoB,EAAE,IAAI,CAAC,EAAE,EAAE;QAC/B,oBAAoB,EAAE,IAAI,CAAC,EAAE,EAAE;KACJ,CAAC;AAChC,CAAC;AAKD,SAAgB,4BAA4B;IAC1C,OAAO;QACL,YAAY,EAAE,IAAI,CAAC,EAAE,EAAE;QACvB,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE;QACtB,YAAY,EAAE,IAAI,CAAC,EAAE,EAAE;QACvB,eAAe,EAAE,IAAI,CAAC,EAAE,EAAE;QAC1B,eAAe,EAAE,IAAI,CAAC,EAAE,EAAE;QAC1B,qBAAqB,EAAE,IAAI,CAAC,EAAE,EAAE;QAChC,uBAAuB,EAAE,IAAI,CAAC,EAAE,EAAE;KACC,CAAC;AACxC,CAAC;AAKD,SAAgB,oBAAoB;IAClC,OAAO;QACL,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE;QACd,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE;QAChB,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;QACf,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE;QAChB,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE;KACS,CAAC;AAChC,CAAC"}
1
+ {"version":3,"file":"mock-services.js","sourceRoot":"","sources":["../../src/test-utils/mock-services.ts"],"names":[],"mappings":";;AAWA,4CAUC;AAKD,wDAMC;AAKD,oDAQC;AAKD,oEAUC;AAKD,oDAQC;AA9DD,SAAgB,gBAAgB,CAC9B,YAAmD,EAAE;IAErD,OAAO;QACL,UAAU,EAAE,QAAQ;QACpB,GAAG,EAAE,sCAAsC;QAC3C,gBAAgB,EAAE,EAAE;QACpB,IAAI,EAAE,MAAM;QACZ,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAKD,SAAgB,sBAAsB;IACpC,OAAO;QACL,qBAAqB,EAAE,IAAI,CAAC,EAAE,EAAE;QAChC,sBAAsB,EAAE,IAAI,CAAC,EAAE,EAAE;QACjC,wBAAwB,EAAE,IAAI,CAAC,EAAE,EAAE;KACN,CAAC;AAClC,CAAC;AAKD,SAAgB,oBAAoB;IAClC,OAAO;QACL,mBAAmB,EAAE,IAAI,CAAC,EAAE,EAAE;QAC9B,oBAAoB,EAAE,IAAI,CAAC,EAAE,EAAE;QAC/B,eAAe,EAAE,IAAI,CAAC,EAAE,EAAE;QAC1B,oBAAoB,EAAE,IAAI,CAAC,EAAE,EAAE;QAC/B,oBAAoB,EAAE,IAAI,CAAC,EAAE,EAAE;KACJ,CAAC;AAChC,CAAC;AAKD,SAAgB,4BAA4B;IAC1C,OAAO;QACL,YAAY,EAAE,IAAI,CAAC,EAAE,EAAE;QACvB,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE;QACtB,YAAY,EAAE,IAAI,CAAC,EAAE,EAAE;QACvB,eAAe,EAAE,IAAI,CAAC,EAAE,EAAE;QAC1B,eAAe,EAAE,IAAI,CAAC,EAAE,EAAE;QAC1B,qBAAqB,EAAE,IAAI,CAAC,EAAE,EAAE;QAChC,uBAAuB,EAAE,IAAI,CAAC,EAAE,EAAE;KACC,CAAC;AACxC,CAAC;AAKD,SAAgB,oBAAoB;IAClC,OAAO;QACL,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE;QACd,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE;QAChB,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;QACf,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE;QAChB,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE;KACS,CAAC;AAChC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function hashIp(ipAddress: string, salt: string): string;
2
+ //# sourceMappingURL=ip-hash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ip-hash.d.ts","sourceRoot":"","sources":["../../src/utils/ip-hash.ts"],"names":[],"mappings":"AAgCA,wBAAgB,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAK9D"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hashIp = hashIp;
4
+ const crypto_1 = require("crypto");
5
+ function hashIp(ipAddress, salt) {
6
+ return (0, crypto_1.createHmac)('sha256', salt)
7
+ .update(ipAddress)
8
+ .digest('hex')
9
+ .slice(0, 16);
10
+ }
11
+ //# sourceMappingURL=ip-hash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ip-hash.js","sourceRoot":"","sources":["../../src/utils/ip-hash.ts"],"names":[],"mappings":";;AAgCA,wBAKC;AArCD,mCAAoC;AAgCpC,SAAgB,MAAM,CAAC,SAAiB,EAAE,IAAY;IACpD,OAAO,IAAA,mBAAU,EAAC,QAAQ,EAAE,IAAI,CAAC;SAC9B,MAAM,CAAC,SAAS,CAAC;SACjB,MAAM,CAAC,KAAK,CAAC;SACb,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAClB,CAAC"}
@@ -0,0 +1,311 @@
1
+ // @ts-nocheck
2
+ //
3
+ // =============================================================================
4
+ // DO NOT IMPORT THIS FILE.
5
+ // =============================================================================
6
+ //
7
+ // This file is a REFERENCE TEMPLATE shipped with @ambushsoftworks/nestjs-auth-graphql.
8
+ // It is intentionally NOT exported from `src/index.ts` and is NOT importable by
9
+ // consumers from the package's barrel.
10
+ //
11
+ // WHY YOU CAN'T JUST IMPORT IT:
12
+ // TypeScript decorator metadata (the type information `@Mutation(() => Foo)`
13
+ // emits via `emitDecoratorMetadata`) is NOT preserved across compiled package
14
+ // boundaries. If this file's `@Mutation`/`@Query` decorators ran inside the
15
+ // package and the consumer imported the result, NestJS's GraphQL schema builder
16
+ // would throw "Cannot determine GraphQL output type" at runtime. The decorators
17
+ // MUST execute inside YOUR project's compilation unit. See the class-level
18
+ // docblock in `BaseAuthResolver` (`src/resolvers/base-auth.resolver.ts`) for
19
+ // the full explanation — this is the same constraint that prevents Item 5 of
20
+ // the Jobsites feature requests from being implementable inside the package.
21
+ //
22
+ // HOW TO USE THIS FILE:
23
+ // 1. Copy it into your own `src/resolvers/` directory and rename it to
24
+ // something like `auth.resolver.ts`.
25
+ // 2. Replace every `MyAuthUser`, `MyAuthResponse`, `MyLoginInput`, etc.
26
+ // placeholder with your project's actual GraphQL types (the placeholders
27
+ // are tagged with `// REPLACE:` comments).
28
+ // 3. Remove the `@ts-nocheck` directive at the top once you've wired in
29
+ // real types — it is only present so the template doesn't fail
30
+ // typechecking when the placeholders are undefined.
31
+ // 4. Register the resolver in your auth module's `providers` array.
32
+ //
33
+ // WHAT THIS TEMPLATE COVERS:
34
+ // Every `perform*` method on `BaseAuthResolver` is wrapped with the
35
+ // appropriate `@Mutation` or `@Query` decorator, plus the recommended
36
+ // `@Throttle` configuration on auth-sensitive endpoints (signup, login,
37
+ // password reset/change). Guards (`@UseGuards(JwtAuthGuard)`) are applied to
38
+ // methods that require an authenticated user.
39
+ //
40
+ // `@ts-nocheck` is used because the placeholder DTO/entity types intentionally
41
+ // don't exist in the package. Copy this file and replace placeholders before
42
+ // use; once your real types are wired in, remove the directive and the file
43
+ // will typecheck normally.
44
+ //
45
+ // =============================================================================
46
+
47
+ import { Resolver, Mutation, Query, Args, Context } from '@nestjs/graphql';
48
+ import { UseGuards } from '@nestjs/common';
49
+ import { Throttle } from '@nestjs/throttler';
50
+ import {
51
+ BaseAuthResolver,
52
+ JwtAuthGuard,
53
+ CurrentUser,
54
+ } from '@ambushsoftworks/nestjs-auth-graphql';
55
+
56
+ // REPLACE: import your project's User entity (must implement IAuthUser).
57
+ import { MyAuthUser } from '../entities/my-auth-user.entity';
58
+
59
+ // REPLACE: import your project's GraphQL ObjectType DTOs.
60
+ import { MyAuthResponse } from '../dto/my-auth-response.dto';
61
+ import { MyLogoutResponse } from '../dto/my-logout-response.dto';
62
+ import { MyLogoutAllResponse } from '../dto/my-logout-all-response.dto';
63
+ import { MyAccountLockStatus } from '../dto/my-account-lock-status.dto';
64
+ import { MyVerifyEmailResponse } from '../dto/my-verify-email-response.dto';
65
+ import { MyPhoneVerificationResponse } from '../dto/my-phone-verification-response.dto';
66
+ import { MyVerifyPhoneResponse } from '../dto/my-verify-phone-response.dto';
67
+ import { MyRemovePhoneResponse } from '../dto/my-remove-phone-response.dto';
68
+ import { MyPhoneVerificationStatus } from '../dto/my-phone-verification-status.dto';
69
+ import { MyPasswordResetResponse } from '../dto/my-password-reset-response.dto';
70
+ import { MyChangePasswordResponse } from '../dto/my-change-password-response.dto';
71
+
72
+ // REPLACE: import your project's GraphQL InputType DTOs.
73
+ import { MySignupInput } from '../dto/my-signup.input';
74
+ import { MyLoginInput } from '../dto/my-login.input';
75
+ import { MyRefreshTokenInput } from '../dto/my-refresh-token.input';
76
+ import { MyLogoutInput } from '../dto/my-logout.input';
77
+ import { MyVerifyEmailInput } from '../dto/my-verify-email.input';
78
+ import { MySendPhoneVerificationInput } from '../dto/my-send-phone-verification.input';
79
+ import { MyVerifyPhoneInput } from '../dto/my-verify-phone.input';
80
+ import { MyRequestPasswordResetInput } from '../dto/my-request-password-reset.input';
81
+ import { MyResetPasswordInput } from '../dto/my-reset-password.input';
82
+ import { MyChangePasswordInput } from '../dto/my-change-password.input';
83
+ import { MyCompleteFacebookSignUpInput } from '../dto/my-complete-facebook-signup.input';
84
+
85
+ /**
86
+ * Full reference auth resolver. Wraps every `perform*` method on
87
+ * `BaseAuthResolver` with the matching GraphQL decorator. Copy and
88
+ * customize — DO NOT import this file from the package.
89
+ */
90
+ @Resolver()
91
+ export class AuthResolver extends BaseAuthResolver<MyAuthUser> {
92
+ // ===========================================================================
93
+ // Core Auth Mutations
94
+ // ===========================================================================
95
+
96
+ @Mutation(() => MyAuthResponse)
97
+ @Throttle({ default: { limit: 5, ttl: 60000 } }) // 5 signups / minute / IP
98
+ async signup(
99
+ @Args('input') input: MySignupInput,
100
+ @Context() ctx: any,
101
+ ): Promise<MyAuthResponse> {
102
+ return this.performSignup(input, ctx) as Promise<MyAuthResponse>;
103
+ }
104
+
105
+ @Mutation(() => MyAuthResponse)
106
+ @Throttle({ default: { limit: 5, ttl: 60000 } }) // 5 logins / minute / IP
107
+ async login(
108
+ @Args('input') input: MyLoginInput,
109
+ @Context() ctx: any,
110
+ ): Promise<MyAuthResponse> {
111
+ return this.performLogin(input, ctx) as Promise<MyAuthResponse>;
112
+ }
113
+
114
+ // When `features.cookieAuth: true`, browsers cannot read the HttpOnly
115
+ // refresh cookie and will send `{ refreshToken: "" }` relying on the
116
+ // server to pull the token from the cookie. Mark `refreshToken` on your
117
+ // `MyRefreshTokenInput` / `MyLogoutInput` DTOs as `@IsOptional()` so the
118
+ // empty value passes class-validator. Non-browser clients keep sending
119
+ // an explicit token and that path still takes precedence.
120
+ @Mutation(() => MyAuthResponse)
121
+ async refreshToken(
122
+ @Args('input') input: MyRefreshTokenInput,
123
+ @Context() ctx: any,
124
+ ): Promise<MyAuthResponse> {
125
+ return this.performRefreshToken(input, ctx) as Promise<MyAuthResponse>;
126
+ }
127
+
128
+ @Mutation(() => MyLogoutResponse)
129
+ @UseGuards(JwtAuthGuard)
130
+ async logout(
131
+ @Args('input') input: MyLogoutInput,
132
+ @CurrentUser() user: MyAuthUser,
133
+ @Context() ctx: any,
134
+ ): Promise<MyLogoutResponse> {
135
+ return this.performLogout(input, user, ctx);
136
+ }
137
+
138
+ @Mutation(() => MyLogoutAllResponse)
139
+ @UseGuards(JwtAuthGuard)
140
+ async logoutAll(
141
+ @CurrentUser() user: MyAuthUser,
142
+ @Context() ctx: any,
143
+ ): Promise<MyLogoutAllResponse> {
144
+ return this.performLogoutAll(user, ctx);
145
+ }
146
+
147
+ // ===========================================================================
148
+ // Account Lock Status
149
+ // ===========================================================================
150
+
151
+ @Query(() => MyAccountLockStatus)
152
+ async checkAccountLockStatus(
153
+ @Args('email') email: string,
154
+ ): Promise<MyAccountLockStatus> {
155
+ return this.performCheckAccountLockStatus(email);
156
+ }
157
+
158
+ // ===========================================================================
159
+ // Email Verification
160
+ // ===========================================================================
161
+
162
+ @Mutation(() => MyVerifyEmailResponse)
163
+ async verifyEmail(
164
+ @Args('input') input: MyVerifyEmailInput,
165
+ @Context() ctx: any,
166
+ ): Promise<MyVerifyEmailResponse> {
167
+ return this.performVerifyEmail(input, ctx);
168
+ }
169
+
170
+ @Mutation(() => MyVerifyEmailResponse)
171
+ async resendVerificationEmail(
172
+ @Args('email') email: string,
173
+ @Context() ctx: any,
174
+ ): Promise<MyVerifyEmailResponse> {
175
+ return this.performResendVerificationEmail(email, ctx);
176
+ }
177
+
178
+ // ===========================================================================
179
+ // Phone Verification
180
+ // ===========================================================================
181
+
182
+ @Mutation(() => MyPhoneVerificationResponse)
183
+ @UseGuards(JwtAuthGuard)
184
+ async sendPhoneVerification(
185
+ @Args('input') input: MySendPhoneVerificationInput,
186
+ @CurrentUser() user: MyAuthUser,
187
+ @Context() ctx: any,
188
+ ): Promise<MyPhoneVerificationResponse> {
189
+ return this.performSendPhoneVerification(input, user, ctx);
190
+ }
191
+
192
+ @Mutation(() => MyVerifyPhoneResponse)
193
+ @UseGuards(JwtAuthGuard)
194
+ async verifyPhone(
195
+ @Args('input') input: MyVerifyPhoneInput,
196
+ @CurrentUser() user: MyAuthUser,
197
+ ): Promise<MyVerifyPhoneResponse> {
198
+ return this.performVerifyPhone(input, user);
199
+ }
200
+
201
+ @Mutation(() => MyPhoneVerificationResponse)
202
+ @UseGuards(JwtAuthGuard)
203
+ async resendPhoneVerification(
204
+ @Args('phoneNumber') phoneNumber: string,
205
+ @CurrentUser() user: MyAuthUser,
206
+ ): Promise<MyPhoneVerificationResponse> {
207
+ return this.performResendPhoneVerification(phoneNumber, user);
208
+ }
209
+
210
+ @Mutation(() => MyRemovePhoneResponse)
211
+ @UseGuards(JwtAuthGuard)
212
+ async removePhoneNumber(
213
+ @CurrentUser() user: MyAuthUser,
214
+ ): Promise<MyRemovePhoneResponse> {
215
+ return this.performRemovePhoneNumber(user);
216
+ }
217
+
218
+ @Query(() => MyPhoneVerificationStatus)
219
+ @UseGuards(JwtAuthGuard)
220
+ async phoneVerificationStatus(
221
+ @CurrentUser() user: MyAuthUser,
222
+ ): Promise<MyPhoneVerificationStatus> {
223
+ return this.performPhoneVerificationStatus(user);
224
+ }
225
+
226
+ // ===========================================================================
227
+ // Password Reset
228
+ // ===========================================================================
229
+
230
+ @Mutation(() => MyPasswordResetResponse)
231
+ @Throttle({ default: { limit: 3, ttl: 3600000 } }) // 3 requests / hour / IP
232
+ async requestPasswordReset(
233
+ @Args('input') input: MyRequestPasswordResetInput,
234
+ @Context() ctx: any,
235
+ ): Promise<MyPasswordResetResponse> {
236
+ return this.performRequestPasswordReset(input, ctx);
237
+ }
238
+
239
+ @Mutation(() => MyPasswordResetResponse)
240
+ @Throttle({ default: { limit: 5, ttl: 900000 } }) // 5 attempts / 15 min / IP
241
+ async resetPassword(
242
+ @Args('input') input: MyResetPasswordInput,
243
+ @Context() ctx: any,
244
+ ): Promise<MyPasswordResetResponse> {
245
+ return this.performResetPassword(input, ctx);
246
+ }
247
+
248
+ // ===========================================================================
249
+ // Password Change (authenticated)
250
+ // ===========================================================================
251
+
252
+ /**
253
+ * Change password for the authenticated user.
254
+ *
255
+ * `AuthService.changePassword` revokes ALL refresh tokens for the user
256
+ * (logging them out of every device including the current one). Calling
257
+ * `authService.issueAuthSession(user.id, ctx.res)` after the change keeps
258
+ * the current device logged in by minting a fresh token pair (and writing
259
+ * cookies if cookie auth is enabled).
260
+ */
261
+ @Mutation(() => MyChangePasswordResponse)
262
+ @UseGuards(JwtAuthGuard)
263
+ @Throttle({ default: { limit: 5, ttl: 900000 } }) // 5 attempts / 15 min / IP
264
+ async changePassword(
265
+ @CurrentUser() user: MyAuthUser,
266
+ @Args('input') input: MyChangePasswordInput,
267
+ @Context() ctx: any,
268
+ ): Promise<MyChangePasswordResponse> {
269
+ const result = await this.performChangePassword(
270
+ user.id,
271
+ input.currentPassword,
272
+ input.newPassword,
273
+ );
274
+ // Keep the current device logged in (other devices are revoked above).
275
+ // Use `getResponseFromContext` so cookies work under both Apollo
276
+ // (`ctx.res`) and Express/Fastify (`ctx.req.res`).
277
+ const res = this.getResponseFromContext(ctx);
278
+ const tokens = await this.authService.issueAuthSession(user.id, res);
279
+ return {
280
+ ...result,
281
+ accessToken: tokens.accessToken,
282
+ refreshToken: tokens.refreshToken,
283
+ };
284
+ }
285
+
286
+ // ===========================================================================
287
+ // Current User
288
+ // ===========================================================================
289
+
290
+ @Query(() => MyAuthUser)
291
+ @UseGuards(JwtAuthGuard)
292
+ async me(@CurrentUser() user: MyAuthUser): Promise<MyAuthUser> {
293
+ return this.performGetCurrentUser(user.id);
294
+ }
295
+
296
+ // ===========================================================================
297
+ // Facebook OAuth Email Fallback
298
+ // ===========================================================================
299
+
300
+ @Mutation(() => MyAuthResponse, {
301
+ name: 'completeFacebookSignUp',
302
+ description: 'Complete Facebook sign-up when email not provided by Facebook',
303
+ })
304
+ @Throttle({ default: { limit: 5, ttl: 60000 } })
305
+ async completeFacebookSignUp(
306
+ @Args('input') input: MyCompleteFacebookSignUpInput,
307
+ @Context() ctx: any,
308
+ ): Promise<MyAuthResponse> {
309
+ return this.performCompleteFacebookSignUp(input, ctx) as Promise<MyAuthResponse>;
310
+ }
311
+ }