@nauth-toolkit/core 0.1.0 → 0.1.3

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 (184) hide show
  1. package/LICENSE +90 -0
  2. package/README.md +30 -0
  3. package/package.json +7 -2
  4. package/jest.config.js +0 -15
  5. package/jest.setup.ts +0 -6
  6. package/src/adapters/database-columns.ts +0 -165
  7. package/src/adapters/express.adapter.ts +0 -385
  8. package/src/adapters/fastify.adapter.ts +0 -416
  9. package/src/adapters/index.ts +0 -16
  10. package/src/adapters/storage.factory.ts +0 -143
  11. package/src/bootstrap.ts +0 -374
  12. package/src/dto/auth-challenge.dto.ts +0 -231
  13. package/src/dto/auth-response.dto.ts +0 -253
  14. package/src/dto/challenge-response.dto.ts +0 -234
  15. package/src/dto/change-password-request.dto.ts +0 -50
  16. package/src/dto/change-password-response.dto.ts +0 -29
  17. package/src/dto/change-password.dto.ts +0 -57
  18. package/src/dto/error-response.dto.ts +0 -136
  19. package/src/dto/get-available-methods.dto.ts +0 -55
  20. package/src/dto/get-challenge-data-response.dto.ts +0 -28
  21. package/src/dto/get-challenge-data.dto.ts +0 -69
  22. package/src/dto/get-client-info.dto.ts +0 -104
  23. package/src/dto/get-device-token-response.dto.ts +0 -25
  24. package/src/dto/get-events-by-type.dto.ts +0 -76
  25. package/src/dto/get-ip-address-response.dto.ts +0 -24
  26. package/src/dto/get-mfa-status.dto.ts +0 -94
  27. package/src/dto/get-risk-assessment-history.dto.ts +0 -39
  28. package/src/dto/get-session-id-response.dto.ts +0 -25
  29. package/src/dto/get-setup-data-response.dto.ts +0 -31
  30. package/src/dto/get-setup-data.dto.ts +0 -75
  31. package/src/dto/get-suspicious-activity.dto.ts +0 -42
  32. package/src/dto/get-user-agent-response.dto.ts +0 -23
  33. package/src/dto/get-user-auth-history.dto.ts +0 -95
  34. package/src/dto/get-user-by-email.dto.ts +0 -61
  35. package/src/dto/get-user-by-id.dto.ts +0 -46
  36. package/src/dto/get-user-devices.dto.ts +0 -53
  37. package/src/dto/get-user-response.dto.ts +0 -17
  38. package/src/dto/has-provider.dto.ts +0 -56
  39. package/src/dto/index.ts +0 -57
  40. package/src/dto/is-trusted-device-response.dto.ts +0 -34
  41. package/src/dto/list-providers-response.dto.ts +0 -23
  42. package/src/dto/login.dto.ts +0 -95
  43. package/src/dto/logout-all-response.dto.ts +0 -24
  44. package/src/dto/logout-all.dto.ts +0 -65
  45. package/src/dto/logout-response.dto.ts +0 -25
  46. package/src/dto/logout.dto.ts +0 -64
  47. package/src/dto/refresh-token.dto.ts +0 -36
  48. package/src/dto/remove-devices.dto.ts +0 -85
  49. package/src/dto/resend-code-response.dto.ts +0 -32
  50. package/src/dto/resend-code.dto.ts +0 -51
  51. package/src/dto/reset-password.dto.ts +0 -115
  52. package/src/dto/respond-challenge.dto.ts +0 -272
  53. package/src/dto/set-mfa-exemption.dto.ts +0 -112
  54. package/src/dto/set-must-change-password-response.dto.ts +0 -27
  55. package/src/dto/set-must-change-password.dto.ts +0 -46
  56. package/src/dto/set-preferred-method.dto.ts +0 -80
  57. package/src/dto/setup-mfa.dto.ts +0 -98
  58. package/src/dto/signup.dto.ts +0 -174
  59. package/src/dto/social-auth.dto.ts +0 -422
  60. package/src/dto/trust-device-response.dto.ts +0 -30
  61. package/src/dto/trust-device.dto.ts +0 -9
  62. package/src/dto/update-user-attributes-request.dto.ts +0 -51
  63. package/src/dto/user-response.dto.ts +0 -138
  64. package/src/dto/user-update.dto.ts +0 -222
  65. package/src/dto/verify-email.dto.ts +0 -313
  66. package/src/dto/verify-mfa-code.dto.ts +0 -103
  67. package/src/dto/verify-phone-by-sub.dto.ts +0 -78
  68. package/src/dto/verify-phone.dto.ts +0 -245
  69. package/src/entities/auth-audit.entity.ts +0 -232
  70. package/src/entities/challenge-session.entity.ts +0 -116
  71. package/src/entities/index.ts +0 -29
  72. package/src/entities/login-attempt.entity.ts +0 -64
  73. package/src/entities/mfa-device.entity.ts +0 -151
  74. package/src/entities/rate-limit.entity.ts +0 -44
  75. package/src/entities/session.entity.ts +0 -180
  76. package/src/entities/social-account.entity.ts +0 -96
  77. package/src/entities/storage-lock.entity.ts +0 -39
  78. package/src/entities/trusted-device.entity.ts +0 -112
  79. package/src/entities/user.entity.ts +0 -243
  80. package/src/entities/verification-token.entity.ts +0 -141
  81. package/src/enums/auth-audit-event-type.enum.ts +0 -360
  82. package/src/enums/error-codes.enum.ts +0 -420
  83. package/src/enums/mfa-method.enum.ts +0 -97
  84. package/src/enums/risk-factor.enum.ts +0 -111
  85. package/src/exceptions/nauth.exception.ts +0 -231
  86. package/src/handlers/auth.handler.ts +0 -260
  87. package/src/handlers/client-info.handler.ts +0 -101
  88. package/src/handlers/csrf.handler.ts +0 -156
  89. package/src/handlers/token-delivery.handler.ts +0 -118
  90. package/src/index.ts +0 -118
  91. package/src/interfaces/client-info.interface.ts +0 -85
  92. package/src/interfaces/config.interface.ts +0 -2135
  93. package/src/interfaces/entities.interface.ts +0 -226
  94. package/src/interfaces/index.ts +0 -15
  95. package/src/interfaces/logger.interface.ts +0 -283
  96. package/src/interfaces/mfa-provider.interface.ts +0 -154
  97. package/src/interfaces/oauth.interface.ts +0 -148
  98. package/src/interfaces/provider.interface.ts +0 -47
  99. package/src/interfaces/social-auth-provider.interface.ts +0 -131
  100. package/src/interfaces/storage-adapter.interface.ts +0 -82
  101. package/src/interfaces/template.interface.ts +0 -510
  102. package/src/interfaces/token-verifier.interface.ts +0 -110
  103. package/src/internal.ts +0 -178
  104. package/src/platform/interfaces.ts +0 -299
  105. package/src/schemas/auth-config.schema.ts +0 -646
  106. package/src/services/adaptive-mfa-decision.service.spec.ts +0 -1058
  107. package/src/services/adaptive-mfa-decision.service.ts +0 -457
  108. package/src/services/auth-audit.service.spec.ts +0 -675
  109. package/src/services/auth-audit.service.ts +0 -558
  110. package/src/services/auth-challenge-helper.service.spec.ts +0 -3227
  111. package/src/services/auth-challenge-helper.service.ts +0 -825
  112. package/src/services/auth-flow-context-builder.service.ts +0 -520
  113. package/src/services/auth-flow-rules.ts +0 -202
  114. package/src/services/auth-flow-state-definitions.ts +0 -190
  115. package/src/services/auth-flow-state-machine.service.ts +0 -207
  116. package/src/services/auth-flow-state-machine.types.ts +0 -316
  117. package/src/services/auth.service.spec.ts +0 -4195
  118. package/src/services/auth.service.ts +0 -3727
  119. package/src/services/challenge.service.spec.ts +0 -1363
  120. package/src/services/challenge.service.ts +0 -696
  121. package/src/services/client-info.service.spec.ts +0 -572
  122. package/src/services/client-info.service.ts +0 -374
  123. package/src/services/csrf.service.ts +0 -54
  124. package/src/services/email-verification.service.spec.ts +0 -1229
  125. package/src/services/email-verification.service.ts +0 -578
  126. package/src/services/geo-location.service.spec.ts +0 -603
  127. package/src/services/geo-location.service.ts +0 -599
  128. package/src/services/index.ts +0 -13
  129. package/src/services/jwt.service.spec.ts +0 -882
  130. package/src/services/jwt.service.ts +0 -621
  131. package/src/services/mfa-base.service.spec.ts +0 -246
  132. package/src/services/mfa-base.service.ts +0 -611
  133. package/src/services/mfa.service.spec.ts +0 -693
  134. package/src/services/mfa.service.ts +0 -960
  135. package/src/services/password.service.spec.ts +0 -166
  136. package/src/services/password.service.ts +0 -309
  137. package/src/services/phone-verification.service.spec.ts +0 -1120
  138. package/src/services/phone-verification.service.ts +0 -751
  139. package/src/services/risk-detection.service.spec.ts +0 -1292
  140. package/src/services/risk-detection.service.ts +0 -1012
  141. package/src/services/risk-scoring.service.spec.ts +0 -204
  142. package/src/services/risk-scoring.service.ts +0 -131
  143. package/src/services/session.service.spec.ts +0 -1293
  144. package/src/services/session.service.ts +0 -803
  145. package/src/services/social-account.service.spec.ts +0 -725
  146. package/src/services/social-auth-base.service.spec.ts +0 -418
  147. package/src/services/social-auth-base.service.ts +0 -581
  148. package/src/services/social-auth.service.spec.ts +0 -238
  149. package/src/services/social-auth.service.ts +0 -436
  150. package/src/services/social-provider-registry.service.spec.ts +0 -238
  151. package/src/services/social-provider-registry.service.ts +0 -122
  152. package/src/services/trusted-device.service.spec.ts +0 -505
  153. package/src/services/trusted-device.service.ts +0 -339
  154. package/src/storage/account-lockout-storage.service.spec.ts +0 -310
  155. package/src/storage/account-lockout-storage.service.ts +0 -89
  156. package/src/storage/index.ts +0 -3
  157. package/src/storage/memory-storage.adapter.ts +0 -443
  158. package/src/storage/rate-limit-storage.service.spec.ts +0 -247
  159. package/src/storage/rate-limit-storage.service.ts +0 -38
  160. package/src/templates/html-template.engine.spec.ts +0 -161
  161. package/src/templates/html-template.engine.ts +0 -688
  162. package/src/templates/index.ts +0 -7
  163. package/src/utils/common-passwords.spec.ts +0 -230
  164. package/src/utils/common-passwords.ts +0 -170
  165. package/src/utils/context-storage.ts +0 -188
  166. package/src/utils/cookie-names.util.ts +0 -67
  167. package/src/utils/cookies.util.ts +0 -94
  168. package/src/utils/index.ts +0 -12
  169. package/src/utils/ip-extractor.spec.ts +0 -330
  170. package/src/utils/ip-extractor.ts +0 -220
  171. package/src/utils/nauth-logger.spec.ts +0 -388
  172. package/src/utils/nauth-logger.ts +0 -215
  173. package/src/utils/pii-redactor.spec.ts +0 -130
  174. package/src/utils/pii-redactor.ts +0 -288
  175. package/src/utils/setup/get-repositories.ts +0 -140
  176. package/src/utils/setup/init-services.ts +0 -422
  177. package/src/utils/setup/init-social.ts +0 -189
  178. package/src/utils/setup/init-storage.ts +0 -94
  179. package/src/utils/setup/register-mfa.ts +0 -165
  180. package/src/utils/setup/run-nauth-migrations.ts +0 -61
  181. package/src/utils/token-delivery-policy.ts +0 -38
  182. package/src/validators/template.validator.ts +0 -219
  183. package/tsconfig.json +0 -37
  184. package/tsconfig.lint.json +0 -6
@@ -1,360 +0,0 @@
1
- /**
2
- * Authentication Audit Event Types
3
- *
4
- * Comprehensive enumeration of all authentication and security events
5
- * that are recorded in the audit trail.
6
- *
7
- * **Organization:**
8
- * - Login events (success, failure, blocked)
9
- * - Session management events
10
- * - Password operations
11
- * - Multi-Factor Authentication (MFA) events
12
- * - Adaptive MFA events (risk-based)
13
- * - Verification events (email, phone)
14
- * - Account management events
15
- * - Profile update events
16
- * - Social authentication events
17
- * - Challenge flow events
18
- * - Security violation events
19
- *
20
- * **Note:** TOKEN_REFRESHED is intentionally excluded as it occurs too
21
- * frequently and would create excessive audit noise. Only security-relevant
22
- * token operations are audited.
23
- *
24
- * @example
25
- * ```typescript
26
- * await auditService.recordEvent({
27
- * userId: user.id,
28
- * eventType: AuthAuditEventType.LOGIN_SUCCESS,
29
- * eventStatus: 'SUCCESS',
30
- * authMethod: 'password',
31
- * ipAddress: '1.2.3.4',
32
- * });
33
- * ```
34
- */
35
- export enum AuthAuditEventType {
36
- // ============================================================================
37
- // Login Events
38
- // ============================================================================
39
-
40
- /**
41
- * Login attempt initiated (credentials validated, risk assessed, MFA evaluated)
42
- *
43
- * This event is recorded when:
44
- * - User credentials are validated successfully
45
- * - Adaptive MFA risk evaluation is performed
46
- * - Risk factors and MFA requirement status are recorded
47
- *
48
- * Note: This is logged before the final login outcome (success/failure/challenge).
49
- * Use LOGIN_SUCCESS for successful completions, LOGIN_FAILED for failures.
50
- */
51
- LOGIN_ATTEMPT = 'LOGIN_ATTEMPT',
52
-
53
- /**
54
- * User successfully authenticated
55
- */
56
- LOGIN_SUCCESS = 'LOGIN_SUCCESS',
57
-
58
- /**
59
- * Login attempt failed (invalid credentials, account locked, etc.)
60
- */
61
- LOGIN_FAILED = 'LOGIN_FAILED',
62
-
63
- /**
64
- * Login attempt blocked (account locked, IP blocked, etc.)
65
- *
66
- * Note: This should only be used for actual blocks (IP lockout, account locked).
67
- * Do not use for MFA/challenge flows - use LOGIN_ATTEMPT + CHALLENGE_CREATED instead.
68
- */
69
- LOGIN_BLOCKED = 'LOGIN_BLOCKED',
70
-
71
- // ============================================================================
72
- // Session Events
73
- // ============================================================================
74
-
75
- /**
76
- * New session created (after successful authentication)
77
- */
78
- SESSION_CREATED = 'SESSION_CREATED',
79
-
80
- /**
81
- * Session revoked (logout, security violation, admin action)
82
- */
83
- SESSION_REVOKED = 'SESSION_REVOKED',
84
-
85
- /**
86
- * Global signout performed (all sessions revoked)
87
- *
88
- * This event is recorded once when a user performs global signout.
89
- * Individual SESSION_REVOKED events are also recorded for each revoked session.
90
- */
91
- GLOBAL_SIGNOUT = 'GLOBAL_SIGNOUT',
92
-
93
- // ============================================================================
94
- // Password Events
95
- // ============================================================================
96
-
97
- /**
98
- * User changed their password
99
- */
100
- PASSWORD_CHANGED = 'PASSWORD_CHANGED',
101
-
102
- /**
103
- * Password reset requested (email/SMS sent)
104
- */
105
- PASSWORD_RESET_REQUESTED = 'PASSWORD_RESET_REQUESTED',
106
-
107
- /**
108
- * Password reset completed successfully
109
- */
110
- PASSWORD_RESET_COMPLETED = 'PASSWORD_RESET_COMPLETED',
111
-
112
- /**
113
- * Force password change requirement set (by admin or policy)
114
- */
115
- PASSWORD_FORCE_CHANGE_SET = 'PASSWORD_FORCE_CHANGE_SET',
116
-
117
- /**
118
- * Force password change completed
119
- */
120
- PASSWORD_FORCE_CHANGE_COMPLETED = 'PASSWORD_FORCE_CHANGE_COMPLETED',
121
-
122
- // ============================================================================
123
- // Multi-Factor Authentication (MFA) Events
124
- // ============================================================================
125
-
126
- /**
127
- * MFA enabled for user account
128
- */
129
- MFA_ENABLED = 'MFA_ENABLED',
130
-
131
- /**
132
- * MFA disabled for user account
133
- */
134
- MFA_DISABLED = 'MFA_DISABLED',
135
-
136
- /**
137
- * New MFA device registered (TOTP, SMS, Passkey)
138
- */
139
- MFA_DEVICE_ADDED = 'MFA_DEVICE_ADDED',
140
-
141
- /**
142
- * MFA device removed from account
143
- */
144
- MFA_DEVICE_REMOVED = 'MFA_DEVICE_REMOVED',
145
-
146
- /**
147
- * MFA device updated (name changed, primary flag changed, etc.)
148
- */
149
- MFA_DEVICE_UPDATED = 'MFA_DEVICE_UPDATED',
150
-
151
- /**
152
- * MFA verification succeeded
153
- */
154
- MFA_VERIFICATION_SUCCESS = 'MFA_VERIFICATION_SUCCESS',
155
-
156
- /**
157
- * MFA verification failed (invalid code, expired, etc.)
158
- */
159
- MFA_VERIFICATION_FAILED = 'MFA_VERIFICATION_FAILED',
160
-
161
- /**
162
- * MFA exemption granted (admin action)
163
- */
164
- MFA_EXEMPTION_GRANTED = 'MFA_EXEMPTION_GRANTED',
165
-
166
- /**
167
- * MFA exemption revoked (admin action)
168
- */
169
- MFA_EXEMPTION_REVOKED = 'MFA_EXEMPTION_REVOKED',
170
-
171
- /**
172
- * Backup codes generated for MFA recovery
173
- */
174
- MFA_BACKUP_CODES_GENERATED = 'MFA_BACKUP_CODES_GENERATED',
175
-
176
- /**
177
- * Backup code used for MFA verification
178
- */
179
- MFA_BACKUP_CODE_USED = 'MFA_BACKUP_CODE_USED',
180
-
181
- /**
182
- * User's preferred MFA method updated
183
- */
184
- MFA_PREFERRED_METHOD_UPDATED = 'MFA_PREFERRED_METHOD_UPDATED',
185
-
186
- /**
187
- * Device trusted by user (user opt-in for remember device feature)
188
- */
189
- DEVICE_TRUSTED = 'DEVICE_TRUSTED',
190
-
191
- /**
192
- * Trusted device revoked (user untrusted device or device expired)
193
- */
194
- DEVICE_UNTRUSTED = 'DEVICE_UNTRUSTED',
195
-
196
- // ============================================================================
197
- // Adaptive MFA Events (Risk-Based)
198
- // ============================================================================
199
-
200
- /**
201
- * Risk assessment completed (for future adaptive MFA implementation)
202
- *
203
- * Note: This is infrastructure for future adaptive MFA. The audit service
204
- * records risk data but does not calculate risk scores.
205
- */
206
- ADAPTIVE_MFA_RISK_ASSESSED = 'ADAPTIVE_MFA_RISK_ASSESSED',
207
-
208
- /**
209
- * Adaptive MFA triggered due to risk factors (for future implementation)
210
- *
211
- * Note: This is infrastructure for future adaptive MFA.
212
- */
213
- ADAPTIVE_MFA_TRIGGERED = 'ADAPTIVE_MFA_TRIGGERED',
214
-
215
- /**
216
- * Adaptive MFA bypassed due to low risk (for future implementation)
217
- *
218
- * Note: This is infrastructure for future adaptive MFA.
219
- */
220
- ADAPTIVE_MFA_BYPASSED = 'ADAPTIVE_MFA_BYPASSED',
221
-
222
- // ============================================================================
223
- // Verification Events
224
- // ============================================================================
225
-
226
- /**
227
- * Email address verified successfully
228
- */
229
- EMAIL_VERIFIED = 'EMAIL_VERIFIED',
230
-
231
- /**
232
- * Email verification code/link requested
233
- */
234
- EMAIL_VERIFICATION_REQUESTED = 'EMAIL_VERIFICATION_REQUESTED',
235
-
236
- /**
237
- * Email verification failed (invalid code, expired, etc.)
238
- */
239
- EMAIL_VERIFICATION_FAILED = 'EMAIL_VERIFICATION_FAILED',
240
-
241
- /**
242
- * Phone number verified successfully
243
- */
244
- PHONE_VERIFIED = 'PHONE_VERIFIED',
245
-
246
- /**
247
- * Phone verification code requested
248
- */
249
- PHONE_VERIFICATION_REQUESTED = 'PHONE_VERIFICATION_REQUESTED',
250
-
251
- /**
252
- * Phone verification failed (invalid code, expired, etc.)
253
- */
254
- PHONE_VERIFICATION_FAILED = 'PHONE_VERIFICATION_FAILED',
255
-
256
- // ============================================================================
257
- // Account Management Events
258
- // ============================================================================
259
-
260
- /**
261
- * New user account created (signup)
262
- */
263
- ACCOUNT_CREATED = 'ACCOUNT_CREATED',
264
-
265
- /**
266
- * User account activated
267
- */
268
- ACCOUNT_ACTIVATED = 'ACCOUNT_ACTIVATED',
269
-
270
- /**
271
- * User account deactivated
272
- */
273
- ACCOUNT_DEACTIVATED = 'ACCOUNT_DEACTIVATED',
274
-
275
- /**
276
- * User account locked (security measure)
277
- */
278
- ACCOUNT_LOCKED = 'ACCOUNT_LOCKED',
279
-
280
- /**
281
- * User account unlocked (admin action or auto-unlock)
282
- */
283
- ACCOUNT_UNLOCKED = 'ACCOUNT_UNLOCKED',
284
-
285
- /**
286
- * User account deleted
287
- */
288
- ACCOUNT_DELETED = 'ACCOUNT_DELETED',
289
-
290
- // ============================================================================
291
- // Profile Update Events
292
- // ============================================================================
293
-
294
- /**
295
- * User profile updated (general update)
296
- */
297
- PROFILE_UPDATED = 'PROFILE_UPDATED',
298
-
299
- /**
300
- * User email address changed
301
- */
302
- EMAIL_CHANGED = 'EMAIL_CHANGED',
303
-
304
- /**
305
- * User phone number changed
306
- */
307
- PHONE_CHANGED = 'PHONE_CHANGED',
308
-
309
- /**
310
- * User username changed
311
- */
312
- USERNAME_CHANGED = 'USERNAME_CHANGED',
313
-
314
- // ============================================================================
315
- // Social Authentication Events
316
- // ============================================================================
317
-
318
- /**
319
- * User authenticated via social provider (Google, Apple, Facebook, etc.)
320
- */
321
- SOCIAL_LOGIN = 'SOCIAL_LOGIN',
322
-
323
- /**
324
- * Social account linked to user account
325
- */
326
- SOCIAL_ACCOUNT_LINKED = 'SOCIAL_ACCOUNT_LINKED',
327
-
328
- /**
329
- * Social account unlinked from user account
330
- */
331
- SOCIAL_ACCOUNT_UNLINKED = 'SOCIAL_ACCOUNT_UNLINKED',
332
-
333
- // ============================================================================
334
- // Challenge Flow Events
335
- // ============================================================================
336
-
337
- /**
338
- * Challenge session created (email verification, phone verification, MFA setup, etc.)
339
- */
340
- CHALLENGE_CREATED = 'CHALLENGE_CREATED',
341
-
342
- /**
343
- * Challenge completed successfully
344
- */
345
- CHALLENGE_COMPLETED = 'CHALLENGE_COMPLETED',
346
-
347
- /**
348
- * Challenge attempt failed (max attempts exceeded)
349
- */
350
- CHALLENGE_ATTEMPT_FAILED = 'CHALLENGE_ATTEMPT_FAILED',
351
-
352
- // ============================================================================
353
- // Security Events
354
- // ============================================================================
355
-
356
- /**
357
- * Suspicious activity detected (token reuse, impossible travel, etc.)
358
- */
359
- SUSPICIOUS_ACTIVITY = 'SUSPICIOUS_ACTIVITY',
360
- }