@nauth-toolkit/core 0.1.13 → 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
@@ -40,6 +40,27 @@ const nauth_exception_1 = require("../exceptions/nauth.exception");
40
40
  const error_codes_enum_1 = require("../enums/error-codes.enum");
41
41
  const verify_phone_dto_1 = require("../dto/verify-phone.dto");
42
42
  const crypto = __importStar(require("crypto"));
43
+ /**
44
+ * Phone Verification Service (Core)
45
+ *
46
+ * Database-agnostic phone verification workflow with provider-driven SMS delivery.
47
+ *
48
+ * WHY: Keeps core business logic independent of database and SMS vendors. Databases are
49
+ * injected via repository tokens and SMS via an `SMSProvider` adapter so consumers
50
+ * can plug in Postgres, MySQL, or any SMS provider without code changes.
51
+ *
52
+ * @example
53
+ * ```typescript
54
+ * // Send OTP
55
+ * const tokenId = await phoneVerificationService.sendVerificationSMS('user-sub');
56
+ *
57
+ * // Verify by sub
58
+ * await phoneVerificationService.verifyPhoneWithCodeBySub('user-sub', '123456');
59
+ *
60
+ * // Resend
61
+ * await phoneVerificationService.resendVerificationSMS('user-sub');
62
+ * ```
63
+ */
43
64
  class PhoneVerificationService {
44
65
  verificationTokenRepo;
45
66
  userRepo;
@@ -59,20 +80,37 @@ class PhoneVerificationService {
59
80
  this.logger = logger;
60
81
  this.auditService = auditService;
61
82
  }
83
+ /**
84
+ * Send verification SMS to user identified by `sub`.
85
+ * Applies rate limits and resend delay, stores hashed token + OTP, and sends via SMS provider.
86
+ *
87
+ * @param dto - Request DTO containing sub and skipAlreadyVerifiedCheck
88
+ * @returns Response DTO with verification token ID
89
+ * @throws {NAuthException} RATE_LIMIT_SMS | NOT_FOUND | PHONE_REQUIRED | ALREADY_VERIFIED | RATE_LIMIT_RESEND
90
+ */
62
91
  async sendVerificationSMS(dto) {
63
92
  const { sub, skipAlreadyVerifiedCheck = true, challengeSessionId } = dto;
64
93
  const rateLimitKey = `phone-verification:${sub}`;
94
+ // Get rate limit configuration from config (moved to signup.phoneVerification)
65
95
  const rateLimitMax = this.config.signup?.phoneVerification?.rateLimitMax || 3;
66
- const rateLimitWindow = this.config.signup?.phoneVerification?.rateLimitWindow || 3600;
96
+ const rateLimitWindow = this.config.signup?.phoneVerification?.rateLimitWindow || 3600; // 1 hour in seconds
97
+ // Check if key exists and has valid TTL (not expired)
67
98
  const ttlBefore = await this.storageAdapter.ttl(rateLimitKey);
99
+ // Window is expired if: key doesn't exist (-1), expired (<0), or TTL is longer than configured window (config changed)
68
100
  const isWindowExpired = ttlBefore === -1 || ttlBefore < 0 || ttlBefore > rateLimitWindow;
101
+ // If TTL is longer than configured window (config changed), delete the old key to reset it
102
+ // This ensures the new window uses the current rateLimitWindow instead of preserving old expiry
69
103
  if (ttlBefore > rateLimitWindow) {
70
104
  await this.storageAdapter.del(rateLimitKey);
71
105
  }
106
+ // Increment counter (will reset to 1 if key expired or doesn't exist)
107
+ // Pass TTL so new records are created with correct expiry immediately
72
108
  const currentCount = await this.storageAdapter.incr(rateLimitKey, isWindowExpired ? rateLimitWindow : undefined);
109
+ // If we created a new window, log it
73
110
  if (isWindowExpired && currentCount === 1) {
74
111
  this.logger?.debug?.(`Rate limit window reset for phone verification: sub=${sub}, window=${rateLimitWindow}s, max=${rateLimitMax}`);
75
112
  }
113
+ // Get actual TTL after setting expiry (for error message)
76
114
  const actualTtl = await this.storageAdapter.ttl(rateLimitKey);
77
115
  this.logger?.debug?.(`Phone verification rate limit check: sub=${sub}, count=${currentCount}/${rateLimitMax}, ttl=${actualTtl}s`);
78
116
  if (currentCount > rateLimitMax) {
@@ -83,6 +121,7 @@ class PhoneVerificationService {
83
121
  maxAttempts: rateLimitMax,
84
122
  });
85
123
  }
124
+ // Load user by external identifier
86
125
  const user = (await this.userRepo.findOne({ where: { sub } }));
87
126
  if (!user) {
88
127
  throw new nauth_exception_1.NAuthException(error_codes_enum_1.AuthErrorCode.NOT_FOUND, 'User not found');
@@ -90,9 +129,11 @@ class PhoneVerificationService {
90
129
  if (!user.phone) {
91
130
  throw new nauth_exception_1.NAuthException(error_codes_enum_1.AuthErrorCode.PHONE_REQUIRED, 'No phone number associated with this account');
92
131
  }
132
+ // Only check "already verified" if not skipping (skip for MFA contexts where codes are needed even if phone is verified)
93
133
  if (!skipAlreadyVerifiedCheck && user.isPhoneVerified) {
94
134
  throw new nauth_exception_1.NAuthException(error_codes_enum_1.AuthErrorCode.ALREADY_VERIFIED, 'Phone already verified');
95
135
  }
136
+ // Enforce resend delay to prevent abuse
96
137
  const resendDelay = this.config.signup?.phoneVerification?.resendDelay ?? 60;
97
138
  const lastToken = (await this.verificationTokenRepo.findOne({
98
139
  where: { userId: user.id, type: 'phone' },
@@ -108,15 +149,18 @@ class PhoneVerificationService {
108
149
  });
109
150
  }
110
151
  }
152
+ // Invalidate existing unused tokens for this user
111
153
  await this.verificationTokenRepo.update({ userId: user.id, type: 'phone', usedAt: (0, typeorm_1.IsNull)() }, { usedAt: new Date() });
154
+ // Generate OTP and hashed token
112
155
  const code = this.generateCode();
113
156
  const token = this.generateToken();
114
157
  const tokenHash = this.hashToken(token);
158
+ // Capture client info for auditability
115
159
  const clientInfo = this.clientInfoService.get();
116
160
  const { ipAddress, userAgent } = clientInfo;
117
161
  const verificationToken = this.verificationTokenRepo.create({
118
162
  userId: user.id,
119
- challengeSessionId: challengeSessionId ?? null,
163
+ challengeSessionId: challengeSessionId ?? null, // Link to challenge session if provided
120
164
  type: 'phone',
121
165
  token: tokenHash,
122
166
  code,
@@ -127,11 +171,18 @@ class PhoneVerificationService {
127
171
  });
128
172
  const saved = (await this.verificationTokenRepo.save(verificationToken));
129
173
  this.logger?.log?.(`SMS token created: sub=${sub}, tokenId=${saved.id}, code=${code}, codeType=${typeof code}, userId=${user.id}, usedAt=${saved.usedAt || 'null'}`);
174
+ // Calculate expiry minutes for template variables
130
175
  const expiresInSeconds = this.config.signup?.phoneVerification?.expiresIn || 300;
131
176
  const expiryMinutes = Math.ceil(expiresInSeconds / 60);
177
+ // Determine template type: 'mfa' if called from MFA context, otherwise 'verification'
178
+ // MFA context is detected by skipAlreadyVerifiedCheck being explicitly true AND phone already verified
179
+ // (MFA always sends codes even if phone is verified, while verification only sends if not verified)
180
+ // Default to 'verification' for phone verification flows
132
181
  const templateType = dto.skipAlreadyVerifiedCheck && user.isPhoneVerified ? 'mfa' : 'verification';
182
+ // Get appName from email config or SMS templates global variables
133
183
  const smsConfig = this.config.sms;
134
184
  const appName = this.config.email?.appName || smsConfig?.templates?.globalVariables?.appName;
185
+ // Send SMS with template support
135
186
  await this.smsProvider.sendOTP(user.phone, code, templateType, {
136
187
  expiryMinutes,
137
188
  appName,
@@ -142,18 +193,23 @@ class PhoneVerificationService {
142
193
  phone: user.phone,
143
194
  });
144
195
  this.logger?.log?.(`SMS verification code sent: sub=${sub}, tokenId=${saved.id}, phone=${this.maskPhone(user.phone)}`);
196
+ // ============================================================================
197
+ // Audit: Record phone verification request
198
+ // ============================================================================
145
199
  try {
146
200
  await this.auditService?.recordEvent({
147
201
  userId: user.id,
148
202
  eventType: auth_audit_event_type_enum_1.AuthAuditEventType.PHONE_VERIFICATION_REQUESTED,
149
203
  eventStatus: 'INFO',
150
204
  metadata: {
205
+ // Client info automatically included from context
151
206
  verificationTokenId: saved.id,
152
207
  phone: this.maskPhone(user.phone),
153
208
  },
154
209
  });
155
210
  }
156
211
  catch (auditError) {
212
+ // Non-blocking: Log but continue
157
213
  const errorMessage = auditError instanceof Error ? auditError.message : 'Unknown error';
158
214
  this.logger?.error?.(`Failed to record PHONE_VERIFICATION_REQUESTED audit event: ${errorMessage}`, {
159
215
  error: auditError,
@@ -162,18 +218,29 @@ class PhoneVerificationService {
162
218
  }
163
219
  return { tokenId: saved.id };
164
220
  }
221
+ /**
222
+ * Verify phone by phone number and code.
223
+ * Handles duplicate phone numbers by selecting the token whose user matches the phone provided.
224
+ *
225
+ * @param dto - Request DTO containing phone and code
226
+ * @returns Response DTO with success message
227
+ * @throws {NAuthException} VERIFICATION_CODE_INVALID | VERIFICATION_CODE_EXPIRED | VERIFICATION_TOO_MANY_ATTEMPTS
228
+ */
165
229
  async verifyPhoneWithCode(dto) {
166
230
  const { phone, code, challengeSessionId } = dto;
231
+ // Find all unused tokens matching the code and type
232
+ // If challengeSessionId is provided, ensure token belongs to specific session
167
233
  const whereClause = {
168
234
  type: 'phone',
169
235
  code,
170
236
  usedAt: (0, typeorm_1.IsNull)(),
171
- ...(challengeSessionId !== undefined && { challengeSessionId }),
237
+ ...(challengeSessionId !== undefined && { challengeSessionId }), // Include if provided
172
238
  };
173
239
  const candidateTokens = (await this.verificationTokenRepo.find({
174
240
  where: whereClause,
175
241
  order: { createdAt: 'DESC' },
176
242
  }));
243
+ // Resolve the token whose user has the given phone
177
244
  let matched = null;
178
245
  for (const token of candidateTokens) {
179
246
  const user = (await this.userRepo.findOne({ where: { id: token.userId } }));
@@ -186,9 +253,11 @@ class PhoneVerificationService {
186
253
  throw new nauth_exception_1.NAuthException(error_codes_enum_1.AuthErrorCode.VERIFICATION_CODE_INVALID, 'Invalid or expired verification code');
187
254
  }
188
255
  const { token, user } = matched;
256
+ // Get verification attempt rate limit configuration from config
189
257
  const maxAttemptsPerUser = this.config.signup?.phoneVerification?.maxAttemptsPerUser ?? 10;
190
258
  const maxAttemptsPerIP = this.config.signup?.phoneVerification?.maxAttemptsPerIP ?? 20;
191
- const attemptWindow = this.config.signup?.phoneVerification?.attemptWindow ?? 3600;
259
+ const attemptWindow = this.config.signup?.phoneVerification?.attemptWindow ?? 3600; // 1 hour
260
+ // Rate limit verification attempts per user (not just per token)
192
261
  const userRateLimitKey = `verify-attempts:user:${user.id}`;
193
262
  const userAttempts = await this.storageAdapter.incr(userRateLimitKey);
194
263
  if (userAttempts === 1) {
@@ -197,6 +266,7 @@ class PhoneVerificationService {
197
266
  if (userAttempts > maxAttemptsPerUser) {
198
267
  throw new nauth_exception_1.NAuthException(error_codes_enum_1.AuthErrorCode.VERIFICATION_TOO_MANY_ATTEMPTS, 'Too many verification attempts. Please try again later.');
199
268
  }
269
+ // Also rate limit by IP
200
270
  const clientInfo = this.clientInfoService.get();
201
271
  if (clientInfo.ipAddress) {
202
272
  const ipRateLimitKey = `verify-attempts:ip:${clientInfo.ipAddress}`;
@@ -208,10 +278,12 @@ class PhoneVerificationService {
208
278
  throw new nauth_exception_1.NAuthException(error_codes_enum_1.AuthErrorCode.VERIFICATION_TOO_MANY_ATTEMPTS, 'Too many verification attempts from this IP. Please try again later.');
209
279
  }
210
280
  }
281
+ // Expiry check (use entity method if provided)
211
282
  const isExpired = typeof token.isExpired === 'function' ? !!token.isExpired() : token.expiresAt.getTime() <= Date.now();
212
283
  if (isExpired) {
213
284
  throw new nauth_exception_1.NAuthException(error_codes_enum_1.AuthErrorCode.VERIFICATION_CODE_EXPIRED, 'Verification code has expired');
214
285
  }
286
+ // Attempts check (use entity method if provided)
215
287
  const maxAttempts = this.config.signup?.phoneVerification?.maxAttempts ?? 3;
216
288
  const tooManyAttempts = typeof token.maxAttemptsExceeded === 'function'
217
289
  ? !!token.maxAttemptsExceeded(maxAttempts)
@@ -222,16 +294,21 @@ class PhoneVerificationService {
222
294
  currentAttempts: token.attempts,
223
295
  });
224
296
  }
297
+ // Increment attempts even on success to prevent reuse by race
225
298
  token.attempts += 1;
226
299
  if (token.code !== code) {
227
300
  await this.verificationTokenRepo.save(token);
228
301
  this.logger?.debug?.(`Phone verification failed: phone=${this.maskPhone(phone)}, attempts=${token.attempts}/${maxAttempts}`);
302
+ // ============================================================================
303
+ // Audit: Record phone verification failure
304
+ // ============================================================================
229
305
  try {
230
306
  await this.auditService?.recordEvent({
231
307
  userId: user.id,
232
308
  eventType: auth_audit_event_type_enum_1.AuthAuditEventType.PHONE_VERIFICATION_FAILED,
233
309
  eventStatus: 'FAILURE',
234
310
  reason: 'invalid_code',
311
+ // Client info automatically included from context
235
312
  description: 'Invalid verification code provided',
236
313
  metadata: {
237
314
  verificationTokenId: token.id,
@@ -241,6 +318,7 @@ class PhoneVerificationService {
241
318
  });
242
319
  }
243
320
  catch (auditError) {
321
+ // Non-blocking: Log but continue
244
322
  const errorMessage = auditError instanceof Error ? auditError.message : 'Unknown error';
245
323
  this.logger?.error?.(`Failed to record PHONE_VERIFICATION_FAILED audit event: ${errorMessage}`, {
246
324
  error: auditError,
@@ -251,19 +329,27 @@ class PhoneVerificationService {
251
329
  attemptsRemaining: Math.max(0, maxAttempts - token.attempts),
252
330
  });
253
331
  }
332
+ // Mark token used
254
333
  token.usedAt = new Date();
255
334
  await this.verificationTokenRepo.save(token);
335
+ // Update user flags
256
336
  await this.userRepo.update(user.id, {
257
337
  isPhoneVerified: true,
258
338
  isActive: true,
259
339
  });
260
340
  this.logger?.log?.(`Phone verification successful: userId=${user.id}, phone=${this.maskPhone(phone)}`);
341
+ // ============================================================================
342
+ // Audit: Record phone verification success
343
+ // ============================================================================
261
344
  try {
345
+ // Client info (ipAddress, userAgent) automatically extracted from ClientInfoService
346
+ // Note: ClientInfoService is used transparently by AuditService
262
347
  await this.auditService?.recordEvent({
263
348
  userId: user.id,
264
349
  eventType: auth_audit_event_type_enum_1.AuthAuditEventType.PHONE_VERIFIED,
265
350
  eventStatus: 'SUCCESS',
266
351
  metadata: {
352
+ // Client info automatically included from context
267
353
  verificationTokenId: token.id,
268
354
  verificationMethod: 'code',
269
355
  phone: this.maskPhone(phone),
@@ -271,6 +357,7 @@ class PhoneVerificationService {
271
357
  });
272
358
  }
273
359
  catch (auditError) {
360
+ // Non-blocking: Log but continue
274
361
  const errorMessage = auditError instanceof Error ? auditError.message : 'Unknown error';
275
362
  this.logger?.error?.(`Failed to record PHONE_VERIFIED audit event: ${errorMessage}`, {
276
363
  error: auditError,
@@ -279,8 +366,16 @@ class PhoneVerificationService {
279
366
  }
280
367
  return { message: 'Phone verified successfully. Please log in to continue.' };
281
368
  }
369
+ /**
370
+ * Verify phone by user sub and code.
371
+ *
372
+ * @param dto - Request DTO containing sub and code
373
+ * @returns Response DTO with success message
374
+ */
282
375
  async verifyPhoneWithCodeBySub(dto) {
283
376
  const { sub, code, challengeSessionId } = dto;
377
+ // Load user to get current phone verification status
378
+ // This ensures we have the latest state from the database
284
379
  const user = (await this.userRepo.findOne({ where: { sub } }));
285
380
  if (!user) {
286
381
  throw new nauth_exception_1.NAuthException(error_codes_enum_1.AuthErrorCode.NOT_FOUND, 'User not found');
@@ -288,23 +383,38 @@ class PhoneVerificationService {
288
383
  if (!user.phone) {
289
384
  throw new nauth_exception_1.NAuthException(error_codes_enum_1.AuthErrorCode.PHONE_REQUIRED, 'No phone number associated with this account');
290
385
  }
386
+ // Store initial verification status to avoid unnecessary updates
291
387
  const wasPhoneVerified = Boolean(user.isPhoneVerified);
388
+ // ============================================================================
389
+ // Security: Rate limit configuration
390
+ // IP-based rate limiting applies only to INVALID attempts to prevent brute force
391
+ // Valid codes should not be blocked by IP rate limits
392
+ // ============================================================================
292
393
  const maxAttemptsPerIP = this.config.signup?.phoneVerification?.maxAttemptsPerIP ?? 20;
293
- const attemptWindow = this.config.signup?.phoneVerification?.attemptWindow ?? 3600;
394
+ const attemptWindow = this.config.signup?.phoneVerification?.attemptWindow ?? 3600; // 1 hour
294
395
  const clientInfo = this.clientInfoService.get();
396
+ // Find verification token
397
+ // Query for unused tokens matching the code (order by newest first)
398
+ // Ensure code is a string (database stores as varchar/string)
399
+ // TypeORM may receive code as number from JSON, so convert to string for query
295
400
  const codeString = String(code);
296
401
  this.logger?.log?.(`Looking for verification token: sub=${sub}, code=${codeString}, codeType=${typeof code}, userId=${user.id}`);
402
+ // If challengeSessionId is provided, ensure token belongs to specific session
297
403
  const whereClause = {
298
404
  userId: user.id,
299
405
  type: 'phone',
300
406
  code: codeString,
301
407
  usedAt: (0, typeorm_1.IsNull)(),
302
- ...(challengeSessionId !== undefined && { challengeSessionId }),
408
+ ...(challengeSessionId !== undefined && { challengeSessionId }), // Include if provided
303
409
  };
304
410
  const verificationToken = (await this.verificationTokenRepo.findOne({
305
411
  where: whereClause,
306
412
  order: { createdAt: 'DESC' },
307
413
  }));
414
+ // ============================================================================
415
+ // Security: Increment IP rate limit for invalid attempts only
416
+ // This prevents brute force attacks while allowing valid codes through
417
+ // ============================================================================
308
418
  const incrementIPRateLimit = async () => {
309
419
  if (clientInfo.ipAddress) {
310
420
  const ipRateLimitKey = `verify-attempts:ip:${clientInfo.ipAddress}`;
@@ -319,6 +429,7 @@ class PhoneVerificationService {
319
429
  };
320
430
  if (!verificationToken) {
321
431
  this.logger?.warn?.(`Phone verification token not found: sub=${sub}, code=${codeString}, originalCodeType=${typeof code}, userId=${user.id}`);
432
+ // Invalid attempt - increment IP rate limit
322
433
  await incrementIPRateLimit();
323
434
  throw new nauth_exception_1.NAuthException(error_codes_enum_1.AuthErrorCode.VERIFICATION_CODE_INVALID, 'Invalid or expired verification code');
324
435
  }
@@ -326,6 +437,7 @@ class PhoneVerificationService {
326
437
  ? !!verificationToken.isExpired()
327
438
  : verificationToken.expiresAt.getTime() <= Date.now();
328
439
  if (isExpired) {
440
+ // Expired token - increment IP rate limit
329
441
  await incrementIPRateLimit();
330
442
  throw new nauth_exception_1.NAuthException(error_codes_enum_1.AuthErrorCode.VERIFICATION_CODE_EXPIRED, 'Verification code has expired');
331
443
  }
@@ -334,13 +446,20 @@ class PhoneVerificationService {
334
446
  ? !!verificationToken.maxAttemptsExceeded(maxAttempts)
335
447
  : verificationToken.attempts >= maxAttempts;
336
448
  if (tooManyAttempts) {
449
+ // Token exceeded max attempts - increment IP rate limit
337
450
  await incrementIPRateLimit();
338
451
  throw new nauth_exception_1.NAuthException(error_codes_enum_1.AuthErrorCode.VERIFICATION_TOO_MANY_ATTEMPTS, 'Too many failed attempts. Request a new code.', {
339
452
  maxAttempts,
340
453
  currentAttempts: verificationToken.attempts,
341
454
  });
342
455
  }
456
+ // ============================================================================
457
+ // Security: Rate limit verification attempts per user (for invalid attempts only)
458
+ // This prevents users from exhausting their own tokens through repeated attempts
459
+ // Valid codes should not be blocked by user rate limits
460
+ // ============================================================================
343
461
  const maxAttemptsPerUser = this.config.signup?.phoneVerification?.maxAttemptsPerUser ?? 10;
462
+ // Helper to increment user rate limit (only for invalid attempts)
344
463
  const incrementUserRateLimit = async () => {
345
464
  const userRateLimitKey = `verify-attempts:user:${user.id}`;
346
465
  const userAttempts = await this.storageAdapter.incr(userRateLimitKey);
@@ -352,19 +471,25 @@ class PhoneVerificationService {
352
471
  }
353
472
  };
354
473
  verificationToken.attempts += 1;
474
+ // Compare normalized codes (trim whitespace for comparison)
355
475
  const storedCode = String(verificationToken.code).trim();
356
476
  const providedCode = String(code).trim();
357
477
  if (storedCode !== providedCode) {
478
+ // Invalid code - increment both IP and user rate limits
358
479
  await incrementIPRateLimit();
359
480
  await incrementUserRateLimit();
360
481
  await this.verificationTokenRepo.save(verificationToken);
361
482
  this.logger?.debug?.(`Phone verification failed: sub=${sub}, attempts=${verificationToken.attempts}/${maxAttempts}`);
483
+ // ============================================================================
484
+ // Audit: Record phone verification failure (by sub)
485
+ // ============================================================================
362
486
  try {
363
487
  await this.auditService?.recordEvent({
364
488
  userId: user.id,
365
489
  eventType: auth_audit_event_type_enum_1.AuthAuditEventType.PHONE_VERIFICATION_FAILED,
366
490
  eventStatus: 'FAILURE',
367
491
  reason: 'invalid_code',
492
+ // Client info automatically included from context
368
493
  description: 'Invalid verification code provided',
369
494
  metadata: {
370
495
  verificationTokenId: verificationToken.id,
@@ -374,6 +499,7 @@ class PhoneVerificationService {
374
499
  });
375
500
  }
376
501
  catch (auditError) {
502
+ // Non-blocking: Log but continue
377
503
  const errorMessage = auditError instanceof Error ? auditError.message : 'Unknown error';
378
504
  this.logger?.error?.(`Failed to record PHONE_VERIFICATION_FAILED audit event (by sub): ${errorMessage}`, {
379
505
  error: auditError,
@@ -384,9 +510,20 @@ class PhoneVerificationService {
384
510
  attemptsRemaining: Math.max(0, maxAttempts - verificationToken.attempts),
385
511
  });
386
512
  }
513
+ // ============================================================================
514
+ // Code is valid - proceed without rate limit checks
515
+ // Valid codes should always be allowed through
516
+ // ============================================================================
387
517
  verificationToken.usedAt = new Date();
388
518
  await this.verificationTokenRepo.save(verificationToken);
519
+ // ============================================================================
520
+ // Only update user if phone is not already verified to avoid unnecessary DB write
521
+ // This prevents updating updatedAt timestamp when phone is already verified
522
+ // We use the verification status from when user was loaded at the start
523
+ // ============================================================================
389
524
  if (!wasPhoneVerified) {
525
+ // Use update() with explicit WHERE clause to ensure the change is persisted
526
+ // This bypasses entity tracking issues and ensures the update is committed
390
527
  await this.userRepo.update({ sub }, {
391
528
  isPhoneVerified: true,
392
529
  isActive: true,
@@ -394,14 +531,21 @@ class PhoneVerificationService {
394
531
  this.logger?.log?.(`Phone verification successful: sub=${sub}, userId=${user.id} - phone marked as verified`);
395
532
  }
396
533
  else {
534
+ // Phone already verified - just mark token as used, no user update needed
397
535
  this.logger?.log?.(`Phone verification code validated: sub=${sub}, userId=${user.id} - phone already verified`);
398
536
  }
537
+ // ============================================================================
538
+ // Audit: Record phone verification success (by sub)
539
+ // ============================================================================
399
540
  try {
541
+ // Client info (ipAddress, userAgent) automatically extracted from ClientInfoService
542
+ // Note: ClientInfoService is used transparently by AuditService
400
543
  await this.auditService?.recordEvent({
401
544
  userId: user.id,
402
545
  eventType: auth_audit_event_type_enum_1.AuthAuditEventType.PHONE_VERIFIED,
403
546
  eventStatus: 'SUCCESS',
404
547
  metadata: {
548
+ // Client info automatically included from context
405
549
  verificationTokenId: verificationToken.id,
406
550
  verificationMethod: 'code',
407
551
  phone: this.maskPhone(user.phone || ''),
@@ -409,6 +553,7 @@ class PhoneVerificationService {
409
553
  });
410
554
  }
411
555
  catch (auditError) {
556
+ // Non-blocking: Log but continue
412
557
  const errorMessage = auditError instanceof Error ? auditError.message : 'Unknown error';
413
558
  this.logger?.error?.(`Failed to record PHONE_VERIFIED audit event (by sub): ${errorMessage}`, {
414
559
  error: auditError,
@@ -417,7 +562,15 @@ class PhoneVerificationService {
417
562
  }
418
563
  return { message: 'Phone verified successfully. Please log in to continue.' };
419
564
  }
565
+ /**
566
+ * Resend verification SMS
567
+ * Supports both sub and phone-based resend
568
+ *
569
+ * @param dto - Request DTO containing sub or phone
570
+ * @returns Response DTO with verification token ID
571
+ */
420
572
  async resendVerificationSMS(dto) {
573
+ // Validate that either sub or phone is provided
421
574
  if (!dto.sub && !dto.phone) {
422
575
  throw new nauth_exception_1.NAuthException(error_codes_enum_1.AuthErrorCode.VALIDATION_FAILED, 'Either sub or phone must be provided');
423
576
  }
@@ -426,6 +579,12 @@ class PhoneVerificationService {
426
579
  }
427
580
  return this.resendVerificationSMSForPhone(dto.phone);
428
581
  }
582
+ /**
583
+ * Resend verification SMS by user sub (private helper)
584
+ *
585
+ * @param sub - External user identifier
586
+ * @returns New verification token id
587
+ */
429
588
  async resendVerificationSMSBySub(sub) {
430
589
  const user = (await this.userRepo.findOne({ where: { sub } }));
431
590
  if (!user) {
@@ -448,6 +607,7 @@ class PhoneVerificationService {
448
607
  }
449
608
  }
450
609
  this.logger?.debug?.(`Resending SMS verification code: sub=${sub}`);
610
+ // Preserve challengeSessionId from the last token to ensure verification succeeds
451
611
  const sendDto = Object.assign(new verify_phone_dto_1.SendVerificationSMSDTO(), {
452
612
  sub,
453
613
  challengeSessionId: lastToken?.challengeSessionId ?? undefined,
@@ -455,6 +615,12 @@ class PhoneVerificationService {
455
615
  const result = await this.sendVerificationSMS(sendDto);
456
616
  return { tokenId: result.tokenId };
457
617
  }
618
+ /**
619
+ * Resend verification SMS by phone number (private helper)
620
+ *
621
+ * @param phone - Phone number
622
+ * @returns New verification token id
623
+ */
458
624
  async resendVerificationSMSForPhone(phone) {
459
625
  const user = (await this.userRepo.findOne({ where: { phone } }));
460
626
  if (!user) {
@@ -465,18 +631,34 @@ class PhoneVerificationService {
465
631
  }
466
632
  return this.resendVerificationSMSBySub(user.sub);
467
633
  }
634
+ // ============================================================================
635
+ // Helpers
636
+ // ============================================================================
637
+ /**
638
+ * Generate N-digit OTP code (default 6)
639
+ */
468
640
  generateCode() {
469
641
  const codeLength = this.config.signup?.phoneVerification?.codeLength || 6;
470
642
  const min = Math.pow(10, codeLength - 1);
471
643
  const max = Math.pow(10, codeLength) - 1;
472
644
  return Math.floor(min + Math.random() * (max - min + 1)).toString();
473
645
  }
646
+ /**
647
+ * Generate secure random token
648
+ */
474
649
  generateToken() {
475
650
  return crypto.randomBytes(32).toString('hex');
476
651
  }
652
+ /**
653
+ * Hash token with SHA-256
654
+ */
477
655
  hashToken(token) {
478
656
  return crypto.createHash('sha256').update(token).digest('hex');
479
657
  }
658
+ /**
659
+ * Mask phone number for logging (preserves last 4 digits)
660
+ * @private
661
+ */
480
662
  maskPhone(phone) {
481
663
  if (!phone || phone.length < 4)
482
664
  return '***';
@@ -1 +1 @@
1
- {"version":3,"file":"phone-verification.service.js","sourceRoot":"","sources":["../../src/services/phone-verification.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"phone-verification.service.js","sourceRoot":"","sources":["../../src/services/phone-verification.service.ts"],"names":[],"mappings":"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"}