@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
@@ -1,9 +1,95 @@
1
1
  import { ISocialAuthProviderService } from '../interfaces/social-auth-provider.interface';
2
+ /**
3
+ * Social Provider Registry (Internal)
4
+ *
5
+ * Internal registry service for managing social authentication providers.
6
+ * This is an implementation detail used by SocialAuthService and provider modules.
7
+ *
8
+ * **Note:** This is an internal service. Consumer applications should use
9
+ * `SocialAuthService` instead, which provides a high-level API for social authentication.
10
+ *
11
+ * **Key Features:**
12
+ * - Dynamic provider registration without hardcoded names
13
+ * - Provider lookup by name
14
+ * - Auto-registration when provider modules are imported
15
+ *
16
+ * **How it works:**
17
+ * Provider modules (Google, Apple, Facebook, etc.) automatically register themselves
18
+ * with this registry using OnModuleInit when their modules are imported.
19
+ *
20
+ * @internal
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * // Provider modules auto-register
25
+ * onModuleInit() {
26
+ * this.providerRegistry.registerProvider(this);
27
+ * }
28
+ *
29
+ * // SocialAuthService uses the registry internally
30
+ * const provider = this.providerRegistry.getProvider('google');
31
+ * ```
32
+ */
2
33
  export declare class SocialProviderRegistry {
3
34
  private readonly providers;
35
+ /**
36
+ * Register a social auth provider
37
+ *
38
+ * Called automatically by provider modules during initialization.
39
+ * Provider names must be unique.
40
+ *
41
+ * @param provider - Provider service instance (must have providerName property)
42
+ *
43
+ * @example
44
+ * ```typescript
45
+ * // In provider module OnModuleInit:
46
+ * constructor(private providerRegistry: SocialProviderRegistry) {}
47
+ *
48
+ * onModuleInit() {
49
+ * this.providerRegistry.registerProvider(this);
50
+ * }
51
+ * ```
52
+ */
4
53
  registerProvider(provider: ISocialAuthProviderService): void;
54
+ /**
55
+ * Get a provider by name
56
+ *
57
+ * @param name - Provider name (e.g., 'google', 'apple', 'facebook')
58
+ * @returns Provider service instance
59
+ * @throws {NAuthException} If provider is not registered
60
+ *
61
+ * @example
62
+ * ```typescript
63
+ * const googleProvider = this.providerRegistry.getProvider('google');
64
+ * const authUrl = await googleProvider.getAuthUrl();
65
+ * ```
66
+ */
5
67
  getProvider(name: string): ISocialAuthProviderService;
68
+ /**
69
+ * Check if a provider is registered
70
+ *
71
+ * @param name - Provider name
72
+ * @returns True if provider exists
73
+ *
74
+ * @example
75
+ * ```typescript
76
+ * if (this.providerRegistry.hasProvider('github')) {
77
+ * // Use GitHub provider
78
+ * }
79
+ * ```
80
+ */
6
81
  hasProvider(name: string): boolean;
82
+ /**
83
+ * Get all registered provider names
84
+ *
85
+ * @returns Array of provider names
86
+ *
87
+ * @example
88
+ * ```typescript
89
+ * const providers = this.providerRegistry.listProviders();
90
+ * // ['google', 'apple', 'facebook']
91
+ * ```
92
+ */
7
93
  listProviders(): string[];
8
94
  }
9
95
  //# sourceMappingURL=social-provider-registry.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"social-provider-registry.service.d.ts","sourceRoot":"","sources":["../../src/services/social-provider-registry.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,8CAA8C,CAAC;AAmC1F,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiD;IAoB3E,gBAAgB,CAAC,QAAQ,EAAE,0BAA0B,GAAG,IAAI;IAuB5D,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,0BAA0B;IAwBrD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAelC,aAAa,IAAI,MAAM,EAAE;CAG1B"}
1
+ {"version":3,"file":"social-provider-registry.service.d.ts","sourceRoot":"","sources":["../../src/services/social-provider-registry.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,8CAA8C,CAAC;AAI1F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiD;IAE3E;;;;;;;;;;;;;;;;;OAiBG;IACH,gBAAgB,CAAC,QAAQ,EAAE,0BAA0B,GAAG,IAAI;IAU5D;;;;;;;;;;;;OAYG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,0BAA0B;IAWrD;;;;;;;;;;;;OAYG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIlC;;;;;;;;;;OAUG;IACH,aAAa,IAAI,MAAM,EAAE;CAG1B"}
@@ -3,8 +3,57 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SocialProviderRegistry = void 0;
4
4
  const nauth_exception_1 = require("../exceptions/nauth.exception");
5
5
  const error_codes_enum_1 = require("../enums/error-codes.enum");
6
+ /**
7
+ * Social Provider Registry (Internal)
8
+ *
9
+ * Internal registry service for managing social authentication providers.
10
+ * This is an implementation detail used by SocialAuthService and provider modules.
11
+ *
12
+ * **Note:** This is an internal service. Consumer applications should use
13
+ * `SocialAuthService` instead, which provides a high-level API for social authentication.
14
+ *
15
+ * **Key Features:**
16
+ * - Dynamic provider registration without hardcoded names
17
+ * - Provider lookup by name
18
+ * - Auto-registration when provider modules are imported
19
+ *
20
+ * **How it works:**
21
+ * Provider modules (Google, Apple, Facebook, etc.) automatically register themselves
22
+ * with this registry using OnModuleInit when their modules are imported.
23
+ *
24
+ * @internal
25
+ *
26
+ * @example
27
+ * ```typescript
28
+ * // Provider modules auto-register
29
+ * onModuleInit() {
30
+ * this.providerRegistry.registerProvider(this);
31
+ * }
32
+ *
33
+ * // SocialAuthService uses the registry internally
34
+ * const provider = this.providerRegistry.getProvider('google');
35
+ * ```
36
+ */
6
37
  class SocialProviderRegistry {
7
38
  providers = new Map();
39
+ /**
40
+ * Register a social auth provider
41
+ *
42
+ * Called automatically by provider modules during initialization.
43
+ * Provider names must be unique.
44
+ *
45
+ * @param provider - Provider service instance (must have providerName property)
46
+ *
47
+ * @example
48
+ * ```typescript
49
+ * // In provider module OnModuleInit:
50
+ * constructor(private providerRegistry: SocialProviderRegistry) {}
51
+ *
52
+ * onModuleInit() {
53
+ * this.providerRegistry.registerProvider(this);
54
+ * }
55
+ * ```
56
+ */
8
57
  registerProvider(provider) {
9
58
  const name = provider.providerName;
10
59
  if (this.providers.has(name)) {
@@ -12,6 +61,19 @@ class SocialProviderRegistry {
12
61
  }
13
62
  this.providers.set(name, provider);
14
63
  }
64
+ /**
65
+ * Get a provider by name
66
+ *
67
+ * @param name - Provider name (e.g., 'google', 'apple', 'facebook')
68
+ * @returns Provider service instance
69
+ * @throws {NAuthException} If provider is not registered
70
+ *
71
+ * @example
72
+ * ```typescript
73
+ * const googleProvider = this.providerRegistry.getProvider('google');
74
+ * const authUrl = await googleProvider.getAuthUrl();
75
+ * ```
76
+ */
15
77
  getProvider(name) {
16
78
  const provider = this.providers.get(name);
17
79
  if (!provider) {
@@ -19,9 +81,33 @@ class SocialProviderRegistry {
19
81
  }
20
82
  return provider;
21
83
  }
84
+ /**
85
+ * Check if a provider is registered
86
+ *
87
+ * @param name - Provider name
88
+ * @returns True if provider exists
89
+ *
90
+ * @example
91
+ * ```typescript
92
+ * if (this.providerRegistry.hasProvider('github')) {
93
+ * // Use GitHub provider
94
+ * }
95
+ * ```
96
+ */
22
97
  hasProvider(name) {
23
98
  return this.providers.has(name);
24
99
  }
100
+ /**
101
+ * Get all registered provider names
102
+ *
103
+ * @returns Array of provider names
104
+ *
105
+ * @example
106
+ * ```typescript
107
+ * const providers = this.providerRegistry.listProviders();
108
+ * // ['google', 'apple', 'facebook']
109
+ * ```
110
+ */
25
111
  listProviders() {
26
112
  return Array.from(this.providers.keys());
27
113
  }
@@ -1 +1 @@
1
- {"version":3,"file":"social-provider-registry.service.js","sourceRoot":"","sources":["../../src/services/social-provider-registry.service.ts"],"names":[],"mappings":";;;AACA,mEAA+D;AAC/D,gEAA0D;AAiC1D,MAAa,sBAAsB;IAChB,SAAS,GAAG,IAAI,GAAG,EAAsC,CAAC;IAoB3E,gBAAgB,CAAC,QAAoC;QACnD,MAAM,IAAI,GAAG,QAAQ,CAAC,YAAY,CAAC;QAEnC,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,gCAAc,CAAC,gCAAa,CAAC,iBAAiB,EAAE,yBAAyB,IAAI,yBAAyB,CAAC,CAAC;QACpH,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACrC,CAAC;IAeD,WAAW,CAAC,IAAY;QACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,gCAAc,CACtB,gCAAa,CAAC,qBAAqB,EACnC,yBAAyB,IAAI,qHAAqH,CACnJ,CAAC;QACJ,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAeD,WAAW,CAAC,IAAY;QACtB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAaD,aAAa;QACX,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC;CACF;AAtFD,wDAsFC"}
1
+ {"version":3,"file":"social-provider-registry.service.js","sourceRoot":"","sources":["../../src/services/social-provider-registry.service.ts"],"names":[],"mappings":";;;AACA,mEAA+D;AAC/D,gEAA0D;AAE1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAa,sBAAsB;IAChB,SAAS,GAAG,IAAI,GAAG,EAAsC,CAAC;IAE3E;;;;;;;;;;;;;;;;;OAiBG;IACH,gBAAgB,CAAC,QAAoC;QACnD,MAAM,IAAI,GAAG,QAAQ,CAAC,YAAY,CAAC;QAEnC,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,gCAAc,CAAC,gCAAa,CAAC,iBAAiB,EAAE,yBAAyB,IAAI,yBAAyB,CAAC,CAAC;QACpH,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACrC,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,WAAW,CAAC,IAAY;QACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,gCAAc,CACtB,gCAAa,CAAC,qBAAqB,EACnC,yBAAyB,IAAI,qHAAqH,CACnJ,CAAC;QACJ,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,WAAW,CAAC,IAAY;QACtB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED;;;;;;;;;;OAUG;IACH,aAAa;QACX,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC;CACF;AAtFD,wDAsFC"}
@@ -2,19 +2,119 @@ import { Repository } from 'typeorm';
2
2
  import { NAuthConfig } from '../interfaces/config.interface';
3
3
  import { NAuthLogger } from '../utils/nauth-logger';
4
4
  import { BaseTrustedDevice } from '../entities/trusted-device.entity';
5
+ /**
6
+ * Trusted Device Service
7
+ *
8
+ * Manages device trust for "remember device" feature.
9
+ * Devices can be trusted after successful MFA verification, allowing
10
+ * users to skip MFA for a configured period (rememberDeviceDays).
11
+ *
12
+ * Security:
13
+ * - Device tokens are server-generated UUIDs
14
+ * - Only hash stored in database (SHA-256)
15
+ * - Tokens persist across logouts and session expiry
16
+ * - Independent of refresh token lifecycle
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * // Mark device as trusted after MFA
21
+ * const deviceToken = await trustedDeviceService.createTrustedDevice(
22
+ * userId,
23
+ * deviceName,
24
+ * deviceType,
25
+ * ipAddress,
26
+ * userAgent,
27
+ * platform,
28
+ * browser
29
+ * );
30
+ *
31
+ * // Check if device is trusted
32
+ * const isTrusted = await trustedDeviceService.isDeviceTrusted(
33
+ * deviceToken,
34
+ * userId
35
+ * );
36
+ * ```
37
+ */
5
38
  export declare class TrustedDeviceService {
6
39
  private readonly config;
7
40
  private readonly logger;
8
41
  private readonly trustedDeviceRepository?;
9
42
  constructor(config: NAuthConfig, logger: NAuthLogger, trustedDeviceRepository?: Repository<BaseTrustedDevice> | undefined);
43
+ /**
44
+ * Create trusted device record
45
+ *
46
+ * Generates a secure device token, stores its hash in database,
47
+ * and returns the plain token for client storage.
48
+ *
49
+ * @param userId - Internal user ID
50
+ * @param deviceName - Optional device name
51
+ * @param deviceType - Optional device type (mobile/desktop/tablet)
52
+ * @param ipAddress - IP address when device was trusted
53
+ * @param userAgent - User agent string
54
+ * @param platform - Platform from user agent
55
+ * @param browser - Browser from user agent
56
+ * @returns Device token (UUID) to be stored by client
57
+ *
58
+ * @throws {Error} If rememberDevice is not enabled or repository not available
59
+ */
10
60
  createTrustedDevice(userId: number, deviceName?: string | null, deviceType?: string | null, ipAddress?: string | null, userAgent?: string | null, platform?: string | null, browser?: string | null): Promise<string>;
61
+ /**
62
+ * Check if device is trusted
63
+ *
64
+ * Validates device token against trusted devices table.
65
+ * Updates lastUsedAt if device is found and valid.
66
+ *
67
+ * Security:
68
+ * - Returns false for invalid/tampered tokens (silent - MFA required)
69
+ * - Detection of tampered tokens should be handled by caller for audit logging
70
+ *
71
+ * @param deviceToken - Device token from client (plain UUID)
72
+ * @param userId - Internal user ID
73
+ * @returns True if device is trusted and not expired
74
+ */
11
75
  isDeviceTrusted(deviceToken: string | null | undefined, userId: number): Promise<boolean>;
76
+ /**
77
+ * Validate device token and detect tampering attempts
78
+ *
79
+ * Checks if device token is valid and returns validation result.
80
+ * Used to detect suspicious tampered/fake token attempts for audit logging.
81
+ *
82
+ * @param deviceToken - Device token from client (can be null/undefined)
83
+ * @param userId - Internal user ID
84
+ * @returns Validation result with suspicious flag
85
+ */
12
86
  validateDeviceToken(deviceToken: string | null | undefined, userId: number): Promise<{
13
87
  isValid: boolean;
14
88
  isSuspicious: boolean;
15
89
  }>;
90
+ /**
91
+ * Revoke trusted device
92
+ *
93
+ * Removes device from trusted devices table.
94
+ * Used when user explicitly untrusts a device.
95
+ *
96
+ * @param deviceToken - Device token to revoke
97
+ * @param userId - Internal user ID
98
+ */
16
99
  revokeTrustedDevice(deviceToken: string, userId: number): Promise<void>;
100
+ /**
101
+ * Get user's trusted devices
102
+ *
103
+ * Returns list of trusted devices for management UI.
104
+ *
105
+ * @param userId - Internal user ID
106
+ * @returns Array of trusted device records (without tokens)
107
+ */
17
108
  getUserTrustedDevices(userId: number): Promise<Omit<BaseTrustedDevice, 'deviceTokenHash'>[]>;
109
+ /**
110
+ * Revoke all trusted devices for a user
111
+ *
112
+ * Removes all trusted devices for the user.
113
+ * Used when user performs global logout with forgetDevices flag.
114
+ *
115
+ * @param userId - Internal user ID
116
+ * @returns Object containing count and device information before deletion
117
+ */
18
118
  revokeAllTrustedDevices(userId: number): Promise<{
19
119
  revokedCount: number;
20
120
  devices: Array<{
@@ -24,6 +124,11 @@ export declare class TrustedDeviceService {
24
124
  trustedUntil: Date | null;
25
125
  }>;
26
126
  }>;
127
+ /**
128
+ * Hash device token (SHA-256)
129
+ *
130
+ * @private
131
+ */
27
132
  private hashDeviceToken;
28
133
  }
29
134
  //# sourceMappingURL=trusted-device.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"trusted-device.service.d.ts","sourceRoot":"","sources":["../../src/services/trusted-device.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAmCtE,qBAAa,oBAAoB;IAE7B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC;gBAFxB,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,WAAW,EACnB,uBAAuB,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,YAAA;IAoBpE,mBAAmB,CACvB,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,EAC1B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,EAC1B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,EACzB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,EACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,EACxB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GACtB,OAAO,CAAC,MAAM,CAAC;IAqFZ,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA2DzF,mBAAmB,CACvB,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACtC,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE,CAAC;IAwBjD,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBvE,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,EAAE,CAAC;IA8B5F,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QACrD,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,KAAK,CAAC;YACb,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;YACpB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;YAC1B,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;YACxB,YAAY,EAAE,IAAI,GAAG,IAAI,CAAC;SAC3B,CAAC,CAAC;KACJ,CAAC;IAiCF,OAAO,CAAC,eAAe;CAGxB"}
1
+ {"version":3,"file":"trusted-device.service.d.ts","sourceRoot":"","sources":["../../src/services/trusted-device.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAEtE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,qBAAa,oBAAoB;IAE7B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC;gBAFxB,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,WAAW,EACnB,uBAAuB,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,YAAA;IAG1E;;;;;;;;;;;;;;;;OAgBG;IACG,mBAAmB,CACvB,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,EAC1B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,EAC1B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,EACzB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,EACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,EACxB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GACtB,OAAO,CAAC,MAAM,CAAC;IAuElB;;;;;;;;;;;;;OAaG;IACG,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAiD/F;;;;;;;;;OASG;IACG,mBAAmB,CACvB,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACtC,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE,CAAC;IAevD;;;;;;;;OAQG;IACG,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAc7E;;;;;;;OAOG;IACG,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,EAAE,CAAC;IAqBlG;;;;;;;;OAQG;IACG,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QACrD,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,KAAK,CAAC;YACb,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;YACpB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;YAC1B,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;YACxB,YAAY,EAAE,IAAI,GAAG,IAAI,CAAC;SAC3B,CAAC,CAAC;KACJ,CAAC;IA4BF;;;;OAIG;IACH,OAAO,CAAC,eAAe;CAGxB"}
@@ -35,6 +35,39 @@ var __importStar = (this && this.__importStar) || (function () {
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.TrustedDeviceService = void 0;
37
37
  const crypto_1 = require("crypto");
38
+ /**
39
+ * Trusted Device Service
40
+ *
41
+ * Manages device trust for "remember device" feature.
42
+ * Devices can be trusted after successful MFA verification, allowing
43
+ * users to skip MFA for a configured period (rememberDeviceDays).
44
+ *
45
+ * Security:
46
+ * - Device tokens are server-generated UUIDs
47
+ * - Only hash stored in database (SHA-256)
48
+ * - Tokens persist across logouts and session expiry
49
+ * - Independent of refresh token lifecycle
50
+ *
51
+ * @example
52
+ * ```typescript
53
+ * // Mark device as trusted after MFA
54
+ * const deviceToken = await trustedDeviceService.createTrustedDevice(
55
+ * userId,
56
+ * deviceName,
57
+ * deviceType,
58
+ * ipAddress,
59
+ * userAgent,
60
+ * platform,
61
+ * browser
62
+ * );
63
+ *
64
+ * // Check if device is trusted
65
+ * const isTrusted = await trustedDeviceService.isDeviceTrusted(
66
+ * deviceToken,
67
+ * userId
68
+ * );
69
+ * ```
70
+ */
38
71
  class TrustedDeviceService {
39
72
  config;
40
73
  logger;
@@ -44,6 +77,23 @@ class TrustedDeviceService {
44
77
  this.logger = logger;
45
78
  this.trustedDeviceRepository = trustedDeviceRepository;
46
79
  }
80
+ /**
81
+ * Create trusted device record
82
+ *
83
+ * Generates a secure device token, stores its hash in database,
84
+ * and returns the plain token for client storage.
85
+ *
86
+ * @param userId - Internal user ID
87
+ * @param deviceName - Optional device name
88
+ * @param deviceType - Optional device type (mobile/desktop/tablet)
89
+ * @param ipAddress - IP address when device was trusted
90
+ * @param userAgent - User agent string
91
+ * @param platform - Platform from user agent
92
+ * @param browser - Browser from user agent
93
+ * @returns Device token (UUID) to be stored by client
94
+ *
95
+ * @throws {Error} If rememberDevice is not enabled or repository not available
96
+ */
47
97
  async createTrustedDevice(userId, deviceName, deviceType, ipAddress, userAgent, platform, browser) {
48
98
  if (!this.config.mfa?.rememberDevices || this.config.mfa.rememberDevices === 'never') {
49
99
  throw new Error('rememberDevices is not enabled in configuration');
@@ -52,12 +102,17 @@ class TrustedDeviceService {
52
102
  this.logger?.warn?.('TrustedDeviceRepository not available - trusted device feature disabled');
53
103
  throw new Error('TrustedDeviceRepository not available');
54
104
  }
105
+ // Generate secure device token (UUID v4)
55
106
  const crypto = await Promise.resolve().then(() => __importStar(require('crypto')));
56
107
  const deviceToken = crypto.randomUUID();
108
+ // Hash token for storage (SHA-256)
57
109
  const deviceTokenHash = this.hashDeviceToken(deviceToken);
110
+ // Calculate expiry (now + rememberDeviceDays)
111
+ // Only applicable if rememberDevices is not 'never'
58
112
  const rememberDeviceDays = this.config.mfa.rememberDeviceDays || 30;
59
113
  const trustedUntil = new Date();
60
114
  trustedUntil.setDate(trustedUntil.getDate() + rememberDeviceDays);
115
+ // Check if device already trusted (by hash)
61
116
  const existing = await this.trustedDeviceRepository.findOne({
62
117
  where: {
63
118
  userId,
@@ -65,6 +120,7 @@ class TrustedDeviceService {
65
120
  },
66
121
  });
67
122
  if (existing) {
123
+ // Update existing record
68
124
  await this.trustedDeviceRepository.update({ userId, deviceTokenHash }, {
69
125
  trustedUntil,
70
126
  lastUsedAt: new Date(),
@@ -78,10 +134,11 @@ class TrustedDeviceService {
78
134
  this.logger?.debug?.(`Updated trusted device for user ${userId}`);
79
135
  return deviceToken;
80
136
  }
137
+ // Create new trusted device record
81
138
  const trustedDevice = this.trustedDeviceRepository.create({
82
139
  userId,
83
140
  deviceTokenHash,
84
- deviceId: null,
141
+ deviceId: null, // Not used, kept for backward compatibility
85
142
  deviceName: deviceName || null,
86
143
  deviceType: deviceType || null,
87
144
  ipAddress: ipAddress || null,
@@ -95,6 +152,20 @@ class TrustedDeviceService {
95
152
  this.logger?.debug?.(`Created trusted device for user ${userId}, expires ${trustedUntil.toISOString()}`);
96
153
  return deviceToken;
97
154
  }
155
+ /**
156
+ * Check if device is trusted
157
+ *
158
+ * Validates device token against trusted devices table.
159
+ * Updates lastUsedAt if device is found and valid.
160
+ *
161
+ * Security:
162
+ * - Returns false for invalid/tampered tokens (silent - MFA required)
163
+ * - Detection of tampered tokens should be handled by caller for audit logging
164
+ *
165
+ * @param deviceToken - Device token from client (plain UUID)
166
+ * @param userId - Internal user ID
167
+ * @returns True if device is trusted and not expired
168
+ */
98
169
  async isDeviceTrusted(deviceToken, userId) {
99
170
  if (!deviceToken || !this.trustedDeviceRepository) {
100
171
  return false;
@@ -102,7 +173,9 @@ class TrustedDeviceService {
102
173
  if (!this.config.mfa?.rememberDevices || this.config.mfa.rememberDevices === 'never') {
103
174
  return false;
104
175
  }
176
+ // Hash token for lookup
105
177
  const deviceTokenHash = this.hashDeviceToken(deviceToken);
178
+ // Find trusted device
106
179
  const trustedDevice = await this.trustedDeviceRepository.findOne({
107
180
  where: {
108
181
  userId,
@@ -110,10 +183,14 @@ class TrustedDeviceService {
110
183
  },
111
184
  });
112
185
  if (!trustedDevice) {
186
+ // Device token not found - could be tampered/fake
187
+ // Caller should check if token was provided and audit suspicious activity
113
188
  return false;
114
189
  }
190
+ // Check if trust has expired
115
191
  const trustedUntil = trustedDevice.trustedUntil;
116
192
  if (new Date() > new Date(trustedUntil)) {
193
+ // Trust expired - delete record
117
194
  await this.trustedDeviceRepository.delete({
118
195
  userId,
119
196
  deviceTokenHash,
@@ -121,6 +198,7 @@ class TrustedDeviceService {
121
198
  this.logger?.debug?.(`Trusted device expired for user ${userId}`);
122
199
  return false;
123
200
  }
201
+ // Update lastUsedAt with throttling to reduce write load
124
202
  const lastUsedAt = trustedDevice.lastUsedAt;
125
203
  const now = new Date();
126
204
  const fifteenMinutesMs = 15 * 60 * 1000;
@@ -129,14 +207,36 @@ class TrustedDeviceService {
129
207
  }
130
208
  return true;
131
209
  }
210
+ /**
211
+ * Validate device token and detect tampering attempts
212
+ *
213
+ * Checks if device token is valid and returns validation result.
214
+ * Used to detect suspicious tampered/fake token attempts for audit logging.
215
+ *
216
+ * @param deviceToken - Device token from client (can be null/undefined)
217
+ * @param userId - Internal user ID
218
+ * @returns Validation result with suspicious flag
219
+ */
132
220
  async validateDeviceToken(deviceToken, userId) {
221
+ // No token provided - not suspicious (user just doesn't have trusted device)
133
222
  if (!deviceToken) {
134
223
  return { isValid: false, isSuspicious: false };
135
224
  }
225
+ // Check if trusted
136
226
  const isTrusted = await this.isDeviceTrusted(deviceToken, userId);
227
+ // If token was provided but not trusted, it's suspicious (tampered/fake)
137
228
  const isSuspicious = !isTrusted && deviceToken !== null && deviceToken !== undefined;
138
229
  return { isValid: isTrusted, isSuspicious };
139
230
  }
231
+ /**
232
+ * Revoke trusted device
233
+ *
234
+ * Removes device from trusted devices table.
235
+ * Used when user explicitly untrusts a device.
236
+ *
237
+ * @param deviceToken - Device token to revoke
238
+ * @param userId - Internal user ID
239
+ */
140
240
  async revokeTrustedDevice(deviceToken, userId) {
141
241
  if (!this.trustedDeviceRepository) {
142
242
  return;
@@ -148,6 +248,14 @@ class TrustedDeviceService {
148
248
  });
149
249
  this.logger?.debug?.(`Revoked trusted device for user ${userId}`);
150
250
  }
251
+ /**
252
+ * Get user's trusted devices
253
+ *
254
+ * Returns list of trusted devices for management UI.
255
+ *
256
+ * @param userId - Internal user ID
257
+ * @returns Array of trusted device records (without tokens)
258
+ */
151
259
  async getUserTrustedDevices(userId) {
152
260
  if (!this.trustedDeviceRepository) {
153
261
  return [];
@@ -156,32 +264,53 @@ class TrustedDeviceService {
156
264
  where: { userId },
157
265
  order: { lastUsedAt: 'DESC' },
158
266
  });
267
+ // Filter expired devices
159
268
  const now = new Date();
160
269
  const validDevices = devices.filter((d) => new Date(d.trustedUntil) > now);
270
+ // Return without sensitive data
161
271
  return validDevices.map((d) => {
162
272
  const { deviceTokenHash, ...rest } = d;
163
273
  return rest;
164
274
  });
165
275
  }
276
+ /**
277
+ * Revoke all trusted devices for a user
278
+ *
279
+ * Removes all trusted devices for the user.
280
+ * Used when user performs global logout with forgetDevices flag.
281
+ *
282
+ * @param userId - Internal user ID
283
+ * @returns Object containing count and device information before deletion
284
+ */
166
285
  async revokeAllTrustedDevices(userId) {
167
286
  if (!this.trustedDeviceRepository) {
168
287
  return { revokedCount: 0, devices: [] };
169
288
  }
289
+ // Get devices before deletion for audit logging
170
290
  const devices = await this.trustedDeviceRepository.find({
171
291
  where: { userId },
172
292
  order: { lastUsedAt: 'DESC' },
173
293
  });
294
+ // Extract device information (without sensitive token hash)
295
+ // Note: ipAddress, browser, platform, deviceType are automatically captured by audit service via client info
296
+ // Only include unique identifiers and historical timestamps
174
297
  const deviceInfo = devices.map((d) => ({
175
298
  id: d.id,
176
- deviceName: d.deviceName ?? null,
177
- lastUsedAt: d.lastUsedAt ?? null,
178
- trustedUntil: d.trustedUntil ?? null,
299
+ deviceName: d.deviceName ?? null, // User-given name (may differ from current device name)
300
+ lastUsedAt: d.lastUsedAt ?? null, // Historical timestamp
301
+ trustedUntil: d.trustedUntil ?? null, // Expiry date
179
302
  }));
303
+ // Delete all devices
180
304
  const result = await this.trustedDeviceRepository.delete({ userId });
181
305
  const deletedCount = typeof result.affected === 'number' ? result.affected : 0;
182
306
  this.logger?.debug?.(`Revoked ${deletedCount} trusted device(s) for user ${userId}`);
183
307
  return { revokedCount: deletedCount, devices: deviceInfo };
184
308
  }
309
+ /**
310
+ * Hash device token (SHA-256)
311
+ *
312
+ * @private
313
+ */
185
314
  hashDeviceToken(token) {
186
315
  return (0, crypto_1.createHash)('sha256').update(token).digest('hex');
187
316
  }
@@ -1 +1 @@
1
- {"version":3,"file":"trusted-device.service.js","sourceRoot":"","sources":["../../src/services/trusted-device.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trusted-device.service.js","sourceRoot":"","sources":["../../src/services/trusted-device.service.ts"],"names":[],"mappings":"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"}