@nauth-toolkit/core 0.1.35 → 0.1.37

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 (58) hide show
  1. package/dist/bootstrap.d.ts.map +1 -1
  2. package/dist/bootstrap.js +1 -1
  3. package/dist/bootstrap.js.map +1 -1
  4. package/dist/dto/auth-response.dto.d.ts +60 -54
  5. package/dist/dto/auth-response.dto.d.ts.map +1 -1
  6. package/dist/dto/auth-response.dto.js +23 -11
  7. package/dist/dto/auth-response.dto.js.map +1 -1
  8. package/dist/dto/login.dto.js +1 -1
  9. package/dist/index.d.ts +5 -0
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +7 -1
  12. package/dist/index.js.map +1 -1
  13. package/dist/interfaces/config.interface.d.ts +26 -254
  14. package/dist/interfaces/config.interface.d.ts.map +1 -1
  15. package/dist/interfaces/hooks.interface.d.ts +100 -0
  16. package/dist/interfaces/hooks.interface.d.ts.map +1 -0
  17. package/dist/interfaces/hooks.interface.js +12 -0
  18. package/dist/interfaces/hooks.interface.js.map +1 -0
  19. package/dist/interfaces/index.d.ts +1 -0
  20. package/dist/interfaces/index.d.ts.map +1 -1
  21. package/dist/interfaces/index.js +1 -0
  22. package/dist/interfaces/index.js.map +1 -1
  23. package/dist/internal.d.ts +5 -0
  24. package/dist/internal.d.ts.map +1 -1
  25. package/dist/internal.js +10 -1
  26. package/dist/internal.js.map +1 -1
  27. package/dist/schemas/auth-config.schema.d.ts +32 -158
  28. package/dist/schemas/auth-config.schema.d.ts.map +1 -1
  29. package/dist/schemas/auth-config.schema.js +1 -15
  30. package/dist/schemas/auth-config.schema.js.map +1 -1
  31. package/dist/services/adaptive-mfa-decision.service.d.ts.map +1 -1
  32. package/dist/services/adaptive-mfa-decision.service.js +4 -34
  33. package/dist/services/adaptive-mfa-decision.service.js.map +1 -1
  34. package/dist/services/auth-challenge-helper.service.d.ts.map +1 -1
  35. package/dist/services/auth-challenge-helper.service.js +2 -11
  36. package/dist/services/auth-challenge-helper.service.js.map +1 -1
  37. package/dist/services/auth.service.d.ts +3 -1
  38. package/dist/services/auth.service.d.ts.map +1 -1
  39. package/dist/services/auth.service.js +67 -128
  40. package/dist/services/auth.service.js.map +1 -1
  41. package/dist/services/hook-registry.service.d.ts +74 -0
  42. package/dist/services/hook-registry.service.d.ts.map +1 -0
  43. package/dist/services/hook-registry.service.js +125 -0
  44. package/dist/services/hook-registry.service.js.map +1 -0
  45. package/dist/services/social-auth-base.service.d.ts +3 -1
  46. package/dist/services/social-auth-base.service.d.ts.map +1 -1
  47. package/dist/services/social-auth-base.service.js +14 -40
  48. package/dist/services/social-auth-base.service.js.map +1 -1
  49. package/dist/services/social-redirect.handler.d.ts +1 -1
  50. package/dist/utils/setup/init-services.d.ts +2 -1
  51. package/dist/utils/setup/init-services.d.ts.map +1 -1
  52. package/dist/utils/setup/init-services.js +4 -1
  53. package/dist/utils/setup/init-services.js.map +1 -1
  54. package/dist/utils/setup/init-social.d.ts +1 -1
  55. package/dist/utils/setup/init-social.d.ts.map +1 -1
  56. package/dist/utils/setup/init-social.js +4 -4
  57. package/dist/utils/setup/init-social.js.map +1 -1
  58. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGnD,OAAO,EAAE,YAAY,EAA+B,MAAM,uBAAuB,CAAC;AASlF,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAKtD,OAAO,EAAgB,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE1E,OAAO,EAAkB,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAGjF,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AAOxD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,0BAA0B;IAC1B,MAAM,EAAE,WAAW,CAAC;IAEpB,yBAAyB;IACzB,UAAU,EAAE,UAAU,CAAC;IAEvB;;;OAGG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa,CAAC,WAAW,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,CACrE,SAAQ,IAAI,CAAC,aAAa,EAAE,kBAAkB,GAAG,4BAA4B,CAAC,EAAE,oBAAoB;IACpG,0CAA0C;IAC1C,UAAU,EAAE;QACV,6CAA6C;QAC7C,UAAU,EAAE,WAAW,CAAC;QACxB,yBAAyB;QACzB,IAAI,EAAE,WAAW,CAAC;QAClB,sBAAsB;QACtB,IAAI,EAAE,WAAW,CAAC;QAClB,4CAA4C;QAC5C,aAAa,EAAE,WAAW,CAAC;KAC5B,CAAC;IAEF,oBAAoB;IACpB,OAAO,EAAE;QACP,2CAA2C;QAC3C,MAAM,EAAE,MAAM,OAAO,CAAC;QACtB,yDAAyD;QACzD,WAAW,EAAE,CAAC,OAAO,CAAC,EAAE;YAAE,IAAI,CAAC,EAAE,OAAO,CAAA;SAAE,KAAK,OAAO,CAAC;QACvD,qCAAqC;QACrC,YAAY,EAAE,MAAM,OAAO,CAAC;QAC5B,mCAAmC;QACnC,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,KAAK,OAAO,CAAC;QACrD,qCAAqC;QACrC,cAAc,EAAE,MAAM,KAAK,GAAG,SAAS,CAAC;QACxC,6BAA6B;QAC7B,iBAAiB,EAAE,MAAM,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;QACrD,sBAAsB;QACtB,aAAa,EAAE,MAAM,UAAU,GAAG,SAAS,CAAC;KAC7C,CAAC;IAEF,6BAA6B;IAC7B,OAAO,EAAE,YAAY,CAAC;IAEtB,oBAAoB;IACpB,MAAM,EAAE,WAAW,CAAC;IAEpB,sBAAsB;IACtB,MAAM,EAAE,WAAW,CAAC;IAEpB,gCAAgC;IAChC,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAMD;;;;GAIG;AACH,qBAAa,KAAK;IAChB;;;;;;;;;;;;;;OAcG;WACU,MAAM,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;CA2NnE"}
1
+ {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGnD,OAAO,EAAE,YAAY,EAA+B,MAAM,uBAAuB,CAAC;AASlF,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAKtD,OAAO,EAAgB,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE1E,OAAO,EAAkB,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAGjF,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AAOxD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,0BAA0B;IAC1B,MAAM,EAAE,WAAW,CAAC;IAEpB,yBAAyB;IACzB,UAAU,EAAE,UAAU,CAAC;IAEvB;;;OAGG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa,CAAC,WAAW,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,CACrE,SAAQ,IAAI,CAAC,aAAa,EAAE,kBAAkB,GAAG,4BAA4B,CAAC,EAAE,oBAAoB;IACpG,0CAA0C;IAC1C,UAAU,EAAE;QACV,6CAA6C;QAC7C,UAAU,EAAE,WAAW,CAAC;QACxB,yBAAyB;QACzB,IAAI,EAAE,WAAW,CAAC;QAClB,sBAAsB;QACtB,IAAI,EAAE,WAAW,CAAC;QAClB,4CAA4C;QAC5C,aAAa,EAAE,WAAW,CAAC;KAC5B,CAAC;IAEF,oBAAoB;IACpB,OAAO,EAAE;QACP,2CAA2C;QAC3C,MAAM,EAAE,MAAM,OAAO,CAAC;QACtB,yDAAyD;QACzD,WAAW,EAAE,CAAC,OAAO,CAAC,EAAE;YAAE,IAAI,CAAC,EAAE,OAAO,CAAA;SAAE,KAAK,OAAO,CAAC;QACvD,qCAAqC;QACrC,YAAY,EAAE,MAAM,OAAO,CAAC;QAC5B,mCAAmC;QACnC,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,KAAK,OAAO,CAAC;QACrD,qCAAqC;QACrC,cAAc,EAAE,MAAM,KAAK,GAAG,SAAS,CAAC;QACxC,6BAA6B;QAC7B,iBAAiB,EAAE,MAAM,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;QACrD,sBAAsB;QACtB,aAAa,EAAE,MAAM,UAAU,GAAG,SAAS,CAAC;KAC7C,CAAC;IAEF,6BAA6B;IAC7B,OAAO,EAAE,YAAY,CAAC;IAEtB,oBAAoB;IACpB,MAAM,EAAE,WAAW,CAAC;IAEpB,sBAAsB;IACtB,MAAM,EAAE,WAAW,CAAC;IAEpB,gCAAgC;IAChC,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAMD;;;;GAIG;AACH,qBAAa,KAAK;IAChB;;;;;;;;;;;;;;OAcG;WACU,MAAM,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;CA4NnE"}
package/dist/bootstrap.js CHANGED
@@ -112,7 +112,7 @@ class NAuth {
112
112
  if (config.mfa?.enabled && services.mfaService) {
113
113
  await (0, register_mfa_1.registerMFAProviders)(config, services.mfaService, repos.mfaDeviceRepository, repos.userRepository, logger, services.passwordService, services.emailVerificationService, services.phoneVerificationService, services.challengeService, services.auditService, services.clientInfoService);
114
114
  }
115
- const socialProviders = await (0, init_social_1.initSocialAuth)(config, services.socialProviderRegistry, services.authService, services.socialAuthService, services.jwtService, services.sessionService, services.authChallengeHelperService, services.clientInfoService, logger, socialAuthStateStore, repos.userRepository, services.phoneVerificationService, services.auditService, services.trustedDeviceService, repos.socialProviderSecretRepository);
115
+ const socialProviders = await (0, init_social_1.initSocialAuth)(config, services.socialProviderRegistry, services.authService, services.socialAuthService, services.jwtService, services.sessionService, services.authChallengeHelperService, services.clientInfoService, logger, socialAuthStateStore, repos.userRepository, services.phoneVerificationService, services.auditService, services.trustedDeviceService, repos.socialProviderSecretRepository, services.hookRegistry);
116
116
  // ========================================================================
117
117
  // 5. Create Handlers
118
118
  // ========================================================================
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,53 @@
1
1
  import { AuthChallenge } from './auth-challenge.dto';
2
+ import { IUser } from '../interfaces/entities.interface';
3
+ /**
4
+ * User information in authentication responses
5
+ *
6
+ * Minimal user object returned in AuthResponseDTO.
7
+ * Contains only essential fields needed for client applications.
8
+ */
9
+ export interface AuthResponseUser {
10
+ /**
11
+ * User's unique identifier (UUID v4)
12
+ * External identifier safe to expose in JWTs and APIs
13
+ */
14
+ sub: string;
15
+ /**
16
+ * User's email address
17
+ */
18
+ email: string;
19
+ /**
20
+ * User's first name (optional)
21
+ */
22
+ firstName?: string | null;
23
+ /**
24
+ * User's last name (optional)
25
+ */
26
+ lastName?: string | null;
27
+ /**
28
+ * User's phone number (optional)
29
+ * E.164 format
30
+ */
31
+ phone?: string;
32
+ /**
33
+ * Email verification status
34
+ */
35
+ isEmailVerified: boolean;
36
+ /**
37
+ * Phone verification status
38
+ */
39
+ isPhoneVerified?: boolean;
40
+ /**
41
+ * List of linked social providers
42
+ */
43
+ socialProviders?: string[];
44
+ /**
45
+ * Whether this user has a password set
46
+ * Used to determine if user can use password-based authentication
47
+ * or is a pure social signup (no password, only social auth)
48
+ */
49
+ hasPasswordHash?: boolean;
50
+ }
2
51
  /**
3
52
  * Unified Authentication Response DTO
4
53
  *
@@ -16,17 +65,6 @@ import { AuthChallenge } from './auth-challenge.dto';
16
65
  * are completed. This ensures proper verification and security enforcement.
17
66
  *
18
67
  * No validators needed - this is generated internally by the library.
19
- *
20
- * @example
21
- * ```typescript
22
- * // Successful auth with no challenges
23
- * const loginResult = await authService.login(dto);
24
- * // { accessToken: '...', refreshToken: '...', user: {...} }
25
- *
26
- * // Auth with pending challenge
27
- * const signupResult = await authService.signup(dto);
28
- * // { challengeName: 'VERIFY_EMAIL', session: '...', challengeParameters: {...} }
29
- * ```
30
68
  */
31
69
  export declare class AuthResponseDTO {
32
70
  /**
@@ -120,49 +158,7 @@ export declare class AuthResponseDTO {
120
158
  *
121
159
  * NOTE: Only present when authentication is complete (no pending challenges)
122
160
  */
123
- user?: {
124
- /**
125
- * User's unique identifier (UUID v4)
126
- * External identifier safe to expose in JWTs and APIs
127
- */
128
- sub: string;
129
- /**
130
- * User's email address
131
- */
132
- email: string;
133
- /**
134
- * User's first name (optional)
135
- */
136
- firstName?: string | null;
137
- /**
138
- * User's last name (optional)
139
- */
140
- lastName?: string | null;
141
- /**
142
- * User's phone number (optional)
143
- * E.164 format
144
- */
145
- phone?: string;
146
- /**
147
- * Email verification status
148
- */
149
- isEmailVerified: boolean;
150
- /**
151
- * Phone verification status
152
- */
153
- isPhoneVerified?: boolean;
154
- /**
155
- * List of linked social providers
156
- * @example ['google', 'apple']
157
- */
158
- socialProviders?: string[];
159
- /**
160
- * Whether this user has a password set
161
- * Used to determine if user can use password-based authentication
162
- * or is a pure social signup (no password, only social auth)
163
- */
164
- hasPasswordHash?: boolean;
165
- };
161
+ user?: AuthResponseUser;
166
162
  /**
167
163
  * Challenge that must be completed before authentication is granted
168
164
  *
@@ -238,4 +234,14 @@ export interface TokenResponse {
238
234
  */
239
235
  refreshTokenExpiresAt: number;
240
236
  }
237
+ /**
238
+ * Convert IUser entity to AuthResponseUser interface
239
+ *
240
+ * Extracts only the fields needed for authentication responses,
241
+ * excluding sensitive and internal fields.
242
+ *
243
+ * @param user - User entity from database (IUser interface)
244
+ * @returns AuthResponseUser object with sanitized user data
245
+ */
246
+ export declare function toAuthResponseUser(user: IUser): AuthResponseUser;
241
247
  //# sourceMappingURL=auth-response.dto.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth-response.dto.d.ts","sourceRoot":"","sources":["../../src/dto/auth-response.dto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBAAa,eAAe;IAC1B;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;;;;OAOG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B;;;;;;;OAOG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B;;;;;;;;;;;;OAYG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;;OAKG;IACH,IAAI,CAAC,EAAE;QACL;;;WAGG;QACH,GAAG,EAAE,MAAM,CAAC;QAEZ;;WAEG;QACH,KAAK,EAAE,MAAM,CAAC;QAEd;;WAEG;QACH,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAE1B;;WAEG;QACH,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAEzB;;;WAGG;QACH,KAAK,CAAC,EAAE,MAAM,CAAC;QAEf;;WAEG;QACH,eAAe,EAAE,OAAO,CAAC;QAEzB;;WAEG;QACH,eAAe,CAAC,EAAE,OAAO,CAAC;QAE1B;;;WAGG;QACH,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;QAE3B;;;;WAIG;QACH,eAAe,CAAC,EAAE,OAAO,CAAC;KAC3B,CAAC;IAMF;;;;;;;;;OASG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAE9B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;;;;;;;;;;;;;;OAiBG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE9C;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,oBAAoB,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,qBAAqB,EAAE,MAAM,CAAC;CAC/B"}
1
+ {"version":3,"file":"auth-response.dto.d.ts","sourceRoot":"","sources":["../../src/dto/auth-response.dto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAEzD;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE1B;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEzB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,eAAe,EAAE,OAAO,CAAC;IAEzB;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAE3B;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,eAAe;IAC1B;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;;;;OAOG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B;;;;;;;OAOG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B;;;;;;;;;;;;OAYG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,gBAAgB,CAAC;IAMxB;;;;;;;;;OASG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAE9B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;;;;;;;;;;;;;;OAiBG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE9C;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,oBAAoB,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,KAAK,GAAG,gBAAgB,CAYhE"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AuthResponseDTO = void 0;
4
+ exports.toAuthResponseUser = toAuthResponseUser;
4
5
  /**
5
6
  * Unified Authentication Response DTO
6
7
  *
@@ -18,17 +19,6 @@ exports.AuthResponseDTO = void 0;
18
19
  * are completed. This ensures proper verification and security enforcement.
19
20
  *
20
21
  * No validators needed - this is generated internally by the library.
21
- *
22
- * @example
23
- * ```typescript
24
- * // Successful auth with no challenges
25
- * const loginResult = await authService.login(dto);
26
- * // { accessToken: '...', refreshToken: '...', user: {...} }
27
- *
28
- * // Auth with pending challenge
29
- * const signupResult = await authService.signup(dto);
30
- * // { challengeName: 'VERIFY_EMAIL', session: '...', challengeParameters: {...} }
31
- * ```
32
22
  */
33
23
  class AuthResponseDTO {
34
24
  /**
@@ -178,4 +168,26 @@ class AuthResponseDTO {
178
168
  userSub;
179
169
  }
180
170
  exports.AuthResponseDTO = AuthResponseDTO;
171
+ /**
172
+ * Convert IUser entity to AuthResponseUser interface
173
+ *
174
+ * Extracts only the fields needed for authentication responses,
175
+ * excluding sensitive and internal fields.
176
+ *
177
+ * @param user - User entity from database (IUser interface)
178
+ * @returns AuthResponseUser object with sanitized user data
179
+ */
180
+ function toAuthResponseUser(user) {
181
+ return {
182
+ sub: user.sub,
183
+ email: user.email,
184
+ firstName: user.firstName,
185
+ lastName: user.lastName,
186
+ phone: user.phone ?? undefined,
187
+ isEmailVerified: user.isEmailVerified,
188
+ isPhoneVerified: user.isPhoneVerified ?? undefined,
189
+ socialProviders: user.socialProviders && user.socialProviders.length > 0 ? user.socialProviders : undefined,
190
+ hasPasswordHash: !!user.passwordHash,
191
+ };
192
+ }
181
193
  //# sourceMappingURL=auth-response.dto.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth-response.dto.js","sourceRoot":"","sources":["../../src/dto/auth-response.dto.ts"],"names":[],"mappings":";;;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAa,eAAe;IAC1B;;;;;OAKG;IACH,WAAW,CAAU;IAErB;;;;;OAKG;IACH,YAAY,CAAU;IAEtB;;;;;;;OAOG;IACH,oBAAoB,CAAU;IAE9B;;;;;;;OAOG;IACH,qBAAqB,CAAU;IAE/B;;;;;;;;;;;;OAYG;IACH,UAAU,CAAU;IAEpB;;;;;;;;;;;;OAYG;IACH,OAAO,CAAW;IAElB;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,WAAW,CAAU;IAErB;;;;;OAKG;IACH,IAAI,CAkDF;IAEF,+EAA+E;IAC/E,4CAA4C;IAC5C,+EAA+E;IAE/E;;;;;;;;;OASG;IACH,aAAa,CAAiB;IAE9B;;;;;;;;;;OAUG;IACH,OAAO,CAAU;IAEjB;;;;;;;;;;;;;;;;;OAiBG;IACH,mBAAmB,CAA2B;IAE9C;;;;;;OAMG;IACH,OAAO,CAAU;CAClB;AAhND,0CAgNC"}
1
+ {"version":3,"file":"auth-response.dto.js","sourceRoot":"","sources":["../../src/dto/auth-response.dto.ts"],"names":[],"mappings":";;;AAmRA,gDAYC;AAnOD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAa,eAAe;IAC1B;;;;;OAKG;IACH,WAAW,CAAU;IAErB;;;;;OAKG;IACH,YAAY,CAAU;IAEtB;;;;;;;OAOG;IACH,oBAAoB,CAAU;IAE9B;;;;;;;OAOG;IACH,qBAAqB,CAAU;IAE/B;;;;;;;;;;;;OAYG;IACH,UAAU,CAAU;IAEpB;;;;;;;;;;;;OAYG;IACH,OAAO,CAAW;IAElB;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,WAAW,CAAU;IAErB;;;;;OAKG;IACH,IAAI,CAAoB;IAExB,+EAA+E;IAC/E,4CAA4C;IAC5C,+EAA+E;IAE/E;;;;;;;;;OASG;IACH,aAAa,CAAiB;IAE9B;;;;;;;;;;OAUG;IACH,OAAO,CAAU;IAEjB;;;;;;;;;;;;;;;;;OAiBG;IACH,mBAAmB,CAA2B;IAE9C;;;;;;OAMG;IACH,OAAO,CAAU;CAClB;AA9JD,0CA8JC;AA8BD;;;;;;;;GAQG;AACH,SAAgB,kBAAkB,CAAC,IAAW;IAC5C,OAAO;QACL,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,SAAS;QAC9B,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,eAAe,EAAE,IAAI,CAAC,eAAe,IAAI,SAAS;QAClD,eAAe,EAAE,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS;QAC3G,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY;KACrC,CAAC;AACJ,CAAC"}
@@ -16,7 +16,7 @@ const class_transformer_1 = require("class-transformer");
16
16
  * Allowed deviceType values for session + trusted-device persistence.
17
17
  *
18
18
  * @remarks
19
- * ⚠️ SECURITY: This must remain strict. Arbitrary strings become persisted metadata
19
+ * SECURITY: This must remain strict. Arbitrary strings become persisted metadata
20
20
  * and can pollute logs/audit trails.
21
21
  *
22
22
  * @example
package/dist/index.d.ts CHANGED
@@ -40,6 +40,11 @@ export { AuthAuditService } from './services/auth-audit.service';
40
40
  * CSRF Protection Service
41
41
  */
42
42
  export { CsrfService } from './services/csrf.service';
43
+ /**
44
+ * Hook Registry Service
45
+ * Manages registration and execution of lifecycle hooks
46
+ */
47
+ export { HookRegistryService } from './services/hook-registry.service';
43
48
  export * from './dto';
44
49
  export { NAuthException, getHttpStatusForErrorCode } from './exceptions/nauth.exception';
45
50
  export { AuthErrorCode } from './enums/error-codes.enum';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,cAAc,yBAAyB,CAAC;AAExC;;;GAGG;AACH,cAAc,wBAAwB,CAAC;AAEvC;;;GAGG;AACH,cAAc,gCAAgC,CAAC;AAE/C;;;GAGG;AACH,cAAc,uCAAuC,CAAC;AAEtD;;;GAGG;AACH,cAAc,uCAAuC,CAAC;AAEtD;;;GAGG;AACH,cAAc,gCAAgC,CAAC;AAE/C;;;;;;GAMG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE;;GAEG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAgBtD,cAAc,OAAO,CAAC;AAGtB,OAAO,EAAE,cAAc,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AACzF,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAG9G,cAAc,cAAc,CAAC;AAE7B,YAAY,EAAE,UAAU,IAAI,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAGpF,OAAO,EAAE,gBAAgB,EAAE,KAAK,WAAW,IAAI,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAE3G,YAAY,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAGjE,cAAc,YAAY,CAAC;AAG3B,cAAc,WAAW,CAAC;AAG1B,cAAc,aAAa,CAAC;AAG5B,cAAc,SAAS,CAAC;AAGxB,cAAc,iCAAiC,CAAC;AAOhD,cAAc,aAAa,CAAC;AAG5B,cAAc,uBAAuB,CAAC;AAGtC,cAAc,YAAY,CAAC;AAG3B,cAAc,4BAA4B,CAAC;AAK3C,cAAc,oCAAoC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,cAAc,yBAAyB,CAAC;AAExC;;;GAGG;AACH,cAAc,wBAAwB,CAAC;AAEvC;;;GAGG;AACH,cAAc,gCAAgC,CAAC;AAE/C;;;GAGG;AACH,cAAc,uCAAuC,CAAC;AAEtD;;;GAGG;AACH,cAAc,uCAAuC,CAAC;AAEtD;;;GAGG;AACH,cAAc,gCAAgC,CAAC;AAE/C;;;;;;GAMG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE;;GAEG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD;;;GAGG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAgBvE,cAAc,OAAO,CAAC;AAGtB,OAAO,EAAE,cAAc,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AACzF,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAG9G,cAAc,cAAc,CAAC;AAE7B,YAAY,EAAE,UAAU,IAAI,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAGpF,OAAO,EAAE,gBAAgB,EAAE,KAAK,WAAW,IAAI,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAE3G,YAAY,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAGjE,cAAc,YAAY,CAAC;AAG3B,cAAc,WAAW,CAAC;AAG1B,cAAc,aAAa,CAAC;AAG5B,cAAc,SAAS,CAAC;AAGxB,cAAc,iCAAiC,CAAC;AAOhD,cAAc,aAAa,CAAC;AAG5B,cAAc,uBAAuB,CAAC;AAGtC,cAAc,YAAY,CAAC;AAG3B,cAAc,4BAA4B,CAAC;AAK3C,cAAc,oCAAoC,CAAC"}
package/dist/index.js CHANGED
@@ -19,7 +19,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
19
19
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
20
20
  };
21
21
  Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.authConfigSchema = exports.MFADeviceMethods = exports.MFAMethod = exports.AuthAuditEventType = exports.AuthErrorCode = exports.getHttpStatusForErrorCode = exports.NAuthException = exports.CsrfService = exports.AuthAuditService = void 0;
22
+ exports.authConfigSchema = exports.MFADeviceMethods = exports.MFAMethod = exports.AuthAuditEventType = exports.AuthErrorCode = exports.getHttpStatusForErrorCode = exports.NAuthException = exports.HookRegistryService = exports.CsrfService = exports.AuthAuditService = void 0;
23
23
  /**
24
24
  * Main authentication service
25
25
  * Handles signup, login, logout, password management, and user operations
@@ -64,6 +64,12 @@ Object.defineProperty(exports, "AuthAuditService", { enumerable: true, get: func
64
64
  */
65
65
  var csrf_service_1 = require("./services/csrf.service");
66
66
  Object.defineProperty(exports, "CsrfService", { enumerable: true, get: function () { return csrf_service_1.CsrfService; } });
67
+ /**
68
+ * Hook Registry Service
69
+ * Manages registration and execution of lifecycle hooks
70
+ */
71
+ var hook_registry_service_1 = require("./services/hook-registry.service");
72
+ Object.defineProperty(exports, "HookRegistryService", { enumerable: true, get: function () { return hook_registry_service_1.HookRegistryService; } });
67
73
  // ============================================================================
68
74
  // Internal Services - NOT EXPORTED
69
75
  // ============================================================================
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAC/E,yEAAyE;AACzE,wEAAwE;;;;;;;;;;;;;;;;;AAExE;;;GAGG;AACH,0DAAwC;AAExC;;;GAGG;AACH,yDAAuC;AAEvC;;;GAGG;AACH,iEAA+C;AAE/C;;;GAGG;AACH,wEAAsD;AAEtD;;;GAGG;AACH,wEAAsD;AAEtD;;;GAGG;AACH,iEAA+C;AAE/C;;;;;;GAMG;AACH,oEAAiE;AAAxD,sHAAA,gBAAgB,OAAA;AAEzB;;GAEG;AACH,wDAAsD;AAA7C,2GAAA,WAAW,OAAA;AAEpB,+EAA+E;AAC/E,mCAAmC;AACnC,+EAA+E;AAC/E,6EAA6E;AAC7E,wEAAwE;AACxE,EAAE;AACF,2EAA2E;AAC3E,2EAA2E;AAC3E,qEAAqE;AAErE,+EAA+E;AAC/E,iEAAiE;AACjE,+EAA+E;AAC/E,4DAA4D;AAC5D,wCAAsB;AAEtB,8BAA8B;AAC9B,gEAAyF;AAAhF,iHAAA,cAAc,OAAA;AAAE,4HAAA,yBAAyB,OAAA;AAClD,6DAAyD;AAAhD,iHAAA,aAAa,OAAA;AACtB,iFAAwE;AAA/D,gIAAA,kBAAkB,OAAA;AAC3B,2DAA8G;AAArG,4GAAA,SAAS,OAAA;AAA0C,mHAAA,gBAAgB,OAAA;AAE5E,yDAAyD;AACzD,+CAA6B;AAI7B,mCAAmC;AACnC,mEAA2G;AAAlG,sHAAA,gBAAgB,OAAA;AAIzB,mDAAmD;AACnD,6CAA2B;AAE3B,UAAU;AACV,4CAA0B;AAE1B,oCAAoC;AACpC,8CAA4B;AAE5B,YAAY;AACZ,0CAAwB;AAExB,aAAa;AACb,kEAAgD;AAEhD,+EAA+E;AAC/E,kDAAkD;AAClD,+EAA+E;AAE/E,YAAY;AACZ,8CAA4B;AAE5B,sBAAsB;AACtB,wDAAsC;AAEtC,WAAW;AACX,6CAA2B;AAE3B,oBAAoB;AACpB,6DAA2C;AAE3C,+EAA+E;AAC/E,oEAAoE;AACpE,+EAA+E;AAC/E,qEAAmD"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAC/E,yEAAyE;AACzE,wEAAwE;;;;;;;;;;;;;;;;;AAExE;;;GAGG;AACH,0DAAwC;AAExC;;;GAGG;AACH,yDAAuC;AAEvC;;;GAGG;AACH,iEAA+C;AAE/C;;;GAGG;AACH,wEAAsD;AAEtD;;;GAGG;AACH,wEAAsD;AAEtD;;;GAGG;AACH,iEAA+C;AAE/C;;;;;;GAMG;AACH,oEAAiE;AAAxD,sHAAA,gBAAgB,OAAA;AAEzB;;GAEG;AACH,wDAAsD;AAA7C,2GAAA,WAAW,OAAA;AAEpB;;;GAGG;AACH,0EAAuE;AAA9D,4HAAA,mBAAmB,OAAA;AAE5B,+EAA+E;AAC/E,mCAAmC;AACnC,+EAA+E;AAC/E,6EAA6E;AAC7E,wEAAwE;AACxE,EAAE;AACF,2EAA2E;AAC3E,2EAA2E;AAC3E,qEAAqE;AAErE,+EAA+E;AAC/E,iEAAiE;AACjE,+EAA+E;AAC/E,4DAA4D;AAC5D,wCAAsB;AAEtB,8BAA8B;AAC9B,gEAAyF;AAAhF,iHAAA,cAAc,OAAA;AAAE,4HAAA,yBAAyB,OAAA;AAClD,6DAAyD;AAAhD,iHAAA,aAAa,OAAA;AACtB,iFAAwE;AAA/D,gIAAA,kBAAkB,OAAA;AAC3B,2DAA8G;AAArG,4GAAA,SAAS,OAAA;AAA0C,mHAAA,gBAAgB,OAAA;AAE5E,yDAAyD;AACzD,+CAA6B;AAI7B,mCAAmC;AACnC,mEAA2G;AAAlG,sHAAA,gBAAgB,OAAA;AAIzB,mDAAmD;AACnD,6CAA2B;AAE3B,UAAU;AACV,4CAA0B;AAE1B,oCAAoC;AACpC,8CAA4B;AAE5B,YAAY;AACZ,0CAAwB;AAExB,aAAa;AACb,kEAAgD;AAEhD,+EAA+E;AAC/E,kDAAkD;AAClD,+EAA+E;AAE/E,YAAY;AACZ,8CAA4B;AAE5B,sBAAsB;AACtB,wDAAsC;AAEtC,WAAW;AACX,6CAA2B;AAE3B,oBAAoB;AACpB,6DAA2C;AAE3C,+EAA+E;AAC/E,oEAAoE;AACpE,+EAA+E;AAC/E,qEAAmD"}
@@ -57,10 +57,6 @@ export interface NAuthConfig {
57
57
  * Security configuration
58
58
  */
59
59
  security?: SecurityConfig;
60
- /**
61
- * Lifecycle hooks
62
- */
63
- hooks?: LifecycleHooks;
64
60
  /**
65
61
  * Audit logging configuration
66
62
  *
@@ -983,250 +979,9 @@ export interface SecurityConfig {
983
979
  };
984
980
  };
985
981
  }
986
- export interface LifecycleHooks {
987
- /**
988
- * Pre-signup hook
989
- *
990
- * Triggered before user account creation for both password and social signups.
991
- * Allows consumer applications to implement custom validation, denylists, invite-only signups, etc.
992
- *
993
- * For password signup: Called with SignupDTO before user is created.
994
- * For social signup: Called with OAuth profile data before user is created.
995
- *
996
- * To block signup, throw NAuthException with AuthErrorCode.PRESIGNUP_FAILED and a custom message.
997
- *
998
- * @param data - Signup data (SignupDTO for password signup, OAuthUserProfile for social signup)
999
- * @param signupType - Type of signup: 'password' or 'social'
1000
- * @param provider - Social provider name (only present for social signups)
1001
- * @param adminSignup - true for adminSignup/adminSignupSocial, false for regular user signup
1002
- * @throws {NAuthException} Throw with PRESIGNUP_FAILED to block signup with custom message
1003
- *
1004
- * @example
1005
- * ```typescript
1006
- * preSignup: async (data, signupType, provider, adminSignup) => {
1007
- * // Skip validation for admin signups (optional)
1008
- * if (adminSignup) {
1009
- * // Admin signups bypass normal validation
1010
- * return;
1011
- * }
1012
- *
1013
- * // Password signup example
1014
- * if (signupType === 'password') {
1015
- * const dto = data as SignupDTO;
1016
- *
1017
- * // Check denylist
1018
- * if (await denylistService.isBlocked(dto.email)) {
1019
- * throw new NAuthException(
1020
- * AuthErrorCode.PRESIGNUP_FAILED,
1021
- * 'This email address is not allowed to sign up'
1022
- * );
1023
- * }
1024
- *
1025
- * // Invite-only signup
1026
- * if (!await inviteService.isInvited(dto.email)) {
1027
- * throw new NAuthException(
1028
- * AuthErrorCode.PRESIGNUP_FAILED,
1029
- * 'Signup requires an invitation. Please contact support.'
1030
- * );
1031
- * }
1032
- * }
1033
- *
1034
- * // Social signup example
1035
- * if (signupType === 'social') {
1036
- * const profile = data as OAuthUserProfile;
1037
- *
1038
- * // Block specific domains
1039
- * if (profile.email?.endsWith('@blocked-domain.com')) {
1040
- * throw new NAuthException(
1041
- * AuthErrorCode.PRESIGNUP_FAILED,
1042
- * 'Signups from this email domain are not allowed'
1043
- * );
1044
- * }
1045
- *
1046
- * // Custom validation
1047
- * if (!await externalService.validateSignup(profile.email, provider)) {
1048
- * throw new NAuthException(
1049
- * AuthErrorCode.PRESIGNUP_FAILED,
1050
- * 'Signup validation failed. Please contact support.'
1051
- * );
1052
- * }
1053
- * }
1054
- * }
1055
- * ```
1056
- */
1057
- preSignup?: (data: unknown, // SignupDTO for password signup, OAuthUserProfile for social signup
1058
- signupType: 'password' | 'social', provider?: string, // Only present for social signups
1059
- adminSignup?: boolean) => Promise<void>;
1060
- /**
1061
- * After signup hook
1062
- *
1063
- * Triggered immediately after account creation for both normal and social signups.
1064
- * Called before any challenges are created, so the user account exists but may not be fully verified.
1065
- *
1066
- * @param user - The newly created user object
1067
- * @param metadata - Signup metadata
1068
- * @param metadata.requiresVerification - Whether user needs to complete verification challenges
1069
- * @param metadata.signupType - Type of signup: 'password' (password-based) or 'social' (OAuth provider)
1070
- * @param metadata.provider - Social provider name (only present for social signups)
1071
- *
1072
- * @example
1073
- * ```typescript
1074
- * afterSignup: async (user, metadata) => {
1075
- * // Send welcome email
1076
- * await emailService.sendWelcomeEmail(user.email);
1077
- *
1078
- * // Create user profile in external system
1079
- * await externalService.createProfile({
1080
- * userId: user.sub,
1081
- * email: user.email,
1082
- * signupType: metadata?.signupType,
1083
- * });
1084
- *
1085
- * // Track signup analytics
1086
- * analytics.track('user_signup', {
1087
- * userId: user.sub,
1088
- * signupType: metadata?.signupType,
1089
- * provider: metadata?.provider,
1090
- * });
1091
- * }
1092
- * ```
1093
- *
1094
- * NOTE: `user` parameter uses `any` type intentionally for framework-agnostic design.
1095
- * The actual user type varies by framework (TypeORM entity, Prisma model, Mongoose document, etc.).
1096
- * Consumer apps should type-cast or use type guards based on their framework's user type.
1097
- */
1098
- afterSignup?: (user: any, // Framework-agnostic: TypeORM/Prisma/Mongoose/etc. user entity
1099
- metadata?: {
1100
- requiresVerification?: boolean;
1101
- signupType?: 'password' | 'social';
1102
- provider?: string;
1103
- }) => Promise<void>;
1104
- /**
1105
- * Before login hook
1106
- *
1107
- * Allows consumer applications to implement custom checks before login proceeds
1108
- * (e.g., denylist, maintenance windows, external risk checks).
1109
- *
1110
- * Return `false` to block login.
1111
- */
1112
- beforeLogin?: (identifier: string) => Promise<void | false>;
1113
- afterLogin?: (user: any, session: any) => Promise<void>;
1114
- /**
1115
- * After login failed hook
1116
- */
1117
- afterLoginFailed?: (identifier: string, reason: string) => Promise<void>;
1118
- /**
1119
- * Before password change hook
1120
- */
1121
- beforePasswordChange?: (userId: string, oldPassword: string) => Promise<void | false>;
1122
- /**
1123
- * After password change hook
1124
- */
1125
- afterPasswordChange?: (userId: string) => Promise<void>;
1126
- /**
1127
- * Before account lock hook
1128
- */
1129
- beforeAccountLock?: (userId: string, reason: string) => Promise<void | false>;
1130
- /**
1131
- * After account lock hook
1132
- */
1133
- afterAccountLock?: (userId: string, reason: string) => Promise<void>;
1134
- /**
1135
- * Adaptive MFA risk detected hook
1136
- *
1137
- * Called when adaptive MFA evaluates a login attempt and detects risk.
1138
- * Allows consumer app to send custom notifications, log to external systems,
1139
- * trigger security workflows, etc.
1140
- *
1141
- * This hook is called BEFORE the action is enforced (allow/require_mfa/block).
1142
- * Return false to override the adaptive decision and allow sign-in.
1143
- *
1144
- * @param payload - Rich context about the risk event
1145
- * @returns void to continue with configured action, false to override and allow
1146
- *
1147
- * @example Email notification
1148
- * ```typescript
1149
- * onAdaptiveMFATriggered: async (payload) => {
1150
- * if (payload.riskLevel === 'high') {
1151
- * await emailService.send({
1152
- * to: payload.user.email,
1153
- * subject: 'Suspicious sign-in attempt detected',
1154
- * template: 'security-alert',
1155
- * data: {
1156
- * location: `${payload.clientInfo.ipCity}, ${payload.clientInfo.ipCountry}`,
1157
- * device: payload.clientInfo.deviceName,
1158
- * time: new Date().toISOString(),
1159
- * riskFactors: payload.riskFactors.join(', '),
1160
- * }
1161
- * });
1162
- * }
1163
- * }
1164
- * ```
1165
- *
1166
- * @example Slack notification to security team
1167
- * ```typescript
1168
- * onAdaptiveMFATriggered: async (payload) => {
1169
- * if (payload.action === 'block_signin') {
1170
- * await slackService.postMessage({
1171
- * channel: '#security-alerts',
1172
- * text: `High-risk sign-in blocked for ${payload.user.email}`,
1173
- * attachments: [{
1174
- * fields: [
1175
- * { title: 'Risk Score', value: payload.riskScore.toString() },
1176
- * { title: 'Risk Factors', value: payload.riskFactors.join(', ') },
1177
- * { title: 'Location', value: payload.clientInfo.ipCountry },
1178
- * ]
1179
- * }]
1180
- * });
1181
- * }
1182
- * }
1183
- * ```
1184
- *
1185
- * @example Custom workflow with admin review
1186
- * ```typescript
1187
- * onAdaptiveMFATriggered: async (payload) => {
1188
- * if (payload.riskScore > 80) {
1189
- * // Create security review ticket
1190
- * await securityReviewService.createTicket({
1191
- * userId: payload.user.sub,
1192
- * riskScore: payload.riskScore,
1193
- * riskFactors: payload.riskFactors,
1194
- * requiresManualReview: true,
1195
- * });
1196
- *
1197
- * // Send push notification to admins
1198
- * await adminNotificationService.alert({
1199
- * type: 'high_risk_signin',
1200
- * userId: payload.user.sub,
1201
- * });
1202
- * }
1203
- * }
1204
- * ```
1205
- */
1206
- onAdaptiveMFATriggered?: (payload: AdaptiveMFARiskEventPayload) => Promise<void | false>;
1207
- /**
1208
- * Sign-in blocked hook
1209
- *
1210
- * Called when a sign-in is blocked due to high risk.
1211
- * Allows consumer app to implement custom blocking workflows,
1212
- * manual review processes, or admin notifications.
1213
- *
1214
- * @param payload - Context about the blocked sign-in
1215
- *
1216
- * @example Create manual review case
1217
- * ```typescript
1218
- * onSignInBlocked: async (payload) => {
1219
- * await adminDashboardService.createReviewCase({
1220
- * userId: payload.user.sub,
1221
- * reason: 'High-risk adaptive MFA',
1222
- * riskScore: payload.riskScore,
1223
- * requiresAction: true,
1224
- * });
1225
- * }
1226
- * ```
1227
- */
1228
- onSignInBlocked?: (payload: SignInBlockedPayload) => Promise<void>;
1229
- }
982
+ /**
983
+ * Email Verification Configuration
984
+ */
1230
985
  /**
1231
986
  * Email Verification Configuration
1232
987
  */
@@ -2017,16 +1772,33 @@ export interface RiskLevelConfig {
2017
1772
  * }
2018
1773
  * ```
2019
1774
  */
1775
+ /**
1776
+ * User information in adaptive MFA risk event payload
1777
+ */
1778
+ export interface AdaptiveMFAUser {
1779
+ /**
1780
+ * User's unique identifier (UUID v4)
1781
+ */
1782
+ sub: string;
1783
+ /**
1784
+ * User's email address
1785
+ */
1786
+ email: string;
1787
+ /**
1788
+ * User's username (optional)
1789
+ */
1790
+ username?: string;
1791
+ /**
1792
+ * User's phone number (optional)
1793
+ * E.164 format
1794
+ */
1795
+ phoneNumber?: string;
1796
+ }
2020
1797
  export interface AdaptiveMFARiskEventPayload {
2021
1798
  /**
2022
1799
  * User being authenticated
2023
1800
  */
2024
- user: {
2025
- sub: string;
2026
- email: string;
2027
- username?: string;
2028
- phoneNumber?: string;
2029
- };
1801
+ user: AdaptiveMFAUser;
2030
1802
  /**
2031
1803
  * Risk assessment results
2032
1804
  */