@nauth-toolkit/core 0.1.14 → 0.1.17

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 (623) hide show
  1. package/dist/adapters/database-columns.d.ts +70 -0
  2. package/dist/adapters/database-columns.d.ts.map +1 -1
  3. package/dist/adapters/database-columns.js +76 -2
  4. package/dist/adapters/database-columns.js.map +1 -1
  5. package/dist/adapters/express.adapter.d.ts +66 -0
  6. package/dist/adapters/express.adapter.d.ts.map +1 -1
  7. package/dist/adapters/express.adapter.js +80 -0
  8. package/dist/adapters/express.adapter.js.map +1 -1
  9. package/dist/adapters/fastify.adapter.d.ts +42 -0
  10. package/dist/adapters/fastify.adapter.d.ts.map +1 -1
  11. package/dist/adapters/fastify.adapter.js +86 -0
  12. package/dist/adapters/fastify.adapter.js.map +1 -1
  13. package/dist/adapters/index.d.ts +5 -0
  14. package/dist/adapters/index.d.ts.map +1 -1
  15. package/dist/adapters/index.js +9 -0
  16. package/dist/adapters/index.js.map +1 -1
  17. package/dist/adapters/storage.factory.d.ts +107 -0
  18. package/dist/adapters/storage.factory.d.ts.map +1 -1
  19. package/dist/adapters/storage.factory.js +114 -0
  20. package/dist/adapters/storage.factory.js.map +1 -1
  21. package/dist/adapters.d.ts +8 -0
  22. package/dist/adapters.d.ts.map +1 -1
  23. package/dist/adapters.js +8 -0
  24. package/dist/adapters.js.map +1 -1
  25. package/dist/bootstrap.d.ts +82 -0
  26. package/dist/bootstrap.d.ts.map +1 -1
  27. package/dist/bootstrap.js +106 -0
  28. package/dist/bootstrap.js.map +1 -1
  29. package/dist/dto/admin-set-password.dto.d.ts +90 -0
  30. package/dist/dto/admin-set-password.dto.d.ts.map +1 -1
  31. package/dist/dto/admin-set-password.dto.js +91 -0
  32. package/dist/dto/admin-set-password.dto.js.map +1 -1
  33. package/dist/dto/auth-challenge.dto.d.ts +170 -0
  34. package/dist/dto/auth-challenge.dto.d.ts.map +1 -1
  35. package/dist/dto/auth-challenge.dto.js +170 -0
  36. package/dist/dto/auth-challenge.dto.js.map +1 -1
  37. package/dist/dto/auth-response.dto.d.ts +196 -0
  38. package/dist/dto/auth-response.dto.d.ts.map +1 -1
  39. package/dist/dto/auth-response.dto.js +149 -0
  40. package/dist/dto/auth-response.dto.js.map +1 -1
  41. package/dist/dto/challenge-response.dto.d.ts +155 -0
  42. package/dist/dto/challenge-response.dto.d.ts.map +1 -1
  43. package/dist/dto/challenge-response.dto.js +8 -0
  44. package/dist/dto/challenge-response.dto.js.map +1 -1
  45. package/dist/dto/change-password-request.dto.d.ts +35 -0
  46. package/dist/dto/change-password-request.dto.d.ts.map +1 -1
  47. package/dist/dto/change-password-request.dto.js +35 -0
  48. package/dist/dto/change-password-request.dto.js.map +1 -1
  49. package/dist/dto/change-password-response.dto.d.ts +25 -0
  50. package/dist/dto/change-password-response.dto.d.ts.map +1 -1
  51. package/dist/dto/change-password-response.dto.js +25 -0
  52. package/dist/dto/change-password-response.dto.js.map +1 -1
  53. package/dist/dto/change-password.dto.d.ts +45 -0
  54. package/dist/dto/change-password.dto.d.ts.map +1 -1
  55. package/dist/dto/change-password.dto.js +45 -0
  56. package/dist/dto/change-password.dto.js.map +1 -1
  57. package/dist/dto/confirm-forgot-password.dto.d.ts +59 -0
  58. package/dist/dto/confirm-forgot-password.dto.d.ts.map +1 -1
  59. package/dist/dto/confirm-forgot-password.dto.js +59 -0
  60. package/dist/dto/confirm-forgot-password.dto.js.map +1 -1
  61. package/dist/dto/error-response.dto.d.ts +103 -0
  62. package/dist/dto/error-response.dto.d.ts.map +1 -1
  63. package/dist/dto/error-response.dto.js +103 -0
  64. package/dist/dto/error-response.dto.js.map +1 -1
  65. package/dist/dto/forgot-password.dto.d.ts +58 -0
  66. package/dist/dto/forgot-password.dto.d.ts.map +1 -1
  67. package/dist/dto/forgot-password.dto.js +58 -0
  68. package/dist/dto/forgot-password.dto.js.map +1 -1
  69. package/dist/dto/get-available-methods.dto.d.ts +37 -0
  70. package/dist/dto/get-available-methods.dto.d.ts.map +1 -1
  71. package/dist/dto/get-available-methods.dto.js +37 -0
  72. package/dist/dto/get-available-methods.dto.js.map +1 -1
  73. package/dist/dto/get-challenge-data-response.dto.d.ts +24 -0
  74. package/dist/dto/get-challenge-data-response.dto.d.ts.map +1 -1
  75. package/dist/dto/get-challenge-data-response.dto.js +24 -0
  76. package/dist/dto/get-challenge-data-response.dto.js.map +1 -1
  77. package/dist/dto/get-challenge-data.dto.d.ts +46 -0
  78. package/dist/dto/get-challenge-data.dto.d.ts.map +1 -1
  79. package/dist/dto/get-challenge-data.dto.js +46 -0
  80. package/dist/dto/get-challenge-data.dto.js.map +1 -1
  81. package/dist/dto/get-client-info.dto.d.ts +74 -0
  82. package/dist/dto/get-client-info.dto.d.ts.map +1 -1
  83. package/dist/dto/get-client-info.dto.js +74 -0
  84. package/dist/dto/get-client-info.dto.js.map +1 -1
  85. package/dist/dto/get-device-token-response.dto.d.ts +21 -0
  86. package/dist/dto/get-device-token-response.dto.d.ts.map +1 -1
  87. package/dist/dto/get-device-token-response.dto.js +21 -0
  88. package/dist/dto/get-device-token-response.dto.js.map +1 -1
  89. package/dist/dto/get-events-by-type.dto.d.ts +50 -0
  90. package/dist/dto/get-events-by-type.dto.d.ts.map +1 -1
  91. package/dist/dto/get-events-by-type.dto.js +50 -0
  92. package/dist/dto/get-events-by-type.dto.js.map +1 -1
  93. package/dist/dto/get-ip-address-response.dto.d.ts +20 -0
  94. package/dist/dto/get-ip-address-response.dto.d.ts.map +1 -1
  95. package/dist/dto/get-ip-address-response.dto.js +20 -0
  96. package/dist/dto/get-ip-address-response.dto.js.map +1 -1
  97. package/dist/dto/get-mfa-status.dto.d.ts +59 -0
  98. package/dist/dto/get-mfa-status.dto.d.ts.map +1 -1
  99. package/dist/dto/get-mfa-status.dto.js +59 -0
  100. package/dist/dto/get-mfa-status.dto.js.map +1 -1
  101. package/dist/dto/get-risk-assessment-history.dto.d.ts +28 -0
  102. package/dist/dto/get-risk-assessment-history.dto.d.ts.map +1 -1
  103. package/dist/dto/get-risk-assessment-history.dto.js +28 -0
  104. package/dist/dto/get-risk-assessment-history.dto.js.map +1 -1
  105. package/dist/dto/get-session-id-response.dto.d.ts +21 -0
  106. package/dist/dto/get-session-id-response.dto.d.ts.map +1 -1
  107. package/dist/dto/get-session-id-response.dto.js +21 -0
  108. package/dist/dto/get-session-id-response.dto.js.map +1 -1
  109. package/dist/dto/get-setup-data-response.dto.d.ts +27 -0
  110. package/dist/dto/get-setup-data-response.dto.d.ts.map +1 -1
  111. package/dist/dto/get-setup-data-response.dto.js +27 -0
  112. package/dist/dto/get-setup-data-response.dto.js.map +1 -1
  113. package/dist/dto/get-setup-data.dto.d.ts +51 -0
  114. package/dist/dto/get-setup-data.dto.d.ts.map +1 -1
  115. package/dist/dto/get-setup-data.dto.js +51 -0
  116. package/dist/dto/get-setup-data.dto.js.map +1 -1
  117. package/dist/dto/get-suspicious-activity.dto.d.ts +31 -0
  118. package/dist/dto/get-suspicious-activity.dto.d.ts.map +1 -1
  119. package/dist/dto/get-suspicious-activity.dto.js +31 -0
  120. package/dist/dto/get-suspicious-activity.dto.js.map +1 -1
  121. package/dist/dto/get-user-agent-response.dto.d.ts +19 -0
  122. package/dist/dto/get-user-agent-response.dto.d.ts.map +1 -1
  123. package/dist/dto/get-user-agent-response.dto.js +19 -0
  124. package/dist/dto/get-user-agent-response.dto.js.map +1 -1
  125. package/dist/dto/get-user-auth-history.dto.d.ts +64 -0
  126. package/dist/dto/get-user-auth-history.dto.d.ts.map +1 -1
  127. package/dist/dto/get-user-auth-history.dto.js +64 -0
  128. package/dist/dto/get-user-auth-history.dto.js.map +1 -1
  129. package/dist/dto/get-user-by-email.dto.d.ts +42 -0
  130. package/dist/dto/get-user-by-email.dto.d.ts.map +1 -1
  131. package/dist/dto/get-user-by-email.dto.js +42 -0
  132. package/dist/dto/get-user-by-email.dto.js.map +1 -1
  133. package/dist/dto/get-user-by-id.dto.d.ts +32 -0
  134. package/dist/dto/get-user-by-id.dto.d.ts.map +1 -1
  135. package/dist/dto/get-user-by-id.dto.js +32 -0
  136. package/dist/dto/get-user-by-id.dto.js.map +1 -1
  137. package/dist/dto/get-user-devices.dto.d.ts +34 -0
  138. package/dist/dto/get-user-devices.dto.d.ts.map +1 -1
  139. package/dist/dto/get-user-devices.dto.js +34 -0
  140. package/dist/dto/get-user-devices.dto.js.map +1 -1
  141. package/dist/dto/get-user-response.dto.d.ts +14 -0
  142. package/dist/dto/get-user-response.dto.d.ts.map +1 -1
  143. package/dist/dto/get-user-response.dto.js +15 -0
  144. package/dist/dto/get-user-response.dto.js.map +1 -1
  145. package/dist/dto/has-provider.dto.d.ts +33 -0
  146. package/dist/dto/has-provider.dto.d.ts.map +1 -1
  147. package/dist/dto/has-provider.dto.js +33 -0
  148. package/dist/dto/has-provider.dto.js.map +1 -1
  149. package/dist/dto/index.js +5 -0
  150. package/dist/dto/index.js.map +1 -1
  151. package/dist/dto/is-trusted-device-response.dto.d.ts +28 -0
  152. package/dist/dto/is-trusted-device-response.dto.d.ts.map +1 -1
  153. package/dist/dto/is-trusted-device-response.dto.js +28 -0
  154. package/dist/dto/is-trusted-device-response.dto.js.map +1 -1
  155. package/dist/dto/list-providers-response.dto.d.ts +19 -0
  156. package/dist/dto/list-providers-response.dto.d.ts.map +1 -1
  157. package/dist/dto/list-providers-response.dto.js +19 -0
  158. package/dist/dto/list-providers-response.dto.js.map +1 -1
  159. package/dist/dto/login.dto.d.ts +48 -0
  160. package/dist/dto/login.dto.d.ts.map +1 -1
  161. package/dist/dto/login.dto.js +50 -1
  162. package/dist/dto/login.dto.js.map +1 -1
  163. package/dist/dto/logout-all-response.dto.d.ts +20 -0
  164. package/dist/dto/logout-all-response.dto.d.ts.map +1 -1
  165. package/dist/dto/logout-all-response.dto.js +20 -0
  166. package/dist/dto/logout-all-response.dto.js.map +1 -1
  167. package/dist/dto/logout-all.dto.d.ts +42 -0
  168. package/dist/dto/logout-all.dto.d.ts.map +1 -1
  169. package/dist/dto/logout-all.dto.js +42 -0
  170. package/dist/dto/logout-all.dto.js.map +1 -1
  171. package/dist/dto/logout-response.dto.d.ts +21 -0
  172. package/dist/dto/logout-response.dto.d.ts.map +1 -1
  173. package/dist/dto/logout-response.dto.js +21 -0
  174. package/dist/dto/logout-response.dto.js.map +1 -1
  175. package/dist/dto/logout.dto.d.ts +45 -0
  176. package/dist/dto/logout.dto.d.ts.map +1 -1
  177. package/dist/dto/logout.dto.js +45 -0
  178. package/dist/dto/logout.dto.js.map +1 -1
  179. package/dist/dto/refresh-token.dto.d.ts +28 -0
  180. package/dist/dto/refresh-token.dto.d.ts.map +1 -1
  181. package/dist/dto/refresh-token.dto.js +28 -0
  182. package/dist/dto/refresh-token.dto.js.map +1 -1
  183. package/dist/dto/remove-devices.dto.d.ts +51 -0
  184. package/dist/dto/remove-devices.dto.d.ts.map +1 -1
  185. package/dist/dto/remove-devices.dto.js +51 -0
  186. package/dist/dto/remove-devices.dto.js.map +1 -1
  187. package/dist/dto/resend-code-response.dto.d.ts +28 -0
  188. package/dist/dto/resend-code-response.dto.d.ts.map +1 -1
  189. package/dist/dto/resend-code-response.dto.js +28 -0
  190. package/dist/dto/resend-code-response.dto.js.map +1 -1
  191. package/dist/dto/resend-code.dto.d.ts +37 -0
  192. package/dist/dto/resend-code.dto.d.ts.map +1 -1
  193. package/dist/dto/resend-code.dto.js +37 -0
  194. package/dist/dto/resend-code.dto.js.map +1 -1
  195. package/dist/dto/reset-password.dto.d.ts +74 -0
  196. package/dist/dto/reset-password.dto.d.ts.map +1 -1
  197. package/dist/dto/reset-password.dto.js +76 -1
  198. package/dist/dto/reset-password.dto.js.map +1 -1
  199. package/dist/dto/respond-challenge.dto.d.ts +147 -0
  200. package/dist/dto/respond-challenge.dto.d.ts.map +1 -1
  201. package/dist/dto/respond-challenge.dto.js +162 -0
  202. package/dist/dto/respond-challenge.dto.js.map +1 -1
  203. package/dist/dto/set-mfa-exemption.dto.d.ts +65 -0
  204. package/dist/dto/set-mfa-exemption.dto.d.ts.map +1 -1
  205. package/dist/dto/set-mfa-exemption.dto.js +65 -0
  206. package/dist/dto/set-mfa-exemption.dto.js.map +1 -1
  207. package/dist/dto/set-must-change-password-response.dto.d.ts +23 -0
  208. package/dist/dto/set-must-change-password-response.dto.d.ts.map +1 -1
  209. package/dist/dto/set-must-change-password-response.dto.js +23 -0
  210. package/dist/dto/set-must-change-password-response.dto.js.map +1 -1
  211. package/dist/dto/set-must-change-password.dto.d.ts +32 -0
  212. package/dist/dto/set-must-change-password.dto.d.ts.map +1 -1
  213. package/dist/dto/set-must-change-password.dto.js +32 -0
  214. package/dist/dto/set-must-change-password.dto.js.map +1 -1
  215. package/dist/dto/set-preferred-method.dto.d.ts +48 -0
  216. package/dist/dto/set-preferred-method.dto.d.ts.map +1 -1
  217. package/dist/dto/set-preferred-method.dto.js +48 -0
  218. package/dist/dto/set-preferred-method.dto.js.map +1 -1
  219. package/dist/dto/setup-mfa.dto.d.ts +62 -0
  220. package/dist/dto/setup-mfa.dto.d.ts.map +1 -1
  221. package/dist/dto/setup-mfa.dto.js +62 -0
  222. package/dist/dto/setup-mfa.dto.js.map +1 -1
  223. package/dist/dto/signup.dto.d.ts +92 -0
  224. package/dist/dto/signup.dto.d.ts.map +1 -1
  225. package/dist/dto/signup.dto.js +93 -0
  226. package/dist/dto/signup.dto.js.map +1 -1
  227. package/dist/dto/social-auth.dto.d.ts +234 -0
  228. package/dist/dto/social-auth.dto.d.ts.map +1 -1
  229. package/dist/dto/social-auth.dto.js +234 -0
  230. package/dist/dto/social-auth.dto.js.map +1 -1
  231. package/dist/dto/trust-device-response.dto.d.ts +26 -0
  232. package/dist/dto/trust-device-response.dto.d.ts.map +1 -1
  233. package/dist/dto/trust-device-response.dto.js +26 -0
  234. package/dist/dto/trust-device-response.dto.js.map +1 -1
  235. package/dist/dto/trust-device.dto.d.ts +9 -0
  236. package/dist/dto/trust-device.dto.d.ts.map +1 -1
  237. package/dist/dto/trust-device.dto.js +9 -0
  238. package/dist/dto/trust-device.dto.js.map +1 -1
  239. package/dist/dto/update-user-attributes-request.dto.d.ts +36 -0
  240. package/dist/dto/update-user-attributes-request.dto.d.ts.map +1 -1
  241. package/dist/dto/update-user-attributes-request.dto.js +36 -0
  242. package/dist/dto/update-user-attributes-request.dto.js.map +1 -1
  243. package/dist/dto/user-response.dto.d.ts +81 -0
  244. package/dist/dto/user-response.dto.d.ts.map +1 -1
  245. package/dist/dto/user-response.dto.js +84 -2
  246. package/dist/dto/user-response.dto.js.map +1 -1
  247. package/dist/dto/user-update.dto.d.ts +132 -0
  248. package/dist/dto/user-update.dto.d.ts.map +1 -1
  249. package/dist/dto/user-update.dto.js +133 -0
  250. package/dist/dto/user-update.dto.js.map +1 -1
  251. package/dist/dto/verify-email.dto.d.ts +171 -0
  252. package/dist/dto/verify-email.dto.d.ts.map +1 -1
  253. package/dist/dto/verify-email.dto.js +173 -1
  254. package/dist/dto/verify-email.dto.js.map +1 -1
  255. package/dist/dto/verify-mfa-code.dto.d.ts +65 -0
  256. package/dist/dto/verify-mfa-code.dto.d.ts.map +1 -1
  257. package/dist/dto/verify-mfa-code.dto.js +65 -0
  258. package/dist/dto/verify-mfa-code.dto.js.map +1 -1
  259. package/dist/dto/verify-phone-by-sub.dto.d.ts +49 -0
  260. package/dist/dto/verify-phone-by-sub.dto.d.ts.map +1 -1
  261. package/dist/dto/verify-phone-by-sub.dto.js +49 -0
  262. package/dist/dto/verify-phone-by-sub.dto.js.map +1 -1
  263. package/dist/dto/verify-phone.dto.d.ts +139 -0
  264. package/dist/dto/verify-phone.dto.d.ts.map +1 -1
  265. package/dist/dto/verify-phone.dto.js +142 -1
  266. package/dist/dto/verify-phone.dto.js.map +1 -1
  267. package/dist/dto.d.ts +10 -0
  268. package/dist/dto.d.ts.map +1 -1
  269. package/dist/dto.js +10 -0
  270. package/dist/dto.js.map +1 -1
  271. package/dist/entities/auth-audit.entity.d.ts +159 -0
  272. package/dist/entities/auth-audit.entity.d.ts.map +1 -1
  273. package/dist/entities/auth-audit.entity.js +166 -0
  274. package/dist/entities/auth-audit.entity.js.map +1 -1
  275. package/dist/entities/challenge-session.entity.d.ts +87 -0
  276. package/dist/entities/challenge-session.entity.d.ts.map +1 -1
  277. package/dist/entities/challenge-session.entity.js +87 -0
  278. package/dist/entities/challenge-session.entity.js.map +1 -1
  279. package/dist/entities/index.d.ts +18 -0
  280. package/dist/entities/index.d.ts.map +1 -1
  281. package/dist/entities/index.js +18 -0
  282. package/dist/entities/index.js.map +1 -1
  283. package/dist/entities/login-attempt.entity.d.ts +43 -0
  284. package/dist/entities/login-attempt.entity.d.ts.map +1 -1
  285. package/dist/entities/login-attempt.entity.js +43 -0
  286. package/dist/entities/login-attempt.entity.js.map +1 -1
  287. package/dist/entities/mfa-device.entity.d.ts +112 -0
  288. package/dist/entities/mfa-device.entity.d.ts.map +1 -1
  289. package/dist/entities/mfa-device.entity.js +112 -0
  290. package/dist/entities/mfa-device.entity.js.map +1 -1
  291. package/dist/entities/rate-limit.entity.d.ts +31 -0
  292. package/dist/entities/rate-limit.entity.d.ts.map +1 -1
  293. package/dist/entities/rate-limit.entity.js +31 -0
  294. package/dist/entities/rate-limit.entity.js.map +1 -1
  295. package/dist/entities/session.entity.d.ts +121 -0
  296. package/dist/entities/session.entity.d.ts.map +1 -1
  297. package/dist/entities/session.entity.js +121 -0
  298. package/dist/entities/session.entity.js.map +1 -1
  299. package/dist/entities/social-account.entity.d.ts +75 -0
  300. package/dist/entities/social-account.entity.d.ts.map +1 -1
  301. package/dist/entities/social-account.entity.js +75 -0
  302. package/dist/entities/social-account.entity.js.map +1 -1
  303. package/dist/entities/storage-lock.entity.d.ts +28 -0
  304. package/dist/entities/storage-lock.entity.d.ts.map +1 -1
  305. package/dist/entities/storage-lock.entity.js +28 -0
  306. package/dist/entities/storage-lock.entity.js.map +1 -1
  307. package/dist/entities/trusted-device.entity.d.ts +83 -0
  308. package/dist/entities/trusted-device.entity.d.ts.map +1 -1
  309. package/dist/entities/trusted-device.entity.js +83 -0
  310. package/dist/entities/trusted-device.entity.js.map +1 -1
  311. package/dist/entities/user.entity.d.ts +166 -0
  312. package/dist/entities/user.entity.d.ts.map +1 -1
  313. package/dist/entities/user.entity.js +166 -0
  314. package/dist/entities/user.entity.js.map +1 -1
  315. package/dist/entities/verification-token.entity.d.ts +102 -0
  316. package/dist/entities/verification-token.entity.d.ts.map +1 -1
  317. package/dist/entities/verification-token.entity.js +102 -0
  318. package/dist/entities/verification-token.entity.js.map +1 -1
  319. package/dist/entities.d.ts +8 -0
  320. package/dist/entities.d.ts.map +1 -1
  321. package/dist/entities.js +8 -0
  322. package/dist/entities.js.map +1 -1
  323. package/dist/enums/auth-audit-event-type.enum.d.ts +211 -0
  324. package/dist/enums/auth-audit-event-type.enum.d.ts.map +1 -1
  325. package/dist/enums/auth-audit-event-type.enum.js +244 -0
  326. package/dist/enums/auth-audit-event-type.enum.js.map +1 -1
  327. package/dist/enums/error-codes.enum.d.ts +296 -0
  328. package/dist/enums/error-codes.enum.d.ts.map +1 -1
  329. package/dist/enums/error-codes.enum.js +332 -0
  330. package/dist/enums/error-codes.enum.js.map +1 -1
  331. package/dist/enums/mfa-method.enum.d.ts +74 -0
  332. package/dist/enums/mfa-method.enum.d.ts.map +1 -1
  333. package/dist/enums/mfa-method.enum.js +64 -0
  334. package/dist/enums/mfa-method.enum.js.map +1 -1
  335. package/dist/enums/risk-factor.enum.d.ts +91 -0
  336. package/dist/enums/risk-factor.enum.d.ts.map +1 -1
  337. package/dist/enums/risk-factor.enum.js +97 -0
  338. package/dist/enums/risk-factor.enum.js.map +1 -1
  339. package/dist/exceptions/nauth.exception.d.ts +149 -0
  340. package/dist/exceptions/nauth.exception.d.ts.map +1 -1
  341. package/dist/exceptions/nauth.exception.js +159 -0
  342. package/dist/exceptions/nauth.exception.js.map +1 -1
  343. package/dist/handlers/auth.handler.d.ts +32 -0
  344. package/dist/handlers/auth.handler.d.ts.map +1 -1
  345. package/dist/handlers/auth.handler.js +47 -1
  346. package/dist/handlers/auth.handler.js.map +1 -1
  347. package/dist/handlers/client-info.handler.d.ts +25 -0
  348. package/dist/handlers/client-info.handler.d.ts.map +1 -1
  349. package/dist/handlers/client-info.handler.js +36 -2
  350. package/dist/handlers/client-info.handler.js.map +1 -1
  351. package/dist/handlers/csrf.handler.d.ts +32 -0
  352. package/dist/handlers/csrf.handler.d.ts.map +1 -1
  353. package/dist/handlers/csrf.handler.js +49 -1
  354. package/dist/handlers/csrf.handler.js.map +1 -1
  355. package/dist/handlers/token-delivery.handler.d.ts +16 -0
  356. package/dist/handlers/token-delivery.handler.d.ts.map +1 -1
  357. package/dist/handlers/token-delivery.handler.js +22 -1
  358. package/dist/handlers/token-delivery.handler.js.map +1 -1
  359. package/dist/index.d.ts +34 -0
  360. package/dist/index.d.ts.map +1 -1
  361. package/dist/index.js +67 -0
  362. package/dist/index.js.map +1 -1
  363. package/dist/interfaces/client-info.interface.d.ts +58 -0
  364. package/dist/interfaces/client-info.interface.d.ts.map +1 -1
  365. package/dist/interfaces/config.interface.d.ts +1774 -0
  366. package/dist/interfaces/config.interface.d.ts.map +1 -1
  367. package/dist/interfaces/config.interface.js +16 -0
  368. package/dist/interfaces/config.interface.js.map +1 -1
  369. package/dist/interfaces/entities.interface.d.ts +48 -0
  370. package/dist/interfaces/entities.interface.d.ts.map +1 -1
  371. package/dist/interfaces/entities.interface.js +8 -0
  372. package/dist/interfaces/entities.interface.js.map +1 -1
  373. package/dist/interfaces/index.js +5 -0
  374. package/dist/interfaces/index.js.map +1 -1
  375. package/dist/interfaces/logger.interface.d.ts +213 -0
  376. package/dist/interfaces/logger.interface.d.ts.map +1 -1
  377. package/dist/interfaces/logger.interface.js +35 -0
  378. package/dist/interfaces/logger.interface.js.map +1 -1
  379. package/dist/interfaces/mfa-provider.interface.d.ts +134 -0
  380. package/dist/interfaces/mfa-provider.interface.d.ts.map +1 -1
  381. package/dist/interfaces/oauth.interface.d.ts +110 -0
  382. package/dist/interfaces/oauth.interface.d.ts.map +1 -1
  383. package/dist/interfaces/provider.interface.d.ts +83 -0
  384. package/dist/interfaces/provider.interface.d.ts.map +1 -1
  385. package/dist/interfaces/sms-template.interface.d.ts +246 -0
  386. package/dist/interfaces/sms-template.interface.d.ts.map +1 -1
  387. package/dist/interfaces/sms-template.interface.js +26 -0
  388. package/dist/interfaces/sms-template.interface.js.map +1 -1
  389. package/dist/interfaces/social-auth-provider.interface.d.ts +115 -0
  390. package/dist/interfaces/social-auth-provider.interface.d.ts.map +1 -1
  391. package/dist/interfaces/storage-adapter.interface.d.ts +37 -0
  392. package/dist/interfaces/storage-adapter.interface.d.ts.map +1 -1
  393. package/dist/interfaces/template.interface.d.ts +351 -0
  394. package/dist/interfaces/template.interface.d.ts.map +1 -1
  395. package/dist/interfaces/template.interface.js +13 -0
  396. package/dist/interfaces/template.interface.js.map +1 -1
  397. package/dist/interfaces/token-verifier.interface.d.ts +101 -0
  398. package/dist/interfaces/token-verifier.interface.d.ts.map +1 -1
  399. package/dist/interfaces.d.ts +8 -0
  400. package/dist/interfaces.d.ts.map +1 -1
  401. package/dist/interfaces.js +8 -0
  402. package/dist/interfaces.js.map +1 -1
  403. package/dist/internal.d.ts +120 -0
  404. package/dist/internal.d.ts.map +1 -1
  405. package/dist/internal.js +138 -0
  406. package/dist/internal.js.map +1 -1
  407. package/dist/platform/interfaces.d.ts +187 -0
  408. package/dist/platform/interfaces.d.ts.map +1 -1
  409. package/dist/platform/interfaces.js +11 -0
  410. package/dist/platform/interfaces.js.map +1 -1
  411. package/dist/schemas/auth-config.schema.d.ts +48 -0
  412. package/dist/schemas/auth-config.schema.d.ts.map +1 -1
  413. package/dist/schemas/auth-config.schema.js +188 -9
  414. package/dist/schemas/auth-config.schema.js.map +1 -1
  415. package/dist/services/adaptive-mfa-decision.service.d.ts +144 -0
  416. package/dist/services/adaptive-mfa-decision.service.d.ts.map +1 -1
  417. package/dist/services/adaptive-mfa-decision.service.js +151 -5
  418. package/dist/services/adaptive-mfa-decision.service.js.map +1 -1
  419. package/dist/services/auth-audit.service.d.ts +195 -0
  420. package/dist/services/auth-audit.service.d.ts.map +1 -1
  421. package/dist/services/auth-audit.service.js +228 -1
  422. package/dist/services/auth-audit.service.js.map +1 -1
  423. package/dist/services/auth-challenge-helper.service.d.ts +144 -1
  424. package/dist/services/auth-challenge-helper.service.d.ts.map +1 -1
  425. package/dist/services/auth-challenge-helper.service.js +295 -16
  426. package/dist/services/auth-challenge-helper.service.js.map +1 -1
  427. package/dist/services/auth-flow-context-builder.service.d.ts +120 -1
  428. package/dist/services/auth-flow-context-builder.service.d.ts.map +1 -1
  429. package/dist/services/auth-flow-context-builder.service.js +184 -5
  430. package/dist/services/auth-flow-context-builder.service.js.map +1 -1
  431. package/dist/services/auth-flow-rules.d.ts +136 -0
  432. package/dist/services/auth-flow-rules.d.ts.map +1 -1
  433. package/dist/services/auth-flow-rules.js +137 -0
  434. package/dist/services/auth-flow-rules.js.map +1 -1
  435. package/dist/services/auth-flow-state-definitions.d.ts +40 -0
  436. package/dist/services/auth-flow-state-definitions.d.ts.map +1 -1
  437. package/dist/services/auth-flow-state-definitions.js +98 -0
  438. package/dist/services/auth-flow-state-definitions.js.map +1 -1
  439. package/dist/services/auth-flow-state-machine.service.d.ts +91 -0
  440. package/dist/services/auth-flow-state-machine.service.d.ts.map +1 -1
  441. package/dist/services/auth-flow-state-machine.service.js +102 -0
  442. package/dist/services/auth-flow-state-machine.service.js.map +1 -1
  443. package/dist/services/auth-flow-state-machine.types.d.ts +221 -0
  444. package/dist/services/auth-flow-state-machine.types.d.ts.map +1 -1
  445. package/dist/services/auth-flow-state-machine.types.js +47 -0
  446. package/dist/services/auth-flow-state-machine.types.js.map +1 -1
  447. package/dist/services/auth.service.d.ts +397 -1
  448. package/dist/services/auth.service.d.ts.map +1 -1
  449. package/dist/services/auth.service.js +943 -27
  450. package/dist/services/auth.service.js.map +1 -1
  451. package/dist/services/challenge.service.d.ts +255 -1
  452. package/dist/services/challenge.service.d.ts.map +1 -1
  453. package/dist/services/challenge.service.js +327 -3
  454. package/dist/services/challenge.service.js.map +1 -1
  455. package/dist/services/client-info.service.d.ts +143 -0
  456. package/dist/services/client-info.service.d.ts.map +1 -1
  457. package/dist/services/client-info.service.js +161 -0
  458. package/dist/services/client-info.service.js.map +1 -1
  459. package/dist/services/csrf.service.d.ts +15 -0
  460. package/dist/services/csrf.service.d.ts.map +1 -1
  461. package/dist/services/csrf.service.js +16 -0
  462. package/dist/services/csrf.service.js.map +1 -1
  463. package/dist/services/email-verification.service.d.ts +52 -0
  464. package/dist/services/email-verification.service.d.ts.map +1 -1
  465. package/dist/services/email-verification.service.js +149 -10
  466. package/dist/services/email-verification.service.js.map +1 -1
  467. package/dist/services/geo-location.service.d.ts +105 -0
  468. package/dist/services/geo-location.service.d.ts.map +1 -1
  469. package/dist/services/geo-location.service.js +188 -2
  470. package/dist/services/geo-location.service.js.map +1 -1
  471. package/dist/services/jwt.service.d.ts +257 -0
  472. package/dist/services/jwt.service.d.ts.map +1 -1
  473. package/dist/services/jwt.service.js +284 -1
  474. package/dist/services/jwt.service.js.map +1 -1
  475. package/dist/services/mfa-base.service.d.ts +179 -1
  476. package/dist/services/mfa-base.service.d.ts.map +1 -1
  477. package/dist/services/mfa-base.service.js +256 -2
  478. package/dist/services/mfa-base.service.js.map +1 -1
  479. package/dist/services/mfa.service.d.ts +304 -0
  480. package/dist/services/mfa.service.d.ts.map +1 -1
  481. package/dist/services/mfa.service.js +380 -0
  482. package/dist/services/mfa.service.js.map +1 -1
  483. package/dist/services/password-reset.service.d.ts +46 -0
  484. package/dist/services/password-reset.service.d.ts.map +1 -1
  485. package/dist/services/password-reset.service.js +79 -0
  486. package/dist/services/password-reset.service.js.map +1 -1
  487. package/dist/services/password.service.d.ts +139 -0
  488. package/dist/services/password.service.d.ts.map +1 -1
  489. package/dist/services/password.service.js +167 -9
  490. package/dist/services/password.service.js.map +1 -1
  491. package/dist/services/phone-verification.service.d.ts +75 -0
  492. package/dist/services/phone-verification.service.d.ts.map +1 -1
  493. package/dist/services/phone-verification.service.js +188 -6
  494. package/dist/services/phone-verification.service.js.map +1 -1
  495. package/dist/services/risk-detection.service.d.ts +198 -0
  496. package/dist/services/risk-detection.service.d.ts.map +1 -1
  497. package/dist/services/risk-detection.service.js +358 -11
  498. package/dist/services/risk-detection.service.js.map +1 -1
  499. package/dist/services/risk-scoring.service.d.ts +84 -0
  500. package/dist/services/risk-scoring.service.d.ts.map +1 -1
  501. package/dist/services/risk-scoring.service.js +87 -0
  502. package/dist/services/risk-scoring.service.js.map +1 -1
  503. package/dist/services/session.service.d.ts +204 -0
  504. package/dist/services/session.service.d.ts.map +1 -1
  505. package/dist/services/session.service.js +289 -4
  506. package/dist/services/session.service.js.map +1 -1
  507. package/dist/services/social-auth-base.service.d.ts +123 -1
  508. package/dist/services/social-auth-base.service.d.ts.map +1 -1
  509. package/dist/services/social-auth-base.service.js +155 -2
  510. package/dist/services/social-auth-base.service.js.map +1 -1
  511. package/dist/services/social-auth.service.d.ts +191 -0
  512. package/dist/services/social-auth.service.d.ts.map +1 -1
  513. package/dist/services/social-auth.service.js +215 -2
  514. package/dist/services/social-auth.service.js.map +1 -1
  515. package/dist/services/social-provider-registry.service.d.ts +86 -0
  516. package/dist/services/social-provider-registry.service.d.ts.map +1 -1
  517. package/dist/services/social-provider-registry.service.js +86 -0
  518. package/dist/services/social-provider-registry.service.js.map +1 -1
  519. package/dist/services/trusted-device.service.d.ts +105 -0
  520. package/dist/services/trusted-device.service.d.ts.map +1 -1
  521. package/dist/services/trusted-device.service.js +133 -4
  522. package/dist/services/trusted-device.service.js.map +1 -1
  523. package/dist/storage/account-lockout-storage.service.d.ts +35 -0
  524. package/dist/storage/account-lockout-storage.service.d.ts.map +1 -1
  525. package/dist/storage/account-lockout-storage.service.js +35 -0
  526. package/dist/storage/account-lockout-storage.service.js.map +1 -1
  527. package/dist/storage/memory-storage.adapter.d.ts +148 -0
  528. package/dist/storage/memory-storage.adapter.d.ts.map +1 -1
  529. package/dist/storage/memory-storage.adapter.js +201 -6
  530. package/dist/storage/memory-storage.adapter.js.map +1 -1
  531. package/dist/storage/rate-limit-storage.service.d.ts +3 -0
  532. package/dist/storage/rate-limit-storage.service.d.ts.map +1 -1
  533. package/dist/storage/rate-limit-storage.service.js +4 -0
  534. package/dist/storage/rate-limit-storage.service.js.map +1 -1
  535. package/dist/storage.d.ts +8 -0
  536. package/dist/storage.d.ts.map +1 -1
  537. package/dist/storage.js +8 -0
  538. package/dist/storage.js.map +1 -1
  539. package/dist/templates/html-template.engine.d.ts +110 -0
  540. package/dist/templates/html-template.engine.d.ts.map +1 -1
  541. package/dist/templates/html-template.engine.js +147 -0
  542. package/dist/templates/html-template.engine.js.map +1 -1
  543. package/dist/templates/index.d.ts +5 -0
  544. package/dist/templates/index.d.ts.map +1 -1
  545. package/dist/templates/index.js +5 -0
  546. package/dist/templates/index.js.map +1 -1
  547. package/dist/templates/sms-template.engine.d.ts +151 -0
  548. package/dist/templates/sms-template.engine.d.ts.map +1 -1
  549. package/dist/templates/sms-template.engine.js +171 -0
  550. package/dist/templates/sms-template.engine.js.map +1 -1
  551. package/dist/templates.d.ts +8 -0
  552. package/dist/templates.d.ts.map +1 -1
  553. package/dist/templates.js +8 -0
  554. package/dist/templates.js.map +1 -1
  555. package/dist/utils/common-passwords.d.ts +42 -0
  556. package/dist/utils/common-passwords.d.ts.map +1 -1
  557. package/dist/utils/common-passwords.js +88 -0
  558. package/dist/utils/common-passwords.js.map +1 -1
  559. package/dist/utils/context-storage.d.ts +129 -0
  560. package/dist/utils/context-storage.d.ts.map +1 -1
  561. package/dist/utils/context-storage.js +129 -0
  562. package/dist/utils/context-storage.js.map +1 -1
  563. package/dist/utils/cookie-names.util.d.ts +35 -0
  564. package/dist/utils/cookie-names.util.d.ts.map +1 -1
  565. package/dist/utils/cookie-names.util.js +37 -0
  566. package/dist/utils/cookie-names.util.js.map +1 -1
  567. package/dist/utils/cookies.util.d.ts +19 -0
  568. package/dist/utils/cookies.util.d.ts.map +1 -1
  569. package/dist/utils/cookies.util.js +30 -3
  570. package/dist/utils/cookies.util.js.map +1 -1
  571. package/dist/utils/index.d.ts +3 -0
  572. package/dist/utils/index.d.ts.map +1 -1
  573. package/dist/utils/index.js +4 -0
  574. package/dist/utils/index.js.map +1 -1
  575. package/dist/utils/ip-extractor.d.ts +88 -0
  576. package/dist/utils/ip-extractor.d.ts.map +1 -1
  577. package/dist/utils/ip-extractor.js +109 -16
  578. package/dist/utils/ip-extractor.js.map +1 -1
  579. package/dist/utils/nauth-logger.d.ts +70 -0
  580. package/dist/utils/nauth-logger.d.ts.map +1 -1
  581. package/dist/utils/nauth-logger.js +82 -4
  582. package/dist/utils/nauth-logger.js.map +1 -1
  583. package/dist/utils/pii-redactor.d.ts +70 -0
  584. package/dist/utils/pii-redactor.d.ts.map +1 -1
  585. package/dist/utils/pii-redactor.js +102 -0
  586. package/dist/utils/pii-redactor.js.map +1 -1
  587. package/dist/utils/setup/get-repositories.d.ts +16 -0
  588. package/dist/utils/setup/get-repositories.d.ts.map +1 -1
  589. package/dist/utils/setup/get-repositories.js +21 -0
  590. package/dist/utils/setup/get-repositories.js.map +1 -1
  591. package/dist/utils/setup/init-services.d.ts +40 -1
  592. package/dist/utils/setup/init-services.d.ts.map +1 -1
  593. package/dist/utils/setup/init-services.js +98 -0
  594. package/dist/utils/setup/init-services.js.map +1 -1
  595. package/dist/utils/setup/init-social.d.ts +27 -0
  596. package/dist/utils/setup/init-social.d.ts.map +1 -1
  597. package/dist/utils/setup/init-social.js +49 -0
  598. package/dist/utils/setup/init-social.js.map +1 -1
  599. package/dist/utils/setup/init-storage.d.ts +22 -0
  600. package/dist/utils/setup/init-storage.d.ts.map +1 -1
  601. package/dist/utils/setup/init-storage.js +36 -0
  602. package/dist/utils/setup/init-storage.js.map +1 -1
  603. package/dist/utils/setup/register-mfa.d.ts +22 -0
  604. package/dist/utils/setup/register-mfa.d.ts.map +1 -1
  605. package/dist/utils/setup/register-mfa.js +41 -0
  606. package/dist/utils/setup/register-mfa.js.map +1 -1
  607. package/dist/utils/setup/run-nauth-migrations.d.ts +7 -0
  608. package/dist/utils/setup/run-nauth-migrations.d.ts.map +1 -1
  609. package/dist/utils/setup/run-nauth-migrations.js +8 -0
  610. package/dist/utils/setup/run-nauth-migrations.js.map +1 -1
  611. package/dist/utils/token-delivery-policy.d.ts +17 -0
  612. package/dist/utils/token-delivery-policy.d.ts.map +1 -1
  613. package/dist/utils/token-delivery-policy.js +17 -0
  614. package/dist/utils/token-delivery-policy.js.map +1 -1
  615. package/dist/utils.d.ts +8 -0
  616. package/dist/utils.d.ts.map +1 -1
  617. package/dist/utils.js +8 -0
  618. package/dist/utils.js.map +1 -1
  619. package/dist/validators/template.validator.d.ts +80 -0
  620. package/dist/validators/template.validator.d.ts.map +1 -1
  621. package/dist/validators/template.validator.js +94 -0
  622. package/dist/validators/template.validator.js.map +1 -1
  623. package/package.json +7 -2
@@ -6,6 +6,49 @@ const auth_audit_event_type_enum_1 = require("../enums/auth-audit-event-type.enu
6
6
  const nauth_exception_1 = require("../exceptions/nauth.exception");
7
7
  const error_codes_enum_1 = require("../enums/error-codes.enum");
8
8
  const mfa_method_enum_1 = require("../enums/mfa-method.enum");
9
+ /**
10
+ * Base MFA Provider Service
11
+ *
12
+ * Abstract base class that provides common functionality for all MFA providers.
13
+ * Provider-specific services (TOTP, SMS, Passkey, etc.) should extend this class
14
+ * and implement the IMFAProviderService interface methods.
15
+ *
16
+ * This base class handles:
17
+ * - Device repository access
18
+ * - User repository access
19
+ * - Common device management operations
20
+ * - Backup codes generation and verification
21
+ * - MFA enforcement checks
22
+ * - Helper methods
23
+ *
24
+ * **Key Design:**
25
+ * - No hardcoded method names - works with any provider
26
+ * - Provider config accessed dynamically via `methodName`
27
+ * - Future developers can add new providers without modifying this class
28
+ *
29
+ * @example
30
+ * ```typescript
31
+ * @Injectable()
32
+ * export class TOTPMFAProviderService extends BaseMFAProviderService implements IMFAProviderService {
33
+ * readonly methodName = 'totp';
34
+ *
35
+ * constructor(
36
+ * // ... base dependencies injected via super()
37
+ * private readonly totpService: TOTPService,
38
+ * ) {
39
+ * super(/* ... base dependencies *\/);
40
+ * }
41
+ *
42
+ * async setup(user: IUser): Promise<unknown> {
43
+ * // TOTP-specific setup logic
44
+ * }
45
+ *
46
+ * async verify(user: IUser, code: unknown): Promise<boolean> {
47
+ * // TOTP verification logic
48
+ * }
49
+ * }
50
+ * ```
51
+ */
9
52
  class BaseMFAProviderService {
10
53
  mfaDeviceRepository;
11
54
  userRepository;
@@ -15,7 +58,8 @@ class BaseMFAProviderService {
15
58
  challengeService;
16
59
  auditService;
17
60
  clientInfoService;
18
- constructor(mfaDeviceRepository, userRepository, config, logger, passwordService, challengeService, auditService, clientInfoService) {
61
+ constructor(mfaDeviceRepository, userRepository, config, logger, passwordService, // Optional - from @nauth-toolkit/core
62
+ challengeService, auditService, clientInfoService) {
19
63
  this.mfaDeviceRepository = mfaDeviceRepository;
20
64
  this.userRepository = userRepository;
21
65
  this.config = config;
@@ -25,10 +69,28 @@ class BaseMFAProviderService {
25
69
  this.auditService = auditService;
26
70
  this.clientInfoService = clientInfoService;
27
71
  }
72
+ /**
73
+ * Check if this MFA method is allowed by configuration
74
+ *
75
+ * @returns True if method is allowed
76
+ */
28
77
  isMethodAllowed() {
29
78
  const allowedMethods = this.config.mfa?.allowedMethods || [...mfa_method_enum_1.MFADeviceMethods];
30
79
  return allowedMethods.includes(this.methodName);
31
80
  }
81
+ // sendChallenge is optional - only providers like SMS need it
82
+ // TOTP doesn't need it (user generates code locally)
83
+ // ============================================================================
84
+ // Device Management (Common Logic)
85
+ // ============================================================================
86
+ /**
87
+ * Get user's MFA devices
88
+ *
89
+ * @param userId - Internal user ID
90
+ * @returns Array of MFA devices
91
+ *
92
+ * @protected
93
+ */
32
94
  async getUserDevices(userId) {
33
95
  const devices = await this.mfaDeviceRepository.find({
34
96
  where: { userId },
@@ -36,8 +98,48 @@ class BaseMFAProviderService {
36
98
  });
37
99
  return devices;
38
100
  }
101
+ /**
102
+ * Create MFA device for user
103
+ *
104
+ * Creates a new MFA device with proper duplicate prevention and transaction safety.
105
+ * Uses database-level unique constraint (userId, type) to prevent race conditions.
106
+ *
107
+ * **Race Condition Prevention:**
108
+ * - Checks for existing device before creation
109
+ * - Wraps in transaction with pessimistic write lock on user row
110
+ * - Database unique constraint provides final safety net
111
+ *
112
+ * **Transaction Flow:**
113
+ * 1. Lock user row (prevents concurrent MFA setup)
114
+ * 2. Check for existing device of this type
115
+ * 3. Create device if none exists
116
+ * 4. Update user MFA flags
117
+ * 5. Commit transaction
118
+ *
119
+ * @param userId - Internal user ID
120
+ * @param deviceData - Device data to create
121
+ * @returns Created device (or existing device if already present)
122
+ * @protected
123
+ *
124
+ * @example
125
+ * ```typescript
126
+ * const device = await this.createDevice(user.id, {
127
+ * name: 'SMS Phone',
128
+ * phoneNumber: '+1234567890',
129
+ * isActive: true,
130
+ * isPrimary: !user.mfaEnabled,
131
+ * });
132
+ * ```
133
+ */
39
134
  async createDevice(userId, deviceData) {
135
+ // ============================================================================
136
+ // Transaction-Safe Device Creation with Race Condition Prevention
137
+ // ============================================================================
138
+ // Use TypeORM transaction manager to ensure atomicity across all database adapters
139
+ // Pessimistic write lock prevents concurrent MFA device creation for same user
40
140
  const device = await this.userRepository.manager.transaction(async (transactionalEntityManager) => {
141
+ // Step 1: Lock user row to prevent concurrent MFA setup
142
+ // This works across MySQL and PostgreSQL (TypeORM translates to FOR UPDATE)
41
143
  await transactionalEntityManager
42
144
  .createQueryBuilder()
43
145
  .select('user.id')
@@ -45,6 +147,8 @@ class BaseMFAProviderService {
45
147
  .where('user.id = :userId', { userId })
46
148
  .setLock('pessimistic_write')
47
149
  .getOne();
150
+ // Step 2: Check for existing device of this type (within transaction)
151
+ // This prevents duplicates even if called concurrently
48
152
  const existingDevice = await transactionalEntityManager
49
153
  .getRepository(this.mfaDeviceRepository.target)
50
154
  .createQueryBuilder('device')
@@ -55,15 +159,20 @@ class BaseMFAProviderService {
55
159
  this.logger?.log?.(`MFA device of type '${this.methodName}' already exists for user ${userId}, returning existing device`);
56
160
  return existingDevice;
57
161
  }
162
+ // Step 3: Create new device (no duplicate exists)
58
163
  const newDevice = transactionalEntityManager.getRepository(this.mfaDeviceRepository.target).create({
59
164
  userId,
60
165
  type: this.methodName,
61
166
  ...deviceData,
62
167
  });
168
+ // Step 4: Save device (unique constraint provides final safety net)
63
169
  const saved = await transactionalEntityManager.getRepository(this.mfaDeviceRepository.target).save(newDevice);
64
170
  this.logger?.log?.(`Created new MFA device: type='${this.methodName}', userId=${userId}, deviceId=${saved.id}`);
65
171
  return saved;
66
172
  });
173
+ // ============================================================================
174
+ // Audit: Record MFA device added
175
+ // ============================================================================
67
176
  if (this.auditService && this.clientInfoService) {
68
177
  try {
69
178
  await this.auditService.recordEvent({
@@ -71,6 +180,7 @@ class BaseMFAProviderService {
71
180
  eventType: auth_audit_event_type_enum_1.AuthAuditEventType.MFA_DEVICE_ADDED,
72
181
  eventStatus: 'SUCCESS',
73
182
  metadata: {
183
+ // Client info automatically included from context
74
184
  mfaMethod: this.methodName,
75
185
  deviceId: device.id,
76
186
  deviceName: device.name,
@@ -79,6 +189,7 @@ class BaseMFAProviderService {
79
189
  });
80
190
  }
81
191
  catch (auditError) {
192
+ // Non-blocking: Log but continue
82
193
  const errorMessage = auditError instanceof Error ? auditError.message : 'Unknown error';
83
194
  this.logger?.error?.(`Failed to record MFA_DEVICE_ADDED audit event: ${errorMessage}`, {
84
195
  error: auditError,
@@ -89,6 +200,14 @@ class BaseMFAProviderService {
89
200
  }
90
201
  return device;
91
202
  }
203
+ /**
204
+ * Find active device for user by method
205
+ *
206
+ * @param userId - Internal user ID
207
+ * @param deviceId - Optional device ID
208
+ * @returns Device if found, null otherwise
209
+ * @protected
210
+ */
92
211
  async findDevice(userId, deviceId) {
93
212
  const where = {
94
213
  userId,
@@ -104,6 +223,12 @@ class BaseMFAProviderService {
104
223
  });
105
224
  return device ? device : null;
106
225
  }
226
+ /**
227
+ * Update device usage statistics
228
+ *
229
+ * @param deviceId - Device ID
230
+ * @protected
231
+ */
107
232
  async updateDeviceUsage(deviceId) {
108
233
  const device = await this.mfaDeviceRepository.findOne({ where: { id: deviceId } });
109
234
  if (device) {
@@ -112,7 +237,20 @@ class BaseMFAProviderService {
112
237
  await this.mfaDeviceRepository.save(device);
113
238
  }
114
239
  }
240
+ /**
241
+ * Enable MFA for user
242
+ *
243
+ * Sets mfaEnabled flag and updates mfaMethods array.
244
+ * Called automatically when first device is registered.
245
+ * Automatically clears MFA_SETUP_REQUIRED challenges if they exist.
246
+ *
247
+ * @param user - User to enable MFA for
248
+ * @protected
249
+ */
115
250
  async enableMFAForUser(user) {
251
+ // Reload user from database to ensure we have the latest state
252
+ // This prevents overwriting fields like isPhoneVerified that may have been updated
253
+ // between when the user object was loaded and when MFA is enabled
116
254
  const userId = user.id;
117
255
  const userEntity = await this.userRepository.findOne({ where: { id: userId } });
118
256
  if (!userEntity) {
@@ -124,14 +262,30 @@ class BaseMFAProviderService {
124
262
  userEntityRecord.mfaEnabled = true;
125
263
  userEntityRecord.mfaEnforcedAt = new Date();
126
264
  }
265
+ // Update mfaMethods array
127
266
  const devices = await this.getUserDevices(userId);
128
267
  const methods = [...new Set(devices.filter((d) => d.isActive).map((d) => d.type))];
129
268
  userEntityRecord.mfaMethods = methods;
269
+ // Set preferred method if not set
130
270
  if (!userEntityRecord.preferredMfaMethod && methods.length > 0) {
131
271
  const primaryDevice = devices.find((d) => d.isPrimary && d.isActive);
132
272
  userEntityRecord.preferredMfaMethod = primaryDevice?.type || methods[0];
133
273
  }
134
274
  await this.userRepository.save(userEntity);
275
+ // If this is the first MFA device being set up, clear any MFA_SETUP_REQUIRED challenges
276
+ // This prevents phantom challenges when user sets up MFA while logged in
277
+ // if (isFirstDevice && this.challengeService) {
278
+ // try {
279
+ // await this.challengeService.deleteUserChallengeSessions(userId, AuthChallenge.MFA_SETUP_REQUIRED);
280
+ // this.logger?.log?.(`Cleared MFA_SETUP_REQUIRED challenge for user ${user.sub} after MFA setup`);
281
+ // } catch (error) {
282
+ // // Log but don't fail MFA setup if challenge clearing fails
283
+ // this.logger?.warn?.(`Failed to clear MFA_SETUP_REQUIRED challenge after MFA setup: ${error}`);
284
+ // }
285
+ // }
286
+ // ============================================================================
287
+ // Audit: Record MFA enabled (only for first device)
288
+ // ============================================================================
135
289
  if (isFirstDevice && this.auditService && this.clientInfoService) {
136
290
  try {
137
291
  await this.auditService?.recordEvent({
@@ -139,12 +293,14 @@ class BaseMFAProviderService {
139
293
  eventType: auth_audit_event_type_enum_1.AuthAuditEventType.MFA_ENABLED,
140
294
  eventStatus: 'SUCCESS',
141
295
  metadata: {
296
+ // Client info automatically included from context
142
297
  mfaMethod: this.methodName,
143
298
  mfaMethods: methods,
144
299
  },
145
300
  });
146
301
  }
147
302
  catch (auditError) {
303
+ // Non-blocking: Log but continue
148
304
  const errorMessage = auditError instanceof Error ? auditError.message : 'Unknown error';
149
305
  this.logger?.error?.(`Failed to record MFA_ENABLED audit event: ${errorMessage}`, {
150
306
  error: auditError,
@@ -154,24 +310,43 @@ class BaseMFAProviderService {
154
310
  }
155
311
  }
156
312
  }
313
+ // ============================================================================
314
+ // Backup Codes (Common Logic)
315
+ // ============================================================================
316
+ /**
317
+ * Generate backup codes for user
318
+ *
319
+ * Creates single-use recovery codes that can be used when MFA devices are unavailable.
320
+ * Exposed as optional method in IMFAProviderService interface.
321
+ *
322
+ * @param user - User to generate codes for
323
+ * @returns Generated backup codes (plain text - shown only once)
324
+ */
157
325
  async generateBackupCodes(user) {
158
326
  const userEntity = user;
159
327
  const config = this.config.mfa?.backup;
160
328
  const codeCount = config?.codeCount || 10;
161
329
  const codeLength = config?.codeLength || 8;
330
+ // Generate random codes
162
331
  const codes = [];
163
332
  for (let i = 0; i < codeCount; i++) {
164
333
  const code = this.generateRandomCode(codeLength);
165
334
  codes.push(code);
166
335
  }
336
+ // Check if password service is available
167
337
  if (!this.passwordService || typeof this.passwordService.hashPassword !== 'function') {
168
338
  throw new nauth_exception_1.NAuthException(error_codes_enum_1.AuthErrorCode.VALIDATION_FAILED, 'Password service is not available');
169
339
  }
340
+ // Hash codes for storage
170
341
  const passwordService = this.passwordService;
171
342
  const hashedCodes = await Promise.all(codes.map((code) => passwordService.hashPassword(code)));
343
+ // Store hashed codes
172
344
  userEntity.backupCodes = hashedCodes;
173
345
  await this.userRepository.save(userEntity);
174
346
  this.logger?.log?.(`Generated ${codeCount} backup codes for user: ${user.sub}`);
347
+ // ============================================================================
348
+ // Audit: Record backup codes generation
349
+ // ============================================================================
175
350
  if (this.auditService && this.clientInfoService) {
176
351
  try {
177
352
  await this.auditService?.recordEvent({
@@ -179,12 +354,14 @@ class BaseMFAProviderService {
179
354
  eventType: auth_audit_event_type_enum_1.AuthAuditEventType.MFA_BACKUP_CODES_GENERATED,
180
355
  eventStatus: 'INFO',
181
356
  metadata: {
357
+ // Client info automatically included from context
182
358
  codeCount,
183
359
  codeLength,
184
360
  },
185
361
  });
186
362
  }
187
363
  catch (auditError) {
364
+ // Non-blocking: Log but continue
188
365
  const errorMessage = auditError instanceof Error ? auditError.message : 'Unknown error';
189
366
  this.logger?.error?.(`Failed to record MFA_BACKUP_CODES_GENERATED audit event: ${errorMessage}`, {
190
367
  error: auditError,
@@ -194,6 +371,16 @@ class BaseMFAProviderService {
194
371
  }
195
372
  return codes;
196
373
  }
374
+ /**
375
+ * Verify backup code
376
+ *
377
+ * Validates backup code and removes it after use (single-use).
378
+ *
379
+ * @param user - User being authenticated
380
+ * @param code - Backup code to verify
381
+ * @returns True if code is valid
382
+ * @protected
383
+ */
197
384
  async verifyBackupCode(user, code) {
198
385
  const userEntity = user;
199
386
  const backupCodes = userEntity.backupCodes;
@@ -201,19 +388,25 @@ class BaseMFAProviderService {
201
388
  this.logger?.warn?.('No backup codes available');
202
389
  return false;
203
390
  }
391
+ // Check if password service is available
204
392
  if (!this.passwordService ||
205
393
  typeof this.passwordService.verifyPassword !== 'function') {
206
394
  this.logger?.warn?.('Backup code verification attempted but password service is not available');
207
395
  return false;
208
396
  }
397
+ // Check code against all stored hashed codes
209
398
  const passwordService = this.passwordService;
210
399
  for (let i = 0; i < backupCodes.length; i++) {
211
400
  const isValid = await passwordService.verifyPassword(code, backupCodes[i]);
212
401
  if (isValid) {
402
+ // Remove used code
213
403
  backupCodes.splice(i, 1);
214
404
  userEntity.backupCodes = backupCodes;
215
405
  await this.userRepository.save(userEntity);
216
406
  this.logger?.log?.(`Backup code verified and removed for user: ${user.sub}`);
407
+ // ============================================================================
408
+ // Audit: Record backup code usage
409
+ // ============================================================================
217
410
  if (this.auditService && this.clientInfoService) {
218
411
  try {
219
412
  await this.auditService?.recordEvent({
@@ -222,11 +415,13 @@ class BaseMFAProviderService {
222
415
  eventStatus: 'SUCCESS',
223
416
  authMethod: 'backup',
224
417
  metadata: {
418
+ // Client info automatically included from context
225
419
  remainingCodes: backupCodes.length,
226
420
  },
227
421
  });
228
422
  }
229
423
  catch (auditError) {
424
+ // Non-blocking: Log but continue
230
425
  const errorMessage = auditError instanceof Error ? auditError.message : 'Unknown error';
231
426
  this.logger?.error?.(`Failed to record MFA_BACKUP_CODE_USED audit event: ${errorMessage}`, {
232
427
  error: auditError,
@@ -240,8 +435,18 @@ class BaseMFAProviderService {
240
435
  this.logger?.warn?.('Backup code verification failed');
241
436
  return false;
242
437
  }
438
+ // ============================================================================
439
+ // Helper Methods
440
+ // ============================================================================
441
+ /**
442
+ * Generate random alphanumeric code
443
+ *
444
+ * @param length - Code length
445
+ * @returns Random code
446
+ * @protected
447
+ */
243
448
  generateRandomCode(length) {
244
- const chars = 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789';
449
+ const chars = 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789'; // Exclude ambiguous characters
245
450
  let code = '';
246
451
  const bytes = (0, crypto_1.randomBytes)(length);
247
452
  for (let i = 0; i < length; i++) {
@@ -249,12 +454,35 @@ class BaseMFAProviderService {
249
454
  }
250
455
  return code;
251
456
  }
457
+ /**
458
+ * Mask phone number for display
459
+ *
460
+ * @param phone - Phone number
461
+ * @returns Masked phone number
462
+ * @protected
463
+ */
252
464
  maskPhone(phone) {
253
465
  const digits = phone.replace(/\D/g, '');
254
466
  if (digits.length < 4)
255
467
  return phone;
256
468
  return `***-***-${digits.slice(-4)}`;
257
469
  }
470
+ /**
471
+ * Mask email address for display
472
+ *
473
+ * Masks the local part of the email while showing the domain.
474
+ * Example: user@example.com → u***r@example.com
475
+ *
476
+ * @param email - Email address
477
+ * @returns Masked email address
478
+ * @protected
479
+ *
480
+ * @example
481
+ * ```typescript
482
+ * const masked = this.maskEmail('user@example.com');
483
+ * // Returns: 'u***r@example.com'
484
+ * ```
485
+ */
258
486
  maskEmail(email) {
259
487
  const [localPart, domain] = email.split('@');
260
488
  if (!localPart || !domain)
@@ -264,8 +492,30 @@ class BaseMFAProviderService {
264
492
  }
265
493
  return `${localPart[0]}***${localPart[localPart.length - 1]}@${domain}`;
266
494
  }
495
+ /**
496
+ * Check if MFA is required for a user
497
+ *
498
+ * Determines MFA requirement based on:
499
+ * - User-level MFA exemption (admin override)
500
+ * - Global enforcement policy (OPTIONAL, REQUIRED, ADAPTIVE)
501
+ * - Grace period for REQUIRED enforcement
502
+ * - User's MFA enrollment date
503
+ *
504
+ * ADAPTIVE enforcement currently behaves like REQUIRED (placeholder for future risk-based logic)
505
+ *
506
+ * @param user - User to check
507
+ * @returns True if MFA is required
508
+ * @protected
509
+ */
267
510
  async isMFARequired(user) {
511
+ // ============================================================================
512
+ // SECURITY: Check user-level MFA exemption FIRST
513
+ // ============================================================================
514
+ // Exemption allows bypassing MFA requirements
515
+ // This is checked early to ensure exempt users can always login
516
+ // Handle different database representations (boolean true, MySQL tinyint 1, etc.)
268
517
  const mfaExempt = user.mfaExempt;
518
+ // Check for boolean true (handle numeric 1 case at runtime if needed)
269
519
  if (mfaExempt === true || mfaExempt === 1) {
270
520
  return false;
271
521
  }
@@ -278,16 +528,20 @@ class BaseMFAProviderService {
278
528
  return false;
279
529
  }
280
530
  if (enforcement === 'REQUIRED' || enforcement === 'ADAPTIVE') {
531
+ // Check grace period
281
532
  const gracePeriod = mfaConfig.gracePeriod || 7;
282
533
  const gracePeriodEnd = new Date();
283
534
  gracePeriodEnd.setDate(gracePeriodEnd.getDate() - gracePeriod);
535
+ // If user has enrolled in MFA, check if they're within grace period
284
536
  const userWithDates = user;
285
537
  if (userWithDates.mfaEnforcedAt) {
286
538
  return userWithDates.mfaEnforcedAt <= gracePeriodEnd;
287
539
  }
540
+ // User hasn't enrolled - check account creation date
288
541
  if (userWithDates.createdAt) {
289
542
  return userWithDates.createdAt <= gracePeriodEnd;
290
543
  }
544
+ // No dates available - require MFA immediately
291
545
  return true;
292
546
  }
293
547
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"mfa-base.service.js","sourceRoot":"","sources":["../../src/services/mfa-base.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mfa-base.service.js","sourceRoot":"","sources":["../../src/services/mfa-base.service.ts"],"names":[],"mappings":"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"}