@digitaldefiance/node-express-suite 4.22.2 → 4.23.1

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 (441) hide show
  1. package/README.md +173 -407
  2. package/package.json +1 -5
  3. package/src/__tests__/fixtures/index.d.ts +1 -1
  4. package/src/__tests__/fixtures/index.d.ts.map +1 -1
  5. package/src/__tests__/fixtures/index.js +1 -2
  6. package/src/__tests__/fixtures/index.js.map +1 -1
  7. package/src/__tests__/helpers/index.d.ts +1 -3
  8. package/src/__tests__/helpers/index.d.ts.map +1 -1
  9. package/src/__tests__/helpers/index.js +1 -4
  10. package/src/__tests__/helpers/index.js.map +1 -1
  11. package/src/__tests__/index.d.ts.map +1 -1
  12. package/src/__tests__/index.js +1 -0
  13. package/src/__tests__/index.js.map +1 -1
  14. package/src/application.d.ts +8 -11
  15. package/src/application.d.ts.map +1 -1
  16. package/src/application.js +8 -17
  17. package/src/application.js.map +1 -1
  18. package/src/branded-responses/branded-api-responses.d.ts +10 -2
  19. package/src/branded-responses/branded-api-responses.d.ts.map +1 -1
  20. package/src/branded-responses/branded-api-responses.js +5 -0
  21. package/src/branded-responses/branded-api-responses.js.map +1 -1
  22. package/src/branded-responses/serializers.d.ts +4 -1
  23. package/src/branded-responses/serializers.d.ts.map +1 -1
  24. package/src/builders/index.d.ts +1 -1
  25. package/src/builders/index.d.ts.map +1 -1
  26. package/src/builders/index.js +1 -2
  27. package/src/builders/index.js.map +1 -1
  28. package/src/controllers/base.d.ts +5 -18
  29. package/src/controllers/base.d.ts.map +1 -1
  30. package/src/controllers/base.js +7 -62
  31. package/src/controllers/base.js.map +1 -1
  32. package/src/controllers/index.d.ts +1 -1
  33. package/src/controllers/index.d.ts.map +1 -1
  34. package/src/controllers/index.js +2 -1
  35. package/src/controllers/index.js.map +1 -1
  36. package/src/controllers/openapi.d.ts +3 -3
  37. package/src/controllers/openapi.d.ts.map +1 -1
  38. package/src/controllers/openapi.js.map +1 -1
  39. package/src/enumerations/index.d.ts +0 -2
  40. package/src/enumerations/index.d.ts.map +1 -1
  41. package/src/enumerations/index.js +0 -2
  42. package/src/enumerations/index.js.map +1 -1
  43. package/src/environment.d.ts +4 -3
  44. package/src/environment.d.ts.map +1 -1
  45. package/src/environment.js +3 -1
  46. package/src/environment.js.map +1 -1
  47. package/src/errors/index.d.ts +0 -3
  48. package/src/errors/index.d.ts.map +1 -1
  49. package/src/errors/index.js +0 -3
  50. package/src/errors/index.js.map +1 -1
  51. package/src/index.d.ts +1 -8
  52. package/src/index.d.ts.map +1 -1
  53. package/src/index.js +1 -11
  54. package/src/index.js.map +1 -1
  55. package/src/interfaces/controller-config.d.ts +1 -2
  56. package/src/interfaces/controller-config.d.ts.map +1 -1
  57. package/src/interfaces/document-store.d.ts +3 -2
  58. package/src/interfaces/document-store.d.ts.map +1 -1
  59. package/src/interfaces/document-store.js +3 -3
  60. package/src/interfaces/document-store.js.map +1 -1
  61. package/src/interfaces/documents/base.d.ts +24 -0
  62. package/src/interfaces/documents/base.d.ts.map +1 -0
  63. package/src/interfaces/documents/base.js +13 -0
  64. package/src/interfaces/documents/base.js.map +1 -0
  65. package/src/interfaces/documents/email-token.d.ts +15 -0
  66. package/src/interfaces/documents/email-token.d.ts.map +1 -0
  67. package/src/interfaces/documents/email-token.js +7 -0
  68. package/src/interfaces/{models → documents}/email-token.js.map +1 -1
  69. package/src/interfaces/documents/index.d.ts +25 -0
  70. package/src/interfaces/documents/index.d.ts.map +1 -0
  71. package/src/interfaces/documents/index.js +20 -0
  72. package/src/interfaces/documents/index.js.map +1 -0
  73. package/src/interfaces/documents/mnemonic.d.ts +15 -0
  74. package/src/interfaces/documents/mnemonic.d.ts.map +1 -0
  75. package/src/interfaces/documents/mnemonic.js +7 -0
  76. package/src/interfaces/{models → documents}/mnemonic.js.map +1 -1
  77. package/src/interfaces/documents/role.d.ts +15 -0
  78. package/src/interfaces/documents/role.d.ts.map +1 -0
  79. package/src/interfaces/documents/role.js +7 -0
  80. package/src/interfaces/{models → documents}/role.js.map +1 -1
  81. package/src/interfaces/documents/used-direct-login-token.d.ts +15 -0
  82. package/src/interfaces/documents/used-direct-login-token.d.ts.map +1 -0
  83. package/src/interfaces/documents/used-direct-login-token.js +7 -0
  84. package/src/interfaces/{models → documents}/used-direct-login-token.js.map +1 -1
  85. package/src/interfaces/documents/user-role.d.ts +15 -0
  86. package/src/interfaces/documents/user-role.d.ts.map +1 -0
  87. package/src/interfaces/documents/user-role.js +7 -0
  88. package/src/interfaces/{models → documents}/user-role.js.map +1 -1
  89. package/src/interfaces/documents/user.d.ts +16 -0
  90. package/src/interfaces/documents/user.d.ts.map +1 -0
  91. package/src/interfaces/documents/user.js +7 -0
  92. package/src/interfaces/{models → documents}/user.js.map +1 -1
  93. package/src/interfaces/environment.d.ts +3 -2
  94. package/src/interfaces/environment.d.ts.map +1 -1
  95. package/src/interfaces/index.d.ts +3 -10
  96. package/src/interfaces/index.d.ts.map +1 -1
  97. package/src/interfaces/index.js +3 -10
  98. package/src/interfaces/index.js.map +1 -1
  99. package/src/interfaces/jwt-service.d.ts +27 -0
  100. package/src/interfaces/jwt-service.d.ts.map +1 -0
  101. package/src/interfaces/jwt-service.js +10 -0
  102. package/src/interfaces/jwt-service.js.map +1 -0
  103. package/src/interfaces/role-service.d.ts +55 -0
  104. package/src/interfaces/role-service.d.ts.map +1 -0
  105. package/src/interfaces/role-service.js +10 -0
  106. package/src/interfaces/role-service.js.map +1 -0
  107. package/src/interfaces/server-init-result.d.ts +10 -18
  108. package/src/interfaces/server-init-result.d.ts.map +1 -1
  109. package/src/interfaces/server-init-result.js +4 -2
  110. package/src/interfaces/server-init-result.js.map +1 -1
  111. package/src/plugins/database-plugin.d.ts +12 -0
  112. package/src/plugins/database-plugin.d.ts.map +1 -1
  113. package/src/plugins/index.d.ts +0 -1
  114. package/src/plugins/index.d.ts.map +1 -1
  115. package/src/plugins/index.js +0 -1
  116. package/src/plugins/index.js.map +1 -1
  117. package/src/routers/index.d.ts +0 -1
  118. package/src/routers/index.d.ts.map +1 -1
  119. package/src/routers/index.js +0 -1
  120. package/src/routers/index.js.map +1 -1
  121. package/src/services/abstract-jwt-service.d.ts +34 -0
  122. package/src/services/abstract-jwt-service.d.ts.map +1 -0
  123. package/src/services/abstract-jwt-service.js +68 -0
  124. package/src/services/abstract-jwt-service.js.map +1 -0
  125. package/src/services/abstract-role-service.d.ts +61 -0
  126. package/src/services/abstract-role-service.d.ts.map +1 -0
  127. package/src/services/abstract-role-service.js +69 -0
  128. package/src/services/abstract-role-service.js.map +1 -0
  129. package/src/services/base.d.ts +10 -13
  130. package/src/services/base.d.ts.map +1 -1
  131. package/src/services/base.js +7 -21
  132. package/src/services/base.js.map +1 -1
  133. package/src/services/index.d.ts +2 -15
  134. package/src/services/index.d.ts.map +1 -1
  135. package/src/services/index.js +2 -15
  136. package/src/services/index.js.map +1 -1
  137. package/src/testing.d.ts +1 -1
  138. package/src/testing.d.ts.map +1 -1
  139. package/src/testing.js +1 -1
  140. package/src/testing.js.map +1 -1
  141. package/src/types.d.ts +6 -17
  142. package/src/types.d.ts.map +1 -1
  143. package/src/types.js.map +1 -1
  144. package/src/utils.d.ts +5 -34
  145. package/src/utils.d.ts.map +1 -1
  146. package/src/utils.js +24 -165
  147. package/src/utils.js.map +1 -1
  148. package/src/__tests__/fixtures/model-mocks.mock.d.ts +0 -12
  149. package/src/__tests__/fixtures/model-mocks.mock.d.ts.map +0 -1
  150. package/src/__tests__/fixtures/model-mocks.mock.js +0 -102
  151. package/src/__tests__/fixtures/model-mocks.mock.js.map +0 -1
  152. package/src/__tests__/helpers/application.mock.d.ts +0 -8
  153. package/src/__tests__/helpers/application.mock.d.ts.map +0 -1
  154. package/src/__tests__/helpers/application.mock.js +0 -85
  155. package/src/__tests__/helpers/application.mock.js.map +0 -1
  156. package/src/__tests__/helpers/setup-test-env.d.ts +0 -13
  157. package/src/__tests__/helpers/setup-test-env.d.ts.map +0 -1
  158. package/src/__tests__/helpers/setup-test-env.js +0 -133
  159. package/src/__tests__/helpers/setup-test-env.js.map +0 -1
  160. package/src/builders/application-builder.d.ts +0 -53
  161. package/src/builders/application-builder.d.ts.map +0 -1
  162. package/src/builders/application-builder.js +0 -91
  163. package/src/builders/application-builder.js.map +0 -1
  164. package/src/controllers/user.d.ts +0 -66
  165. package/src/controllers/user.d.ts.map +0 -1
  166. package/src/controllers/user.js +0 -949
  167. package/src/controllers/user.js.map +0 -1
  168. package/src/documents/base.d.ts +0 -15
  169. package/src/documents/base.d.ts.map +0 -1
  170. package/src/documents/base.js +0 -8
  171. package/src/documents/base.js.map +0 -1
  172. package/src/documents/email-token.d.ts +0 -15
  173. package/src/documents/email-token.d.ts.map +0 -1
  174. package/src/documents/email-token.js +0 -8
  175. package/src/documents/email-token.js.map +0 -1
  176. package/src/documents/index.d.ts +0 -8
  177. package/src/documents/index.d.ts.map +0 -1
  178. package/src/documents/index.js +0 -3
  179. package/src/documents/index.js.map +0 -1
  180. package/src/documents/mnemonic.d.ts +0 -16
  181. package/src/documents/mnemonic.d.ts.map +0 -1
  182. package/src/documents/mnemonic.js +0 -8
  183. package/src/documents/mnemonic.js.map +0 -1
  184. package/src/documents/role.d.ts +0 -15
  185. package/src/documents/role.d.ts.map +0 -1
  186. package/src/documents/role.js +0 -8
  187. package/src/documents/role.js.map +0 -1
  188. package/src/documents/used-direct-login-token.d.ts +0 -16
  189. package/src/documents/used-direct-login-token.d.ts.map +0 -1
  190. package/src/documents/used-direct-login-token.js +0 -8
  191. package/src/documents/used-direct-login-token.js.map +0 -1
  192. package/src/documents/user-role.d.ts +0 -16
  193. package/src/documents/user-role.d.ts.map +0 -1
  194. package/src/documents/user-role.js +0 -8
  195. package/src/documents/user-role.js.map +0 -1
  196. package/src/documents/user.d.ts +0 -16
  197. package/src/documents/user.d.ts.map +0 -1
  198. package/src/documents/user.js +0 -8
  199. package/src/documents/user.js.map +0 -1
  200. package/src/enumerations/base-model-name.d.ts +0 -43
  201. package/src/enumerations/base-model-name.d.ts.map +0 -1
  202. package/src/enumerations/base-model-name.js +0 -39
  203. package/src/enumerations/base-model-name.js.map +0 -1
  204. package/src/enumerations/schema-collection.d.ts +0 -39
  205. package/src/enumerations/schema-collection.d.ts.map +0 -1
  206. package/src/enumerations/schema-collection.js +0 -43
  207. package/src/enumerations/schema-collection.js.map +0 -1
  208. package/src/errors/invalid-model.d.ts +0 -18
  209. package/src/errors/invalid-model.d.ts.map +0 -1
  210. package/src/errors/invalid-model.js +0 -26
  211. package/src/errors/invalid-model.js.map +0 -1
  212. package/src/errors/model-not-registered.d.ts +0 -18
  213. package/src/errors/model-not-registered.d.ts.map +0 -1
  214. package/src/errors/model-not-registered.js +0 -26
  215. package/src/errors/model-not-registered.js.map +0 -1
  216. package/src/errors/mongoose-validation.d.ts +0 -28
  217. package/src/errors/mongoose-validation.d.ts.map +0 -1
  218. package/src/errors/mongoose-validation.js +0 -33
  219. package/src/errors/mongoose-validation.js.map +0 -1
  220. package/src/interfaces/api-mongo-validation-error-response.d.ts +0 -16
  221. package/src/interfaces/api-mongo-validation-error-response.d.ts.map +0 -1
  222. package/src/interfaces/api-mongo-validation-error-response.js +0 -8
  223. package/src/interfaces/api-mongo-validation-error-response.js.map +0 -1
  224. package/src/interfaces/database-init-result-tx.d.ts +0 -27
  225. package/src/interfaces/database-init-result-tx.d.ts.map +0 -1
  226. package/src/interfaces/database-init-result-tx.js +0 -3
  227. package/src/interfaces/database-init-result-tx.js.map +0 -1
  228. package/src/interfaces/db-init-result.d.ts +0 -16
  229. package/src/interfaces/db-init-result.d.ts.map +0 -1
  230. package/src/interfaces/db-init-result.js +0 -8
  231. package/src/interfaces/db-init-result.js.map +0 -1
  232. package/src/interfaces/discriminator-collections.d.ts +0 -17
  233. package/src/interfaces/discriminator-collections.d.ts.map +0 -1
  234. package/src/interfaces/discriminator-collections.js +0 -8
  235. package/src/interfaces/discriminator-collections.js.map +0 -1
  236. package/src/interfaces/environment-mongo.d.ts +0 -86
  237. package/src/interfaces/environment-mongo.d.ts.map +0 -1
  238. package/src/interfaces/environment-mongo.js +0 -8
  239. package/src/interfaces/environment-mongo.js.map +0 -1
  240. package/src/interfaces/models/email-token.d.ts +0 -12
  241. package/src/interfaces/models/email-token.d.ts.map +0 -1
  242. package/src/interfaces/models/email-token.js +0 -8
  243. package/src/interfaces/models/index.d.ts +0 -8
  244. package/src/interfaces/models/index.d.ts.map +0 -1
  245. package/src/interfaces/models/index.js +0 -11
  246. package/src/interfaces/models/index.js.map +0 -1
  247. package/src/interfaces/models/mnemonic.d.ts +0 -13
  248. package/src/interfaces/models/mnemonic.d.ts.map +0 -1
  249. package/src/interfaces/models/mnemonic.js +0 -8
  250. package/src/interfaces/models/role.d.ts +0 -12
  251. package/src/interfaces/models/role.d.ts.map +0 -1
  252. package/src/interfaces/models/role.js +0 -8
  253. package/src/interfaces/models/token-role.d.ts +0 -19
  254. package/src/interfaces/models/token-role.d.ts.map +0 -1
  255. package/src/interfaces/models/token-role.js +0 -8
  256. package/src/interfaces/models/token-role.js.map +0 -1
  257. package/src/interfaces/models/used-direct-login-token.d.ts +0 -19
  258. package/src/interfaces/models/used-direct-login-token.d.ts.map +0 -1
  259. package/src/interfaces/models/used-direct-login-token.js +0 -8
  260. package/src/interfaces/models/user-role.d.ts +0 -19
  261. package/src/interfaces/models/user-role.d.ts.map +0 -1
  262. package/src/interfaces/models/user-role.js +0 -8
  263. package/src/interfaces/models/user.d.ts +0 -21
  264. package/src/interfaces/models/user.d.ts.map +0 -1
  265. package/src/interfaces/models/user.js +0 -8
  266. package/src/interfaces/mongo-application.d.ts +0 -35
  267. package/src/interfaces/mongo-application.d.ts.map +0 -1
  268. package/src/interfaces/mongo-application.js +0 -10
  269. package/src/interfaces/mongo-application.js.map +0 -1
  270. package/src/interfaces/mongo-errors.d.ts +0 -13
  271. package/src/interfaces/mongo-errors.d.ts.map +0 -1
  272. package/src/interfaces/mongo-errors.js +0 -8
  273. package/src/interfaces/mongo-errors.js.map +0 -1
  274. package/src/interfaces/mongoose-document-store.d.ts +0 -42
  275. package/src/interfaces/mongoose-document-store.d.ts.map +0 -1
  276. package/src/interfaces/mongoose-document-store.js +0 -10
  277. package/src/interfaces/mongoose-document-store.js.map +0 -1
  278. package/src/interfaces/schema.d.ts +0 -37
  279. package/src/interfaces/schema.d.ts.map +0 -1
  280. package/src/interfaces/schema.js +0 -8
  281. package/src/interfaces/schema.js.map +0 -1
  282. package/src/interfaces/test-environment.d.ts +0 -22
  283. package/src/interfaces/test-environment.d.ts.map +0 -1
  284. package/src/interfaces/test-environment.js +0 -8
  285. package/src/interfaces/test-environment.js.map +0 -1
  286. package/src/model-registry.d.ts +0 -79
  287. package/src/model-registry.d.ts.map +0 -1
  288. package/src/model-registry.js +0 -97
  289. package/src/model-registry.js.map +0 -1
  290. package/src/models/email-token.d.ts +0 -24
  291. package/src/models/email-token.d.ts.map +0 -1
  292. package/src/models/email-token.js +0 -16
  293. package/src/models/email-token.js.map +0 -1
  294. package/src/models/index.d.ts +0 -7
  295. package/src/models/index.d.ts.map +0 -1
  296. package/src/models/index.js +0 -10
  297. package/src/models/index.js.map +0 -1
  298. package/src/models/mnemonic.d.ts +0 -24
  299. package/src/models/mnemonic.d.ts.map +0 -1
  300. package/src/models/mnemonic.js +0 -27
  301. package/src/models/mnemonic.js.map +0 -1
  302. package/src/models/role.d.ts +0 -24
  303. package/src/models/role.d.ts.map +0 -1
  304. package/src/models/role.js +0 -27
  305. package/src/models/role.js.map +0 -1
  306. package/src/models/used-direct-login-token.d.ts +0 -24
  307. package/src/models/used-direct-login-token.d.ts.map +0 -1
  308. package/src/models/used-direct-login-token.js +0 -16
  309. package/src/models/used-direct-login-token.js.map +0 -1
  310. package/src/models/user-role.d.ts +0 -23
  311. package/src/models/user-role.d.ts.map +0 -1
  312. package/src/models/user-role.js +0 -26
  313. package/src/models/user-role.js.map +0 -1
  314. package/src/models/user.d.ts +0 -24
  315. package/src/models/user.d.ts.map +0 -1
  316. package/src/models/user.js +0 -27
  317. package/src/models/user.js.map +0 -1
  318. package/src/mongo-application-concrete.d.ts +0 -32
  319. package/src/mongo-application-concrete.d.ts.map +0 -1
  320. package/src/mongo-application-concrete.js +0 -49
  321. package/src/mongo-application-concrete.js.map +0 -1
  322. package/src/plugins/mongo-database-plugin.d.ts +0 -115
  323. package/src/plugins/mongo-database-plugin.d.ts.map +0 -1
  324. package/src/plugins/mongo-database-plugin.js +0 -234
  325. package/src/plugins/mongo-database-plugin.js.map +0 -1
  326. package/src/routers/api.d.ts +0 -60
  327. package/src/routers/api.d.ts.map +0 -1
  328. package/src/routers/api.js +0 -116
  329. package/src/routers/api.js.map +0 -1
  330. package/src/schemas/email-token.d.ts +0 -65
  331. package/src/schemas/email-token.d.ts.map +0 -1
  332. package/src/schemas/email-token.js +0 -68
  333. package/src/schemas/email-token.js.map +0 -1
  334. package/src/schemas/index.d.ts +0 -8
  335. package/src/schemas/index.d.ts.map +0 -1
  336. package/src/schemas/index.js +0 -11
  337. package/src/schemas/index.js.map +0 -1
  338. package/src/schemas/mnemonic.d.ts +0 -37
  339. package/src/schemas/mnemonic.d.ts.map +0 -1
  340. package/src/schemas/mnemonic.js +0 -41
  341. package/src/schemas/mnemonic.js.map +0 -1
  342. package/src/schemas/role.d.ts +0 -57
  343. package/src/schemas/role.d.ts.map +0 -1
  344. package/src/schemas/role.js +0 -102
  345. package/src/schemas/role.js.map +0 -1
  346. package/src/schemas/schema.d.ts +0 -62
  347. package/src/schemas/schema.d.ts.map +0 -1
  348. package/src/schemas/schema.js +0 -81
  349. package/src/schemas/schema.js.map +0 -1
  350. package/src/schemas/used-direct-login-token.d.ts +0 -49
  351. package/src/schemas/used-direct-login-token.d.ts.map +0 -1
  352. package/src/schemas/used-direct-login-token.js +0 -35
  353. package/src/schemas/used-direct-login-token.js.map +0 -1
  354. package/src/schemas/user-role.d.ts +0 -52
  355. package/src/schemas/user-role.d.ts.map +0 -1
  356. package/src/schemas/user-role.js +0 -67
  357. package/src/schemas/user-role.js.map +0 -1
  358. package/src/schemas/user.d.ts +0 -43
  359. package/src/schemas/user.d.ts.map +0 -1
  360. package/src/schemas/user.js +0 -214
  361. package/src/schemas/user.js.map +0 -1
  362. package/src/services/backup-code.d.ts +0 -120
  363. package/src/services/backup-code.d.ts.map +0 -1
  364. package/src/services/backup-code.js +0 -323
  365. package/src/services/backup-code.js.map +0 -1
  366. package/src/services/database-initialization.d.ts +0 -138
  367. package/src/services/database-initialization.d.ts.map +0 -1
  368. package/src/services/database-initialization.js +0 -913
  369. package/src/services/database-initialization.js.map +0 -1
  370. package/src/services/db-init-cache.d.ts +0 -18
  371. package/src/services/db-init-cache.d.ts.map +0 -1
  372. package/src/services/db-init-cache.js +0 -7
  373. package/src/services/db-init-cache.js.map +0 -1
  374. package/src/services/direct-login-token.d.ts +0 -28
  375. package/src/services/direct-login-token.d.ts.map +0 -1
  376. package/src/services/direct-login-token.js +0 -62
  377. package/src/services/direct-login-token.js.map +0 -1
  378. package/src/services/jwt.d.ts +0 -45
  379. package/src/services/jwt.d.ts.map +0 -1
  380. package/src/services/jwt.js +0 -105
  381. package/src/services/jwt.js.map +0 -1
  382. package/src/services/mnemonic.d.ts +0 -68
  383. package/src/services/mnemonic.d.ts.map +0 -1
  384. package/src/services/mnemonic.js +0 -120
  385. package/src/services/mnemonic.js.map +0 -1
  386. package/src/services/mongo-authentication-provider.d.ts +0 -27
  387. package/src/services/mongo-authentication-provider.d.ts.map +0 -1
  388. package/src/services/mongo-authentication-provider.js +0 -84
  389. package/src/services/mongo-authentication-provider.js.map +0 -1
  390. package/src/services/mongo-backup-code-store.d.ts +0 -40
  391. package/src/services/mongo-backup-code-store.d.ts.map +0 -1
  392. package/src/services/mongo-backup-code-store.js +0 -104
  393. package/src/services/mongo-backup-code-store.js.map +0 -1
  394. package/src/services/mongo-base.d.ts +0 -24
  395. package/src/services/mongo-base.d.ts.map +0 -1
  396. package/src/services/mongo-base.js +0 -28
  397. package/src/services/mongo-base.js.map +0 -1
  398. package/src/services/mongoose-collection.d.ts +0 -52
  399. package/src/services/mongoose-collection.d.ts.map +0 -1
  400. package/src/services/mongoose-collection.js +0 -326
  401. package/src/services/mongoose-collection.js.map +0 -1
  402. package/src/services/mongoose-database.d.ts +0 -64
  403. package/src/services/mongoose-database.d.ts.map +0 -1
  404. package/src/services/mongoose-database.js +0 -121
  405. package/src/services/mongoose-database.js.map +0 -1
  406. package/src/services/mongoose-document-store.d.ts +0 -109
  407. package/src/services/mongoose-document-store.d.ts.map +0 -1
  408. package/src/services/mongoose-document-store.js +0 -264
  409. package/src/services/mongoose-document-store.js.map +0 -1
  410. package/src/services/mongoose-session-adapter.d.ts +0 -39
  411. package/src/services/mongoose-session-adapter.d.ts.map +0 -1
  412. package/src/services/mongoose-session-adapter.js +0 -63
  413. package/src/services/mongoose-session-adapter.js.map +0 -1
  414. package/src/services/request-user.d.ts +0 -45
  415. package/src/services/request-user.d.ts.map +0 -1
  416. package/src/services/request-user.js +0 -90
  417. package/src/services/request-user.js.map +0 -1
  418. package/src/services/role.d.ts +0 -97
  419. package/src/services/role.d.ts.map +0 -1
  420. package/src/services/role.js +0 -289
  421. package/src/services/role.js.map +0 -1
  422. package/src/services/user.d.ts +0 -368
  423. package/src/services/user.d.ts.map +0 -1
  424. package/src/services/user.js +0 -1495
  425. package/src/services/user.js.map +0 -1
  426. package/src/transactions/index.d.ts +0 -2
  427. package/src/transactions/index.d.ts.map +0 -1
  428. package/src/transactions/index.js +0 -5
  429. package/src/transactions/index.js.map +0 -1
  430. package/src/transactions/transaction-manager.d.ts +0 -37
  431. package/src/transactions/transaction-manager.d.ts.map +0 -1
  432. package/src/transactions/transaction-manager.js +0 -50
  433. package/src/transactions/transaction-manager.js.map +0 -1
  434. package/src/types/mongoose-helpers.d.ts +0 -16
  435. package/src/types/mongoose-helpers.d.ts.map +0 -1
  436. package/src/types/mongoose-helpers.js +0 -8
  437. package/src/types/mongoose-helpers.js.map +0 -1
  438. package/src/utils/default-mongo-uri-validator.d.ts +0 -15
  439. package/src/utils/default-mongo-uri-validator.d.ts.map +0 -1
  440. package/src/utils/default-mongo-uri-validator.js +0 -46
  441. package/src/utils/default-mongo-uri-validator.js.map +0 -1
@@ -1,289 +0,0 @@
1
- "use strict";
2
- /**
3
- * @fileoverview Role-based access control (RBAC) service.
4
- * Manages roles, user-role relationships, and permission checks.
5
- * @module services/role
6
- */
7
- Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.RoleService = void 0;
9
- const ecies_lib_1 = require("@digitaldefiance/ecies-lib");
10
- const i18n_lib_1 = require("@digitaldefiance/i18n-lib");
11
- const mongoose_types_1 = require("@digitaldefiance/mongoose-types");
12
- const suite_core_lib_1 = require("@digitaldefiance/suite-core-lib");
13
- const base_model_name_1 = require("../enumerations/base-model-name");
14
- const model_registry_1 = require("../model-registry");
15
- const utils_1 = require("../utils");
16
- const base_1 = require("./base");
17
- const node_ecies_lib_1 = require("@digitaldefiance/node-ecies-lib");
18
- /**
19
- * Service for managing roles and role-based access control.
20
- * Handles role creation, user-role assignments, and permission queries.
21
- * @template TID - Platform ID type (defaults to Buffer)
22
- * @template TDate - Date type (defaults to Date)
23
- * @template TTokenRole - Token role interface type
24
- * @extends {BaseService<TID>}
25
- */
26
- class RoleService extends base_1.BaseService {
27
- /**
28
- * Constructor for the role service
29
- * @param application The application object
30
- */
31
- constructor(application) {
32
- super(application);
33
- }
34
- static roleToRoleDTO(role) {
35
- const provider = (0, node_ecies_lib_1.getEnhancedNodeIdProvider)();
36
- const roleObj = role instanceof mongoose_types_1.Document ? role.toObject() : role;
37
- return {
38
- _id: provider.idToString(roleObj._id),
39
- name: roleObj.name,
40
- admin: roleObj.admin ?? false,
41
- member: roleObj.member ?? false,
42
- child: roleObj.child ?? false,
43
- system: roleObj.system ?? false,
44
- translatedName: 'translatedName' in role ? role.translatedName : role.name,
45
- createdAt: (roleObj.createdAt instanceof Date
46
- ? roleObj.createdAt.toISOString()
47
- : roleObj.createdAt),
48
- createdBy: provider.idToString(roleObj.createdBy),
49
- updatedAt: (roleObj.updatedAt instanceof Date
50
- ? roleObj.updatedAt.toISOString()
51
- : roleObj.updatedAt),
52
- updatedBy: provider.idToString(roleObj.updatedBy),
53
- ...(roleObj.deletedAt
54
- ? {
55
- deletedAt: (roleObj.deletedAt instanceof Date
56
- ? roleObj.deletedAt.toISOString()
57
- : roleObj.deletedAt),
58
- }
59
- : {}),
60
- ...(role.deletedBy
61
- ? {
62
- deletedBy: provider.idToString(roleObj.deletedBy),
63
- }
64
- : {}),
65
- };
66
- }
67
- /**
68
- * Given a Role DTO, reconstitute ids and dates
69
- * @param role The Role DTO
70
- * @returns An IRoleBackendObject
71
- */
72
- static hydrateRoleDTOToBackend(role) {
73
- const idProvider = (0, node_ecies_lib_1.getEnhancedNodeIdProvider)();
74
- const convert = (id) => idProvider.idFromString(id);
75
- return {
76
- ...(0, utils_1.omit)(role, [
77
- 'translatedName',
78
- ]),
79
- _id: convert(role._id),
80
- name: role.name,
81
- createdAt: new Date(role.createdAt),
82
- createdBy: convert(role.createdBy),
83
- updatedAt: new Date(role.updatedAt),
84
- updatedBy: convert(role.updatedBy),
85
- ...(role.deletedAt ? { deletedAt: new Date(role.deletedAt) } : {}),
86
- ...(role.deletedBy
87
- ? {
88
- deletedBy: convert(role.deletedBy),
89
- }
90
- : {}),
91
- };
92
- }
93
- /**
94
- * Gets the role ID by name
95
- * @param roleName The name of the role
96
- * @returns The role ID or null if not found
97
- */
98
- async getRoleIdByName(roleName, session) {
99
- const RoleModel = model_registry_1.ModelRegistry.instance.get(base_model_name_1.BaseModelName.Role).model;
100
- const role = await RoleModel.findOne({ name: roleName }, undefined, {
101
- session,
102
- }).select('_id');
103
- if (!role) {
104
- return null;
105
- }
106
- return role._id;
107
- }
108
- /**
109
- * Creates a new role
110
- * @param roleData The role data
111
- * @param session Optional mongoose session
112
- * @returns The created role document
113
- */
114
- async createRole(roleData, session) {
115
- const RoleModel = model_registry_1.ModelRegistry.instance.get(base_model_name_1.BaseModelName.Role).model;
116
- const role = new RoleModel(roleData);
117
- const savedRole = await role.save(session ? { session } : {});
118
- return savedRole;
119
- }
120
- /**
121
- * Adds a user to a role
122
- * @param roleId - The role id
123
- * @param userId - The user id
124
- * @param createdBy - The user creating the relationship
125
- * @param session Optional mongoose session
126
- */
127
- async addUserToRole(roleId, userId, createdBy, session, overrideId) {
128
- const UserRoleModel = model_registry_1.ModelRegistry.instance.get(base_model_name_1.BaseModelName.UserRole).model;
129
- // Check if the user-role relationship already exists (and is not deleted)
130
- const existingUserRole = await UserRoleModel.findOne({
131
- userId,
132
- roleId,
133
- deletedAt: { $exists: false },
134
- }).session(session ?? null);
135
- if (existingUserRole) {
136
- // Relationship already exists, no need to create it again
137
- return existingUserRole;
138
- }
139
- const userRole = new UserRoleModel({
140
- ...(overrideId ? { _id: overrideId } : {}),
141
- userId,
142
- roleId,
143
- createdBy,
144
- updatedBy: createdBy,
145
- });
146
- const result = await userRole.save({ session });
147
- return result;
148
- }
149
- /**
150
- * Removes a user from a role
151
- * @param roleId - The role id
152
- * @param userId - The user id
153
- * @param deletedBy - The user removing the relationship
154
- * @param session Optional mongoose session
155
- * @throws LastAdminError if attempting to remove the last admin
156
- */
157
- async removeUserFromRole(roleId, userId, deletedBy, session) {
158
- const RoleModel = model_registry_1.ModelRegistry.instance.get(base_model_name_1.BaseModelName.Role).model;
159
- const UserRoleModel = model_registry_1.ModelRegistry.instance.get(base_model_name_1.BaseModelName.UserRole).model;
160
- const role = await RoleModel.findById(roleId).session(session ?? null);
161
- if (role?.admin) {
162
- const adminCount = await UserRoleModel.countDocuments({
163
- roleId,
164
- deletedAt: { $exists: false },
165
- }).session(session ?? null);
166
- if (adminCount <= 1) {
167
- throw new suite_core_lib_1.LastAdminError();
168
- }
169
- }
170
- await UserRoleModel.findOneAndUpdate({ userId, roleId, deletedAt: { $exists: false } }, { deletedAt: new Date(), deletedBy }, { session });
171
- }
172
- /**
173
- * Deletes a role by ID
174
- * @param roleId The role ID
175
- * @param deleter The ID of the user deleting the role
176
- * @param hardDelete Whether to hard delete the role
177
- * @param session Optional mongoose session
178
- */
179
- async deleteRole(roleId, deleter, hardDelete, session) {
180
- const RoleModel = model_registry_1.ModelRegistry.instance.get(base_model_name_1.BaseModelName.Role).model;
181
- if (hardDelete) {
182
- await RoleModel.findByIdAndDelete(roleId).session(session ?? null);
183
- }
184
- else {
185
- await RoleModel.findByIdAndUpdate(roleId, {
186
- deletedAt: new Date(),
187
- deletedBy: deleter,
188
- }).session(session ?? null);
189
- }
190
- }
191
- /**
192
- * Gets all roles for a user
193
- * @param userId The user ID
194
- * @param session Optional mongoose session
195
- * @returns The roles the user is a member of
196
- */
197
- async getUserRoles(userId, session) {
198
- const UserRoleModel = model_registry_1.ModelRegistry.instance.get(base_model_name_1.BaseModelName.UserRole).model;
199
- const RoleModel = model_registry_1.ModelRegistry.instance.get(base_model_name_1.BaseModelName.Role).model;
200
- if (!UserRoleModel || !RoleModel)
201
- throw new Error('Model not registered');
202
- // Return full documents
203
- const userRoles = await UserRoleModel.find({
204
- userId,
205
- deletedAt: { $exists: false },
206
- })
207
- .select('roleId')
208
- .session(session ?? null);
209
- const roleIds = userRoles.map((ur) => ur.roleId);
210
- return (await RoleModel.find({
211
- _id: { $in: roleIds },
212
- deletedAt: { $exists: false },
213
- }).session(session ?? null));
214
- }
215
- /**
216
- * Gets all users for a role
217
- * @param roleId The role ID
218
- * @param session Optional mongoose session
219
- * @returns The user IDs that are members of the role
220
- */
221
- async getRoleUsers(roleId, session) {
222
- const UserRoleModel = model_registry_1.ModelRegistry.instance.get(base_model_name_1.BaseModelName.UserRole).model;
223
- // Return full documents
224
- const userRoles = await UserRoleModel.find({
225
- roleId,
226
- deletedAt: { $exists: false },
227
- })
228
- .select('userId')
229
- .session(session ?? null);
230
- return userRoles.map((ur) => ur.userId);
231
- }
232
- /** Convert roles to translated TokenRoles */
233
- rolesToTokenRoles(roles, overrideLanguage) {
234
- return roles.map((role) => {
235
- const engine = i18n_lib_1.I18nEngine.getInstance('default');
236
- const userLang = i18n_lib_1.GlobalActiveContext.getInstance().userLanguage;
237
- const lang = (overrideLanguage || userLang || 'en-US');
238
- const roleTranslation = engine.translateEnum(suite_core_lib_1.Role, role.name, lang);
239
- // Convert Mongoose document to plain object if needed
240
- const roleObj = role instanceof mongoose_types_1.Document ? role.toObject() : role;
241
- return {
242
- ...roleObj,
243
- translatedName: roleTranslation,
244
- };
245
- });
246
- }
247
- async isUserAdmin(userDoc, session, providedRoles) {
248
- const roles = providedRoles ?? (await this.getUserRoles(userDoc._id, session));
249
- if (roles.filter((r) => r.admin).length > 0) {
250
- return true;
251
- }
252
- return false;
253
- }
254
- async isUserMember(userDoc, session, providedRoles) {
255
- const roles = providedRoles ?? (await this.getUserRoles(userDoc._id, session));
256
- if (roles.filter((r) => r.member).length > 0) {
257
- return true;
258
- }
259
- return false;
260
- }
261
- async isUserChild(userDoc, session, providedRoles) {
262
- const roles = providedRoles ?? (await this.getUserRoles(userDoc._id, session));
263
- if (roles.filter((r) => r.child).length > 0) {
264
- return true;
265
- }
266
- return false;
267
- }
268
- async isSystemUser(userDoc, session, providedRoles) {
269
- const roles = providedRoles ?? (await this.getUserRoles(userDoc._id, session));
270
- return roles.some((r) => r.system);
271
- }
272
- async getMemberType(userDoc, session, providedRoles) {
273
- const roles = providedRoles ?? (await this.getUserRoles(userDoc._id, session));
274
- if (await this.isSystemUser(userDoc, session, roles)) {
275
- return ecies_lib_1.MemberType.System;
276
- }
277
- else if (await this.isUserAdmin(userDoc, session, roles)) {
278
- return ecies_lib_1.MemberType.Admin;
279
- }
280
- else if (await this.isUserMember(userDoc, session, roles)) {
281
- return ecies_lib_1.MemberType.User;
282
- }
283
- else {
284
- return ecies_lib_1.MemberType.Anonymous;
285
- }
286
- }
287
- }
288
- exports.RoleService = RoleService;
289
- //# sourceMappingURL=role.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"role.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/services/role.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,0DAAwD;AACxD,wDAImC;AACnC,oEAA0E;AAC1E,oEAOyC;AAIzC,qEAAgE;AAGhE,sDAAkD;AAClD,oCAAgC;AAChC,iCAAqC;AACrC,oEAGyC;AAEzC;;;;;;;GAOG;AACH,MAAa,WAIX,SAAQ,kBAAgB;IACxB;;;OAGG;IACH,YAAY,WAA8B;QACxC,KAAK,CAAC,WAAW,CAAC,CAAC;IACrB,CAAC;IAEM,MAAM,CAAC,aAAa,CAIzB,IAA0E;QAE1E,MAAM,QAAQ,GAAG,IAAA,0CAAyB,GAAO,CAAC;QAClD,MAAM,OAAO,GAAG,IAAI,YAAY,yBAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAClE,OAAO;YACL,GAAG,EAAE,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC;YACrC,IAAI,EAAE,OAAO,CAAC,IAAc;YAC5B,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,KAAK;YAC7B,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK;YAC/B,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,KAAK;YAC7B,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK;YAC/B,cAAc,EACZ,gBAAgB,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI;YAC5D,SAAS,EAAE,CAAC,OAAO,CAAC,SAAS,YAAY,IAAI;gBAC3C,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE;gBACjC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAW;YAChC,SAAS,EAAE,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC;YACjD,SAAS,EAAE,CAAC,OAAO,CAAC,SAAS,YAAY,IAAI;gBAC3C,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE;gBACjC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAW;YAChC,SAAS,EAAE,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC;YACjD,GAAG,CAAC,OAAO,CAAC,SAAS;gBACnB,CAAC,CAAC;oBACE,SAAS,EAAE,CAAC,OAAO,CAAC,SAAS,YAAY,IAAI;wBAC3C,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE;wBACjC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAW;iBACjC;gBACH,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,IAAI,CAAC,SAAS;gBAChB,CAAC,CAAC;oBACE,SAAS,EAAE,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC;iBAClD;gBACH,CAAC,CAAC,EAAE,CAAC;SACS,CAAC;IACrB,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,uBAAuB,CACnC,IAAmB;QAEnB,MAAM,UAAU,GAAG,IAAA,0CAAyB,GAAO,CAAC;QACpD,MAAM,OAAO,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAC5D,OAAO;YACL,GAAI,IAAA,YAAI,EAAkC,IAAI,EAAE;gBAC9C,gBAAgB;aACjB,CAAc;YACf,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;YACtB,IAAI,EAAE,IAAI,CAAC,IAAY;YACvB,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YACnC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;YAClC,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YACnC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;YAClC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClE,GAAG,CAAC,IAAI,CAAC,SAAS;gBAChB,CAAC,CAAC;oBACE,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;iBACnC;gBACH,CAAC,CAAC,EAAE,CAAC;SACmB,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,eAAe,CAC1B,QAAc,EACd,OAAuB;QAEvB,MAAM,SAAS,GAAG,8BAAa,CAAC,QAAQ,CAAC,GAAG,CAC1C,+BAAa,CAAC,IAAI,CACnB,CAAC,KAAK,CAAC;QACR,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE;YAClE,OAAO;SACR,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACjB,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC,GAAU,CAAC;IACzB,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,UAAU,CACrB,QAAqC,EACrC,OAA8B;QAE9B,MAAM,SAAS,GAAG,8BAAa,CAAC,QAAQ,CAAC,GAAG,CAC1C,+BAAa,CAAC,IAAI,CACnB,CAAC,KAAK,CAAC;QACR,MAAM,IAAI,GAAG,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC;QACrC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC9D,OAAO,SAA8B,CAAC;IACxC,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,aAAa,CACxB,MAAW,EACX,MAAW,EACX,SAAc,EACd,OAAuB,EACvB,UAAgB;QAEhB,MAAM,aAAa,GAAG,8BAAa,CAAC,QAAQ,CAAC,GAAG,CAC9C,+BAAa,CAAC,QAAQ,CACvB,CAAC,KAAK,CAAC;QAER,0EAA0E;QAC1E,MAAM,gBAAgB,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC;YACnD,MAAM;YACN,MAAM;YACN,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;SAC9B,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC;QAE5B,IAAI,gBAAgB,EAAE,CAAC;YACrB,0DAA0D;YAC1D,OAAO,gBAAgB,CAAC;QAC1B,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,aAAa,CAAC;YACjC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1C,MAAM;YACN,MAAM;YACN,SAAS;YACT,SAAS,EAAE,SAAS;SACrB,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAChD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;;OAOG;IACI,KAAK,CAAC,kBAAkB,CAC7B,MAAW,EACX,MAAW,EACX,SAAc,EACd,OAAuB;QAEvB,MAAM,SAAS,GAAG,8BAAa,CAAC,QAAQ,CAAC,GAAG,CAC1C,+BAAa,CAAC,IAAI,CACnB,CAAC,KAAK,CAAC;QACR,MAAM,aAAa,GAAG,8BAAa,CAAC,QAAQ,CAAC,GAAG,CAC9C,+BAAa,CAAC,QAAQ,CACvB,CAAC,KAAK,CAAC;QAER,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC;QACvE,IAAI,IAAI,EAAE,KAAK,EAAE,CAAC;YAChB,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,cAAc,CAAC;gBACpD,MAAM;gBACN,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;aAC9B,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC;YAC5B,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;gBACpB,MAAM,IAAI,+BAAc,EAAE,CAAC;YAC7B,CAAC;QACH,CAAC;QAED,MAAM,aAAa,CAAC,gBAAgB,CAClC,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EACjD,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,SAAS,EAAE,EACpC,EAAE,OAAO,EAAE,CACZ,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,UAAU,CACrB,MAAW,EACX,OAAY,EACZ,UAAmB,EACnB,OAAuB;QAEvB,MAAM,SAAS,GAAG,8BAAa,CAAC,QAAQ,CAAC,GAAG,CAC1C,+BAAa,CAAC,IAAI,CACnB,CAAC,KAAK,CAAC;QACR,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,SAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC;QACrE,CAAC;aAAM,CAAC;YACN,MAAM,SAAS,CAAC,iBAAiB,CAAC,MAAM,EAAE;gBACxC,SAAS,EAAE,IAAI,IAAI,EAAE;gBACrB,SAAS,EAAE,OAAO;aACnB,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,YAAY,CACvB,MAAW,EACX,OAAuB;QAEvB,MAAM,aAAa,GAAG,8BAAa,CAAC,QAAQ,CAAC,GAAG,CAC9C,+BAAa,CAAC,QAAQ,CACvB,CAAC,KAAK,CAAC;QACR,MAAM,SAAS,GAAG,8BAAa,CAAC,QAAQ,CAAC,GAAG,CAC1C,+BAAa,CAAC,IAAI,CACnB,CAAC,KAAK,CAAC;QACR,IAAI,CAAC,aAAa,IAAI,CAAC,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAE1E,wBAAwB;QACxB,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC;YACzC,MAAM;YACN,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;SAC9B,CAAC;aACC,MAAM,CAAC,QAAQ,CAAC;aAChB,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC;QAE5B,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;QACjD,OAAO,CAAC,MAAM,SAAS,CAAC,IAAI,CAAC;YAC3B,GAAG,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE;YACrB,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;SAC9B,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,CAAwB,CAAC;IACtD,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,YAAY,CACvB,MAAW,EACX,OAAuB;QAEvB,MAAM,aAAa,GAAG,8BAAa,CAAC,QAAQ,CAAC,GAAG,CAC9C,+BAAa,CAAC,QAAQ,CACvB,CAAC,KAAK,CAAC;QAER,wBAAwB;QACxB,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC;YACzC,MAAM;YACN,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;SAC9B,CAAC;aACC,MAAM,CAAC,QAAQ,CAAC;aAChB,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC;QAE5B,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED,6CAA6C;IACtC,iBAAiB,CACtB,KAAqC,EACrC,gBAAyB;QAEzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACxB,MAAM,MAAM,GAAG,qBAAU,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YACjD,MAAM,QAAQ,GAAG,8BAAmB,CAAC,WAAW,EAG7C,CAAC,YAAY,CAAC;YACjB,MAAM,IAAI,GAAG,CAAC,gBAAgB,IAAI,QAAQ,IAAI,OAAO,CAAW,CAAC;YACjE,MAAM,eAAe,GAAG,MAAM,CAAC,aAAa,CAAC,qBAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACpE,sDAAsD;YACtD,MAAM,OAAO,GAAG,IAAI,YAAY,yBAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YAClE,OAAO;gBACL,GAAG,OAAO;gBACV,cAAc,EAAE,eAAe;aAClB,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,WAAW,CACtB,OAAkC,EAClC,OAAuB,EACvB,aAAwC;QAExC,MAAM,KAAK,GACT,aAAa,IAAI,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;QACnE,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5C,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,KAAK,CAAC,YAAY,CACvB,OAAkC,EAClC,OAAuB,EACvB,aAAwC;QAExC,MAAM,KAAK,GACT,aAAa,IAAI,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;QACnE,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7C,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,KAAK,CAAC,WAAW,CACtB,OAAkC,EAClC,OAAuB,EACvB,aAAwC;QAExC,MAAM,KAAK,GACT,aAAa,IAAI,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;QACnE,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5C,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,KAAK,CAAC,YAAY,CACvB,OAAkC,EAClC,OAAuB,EACvB,aAAwC;QAExC,MAAM,KAAK,GACT,aAAa,IAAI,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;QACnE,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAEM,KAAK,CAAC,aAAa,CACxB,OAAkC,EAClC,OAAuB,EACvB,aAAwC;QAExC,MAAM,KAAK,GACT,aAAa,IAAI,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;QACnE,IAAI,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;YACrD,OAAO,sBAAU,CAAC,MAAM,CAAC;QAC3B,CAAC;aAAM,IAAI,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;YAC3D,OAAO,sBAAU,CAAC,KAAK,CAAC;QAC1B,CAAC;aAAM,IAAI,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;YAC5D,OAAO,sBAAU,CAAC,IAAI,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,OAAO,sBAAU,CAAC,SAAS,CAAC;QAC9B,CAAC;IACH,CAAC;CACF;AArXD,kCAqXC"}
@@ -1,368 +0,0 @@
1
- /**
2
- * @fileoverview Comprehensive user management service.
3
- * Handles user authentication, registration, password management, email verification,
4
- * mnemonic recovery, backup codes, and all user-related operations.
5
- * @module services/user
6
- */
7
- import { SecureBuffer, SecureString } from '@digitaldefiance/ecies-lib';
8
- import { ClientSession, ProjectionType } from '@digitaldefiance/mongoose-types';
9
- import { Member as BackendMember, ECIESService, PlatformID } from '@digitaldefiance/node-ecies-lib';
10
- import { EmailTokenType, IBackupCode, IRequestUserDTO, ITokenRole, IUserBase, IUserDTO } from '@digitaldefiance/suite-core-lib';
11
- import { Wallet } from '@ethereumjs/wallet';
12
- import { BackupCode } from '../backup-code';
13
- import { BaseDocument } from '../documents';
14
- import { EmailTokenDocument } from '../documents/email-token';
15
- import { UserDocument } from '../documents/user';
16
- import { Environment } from '../environment';
17
- import { ICreateUserBasics } from '../interfaces';
18
- import { IMongoApplication } from '../interfaces/mongo-application';
19
- import { IUserBackendObject } from '../interfaces/backend-objects/user';
20
- import { IConstants } from '../interfaces/constants';
21
- import { IEmailService } from '../interfaces/email-service';
22
- import { BackupCodeService } from './backup-code';
23
- import { BaseService } from './base';
24
- import { KeyWrappingService } from './key-wrapping';
25
- import { MnemonicService } from './mnemonic';
26
- import { RoleService } from './role';
27
- /**
28
- * Comprehensive service for user management and authentication.
29
- * Provides methods for user creation, authentication (mnemonic/password/challenge),
30
- * email verification, password reset, backup code recovery, and settings management.
31
- * @template T - User document type
32
- * @template TID - Platform ID type
33
- * @template TDate - Date type
34
- * @template TLanguage - String type for site language
35
- * @template TAccountStatus - String type for account status
36
- * @template _TEnvironment - Environment type
37
- * @template _TConstants - Constants type
38
- * @template _TBaseDocument - Base document type
39
- * @template TUser - User base interface type
40
- * @template TTokenRole - Token role interface type
41
- * @template TApplication - Application interface type
42
- * @extends {BaseService<TID, TApplication>}
43
- */
44
- export declare class UserService<T, TID extends PlatformID, TDate extends Date, TLanguage extends string, TAccountStatus extends string, _TEnvironment extends Environment<TID> = Environment<TID>, _TConstants extends IConstants = IConstants, _TBaseDocument extends BaseDocument<T, TID> = BaseDocument<T, TID>, TUser extends IUserBase<TID, TDate, TLanguage, TAccountStatus> = IUserBase<TID, TDate, TLanguage, TAccountStatus>, TTokenRole extends ITokenRole<TID, TDate> = ITokenRole<TID, TDate>, TApplication extends IMongoApplication<TID> = IMongoApplication<TID>> extends BaseService<TID, TApplication> {
45
- protected readonly roleService: RoleService<TID, TDate, TTokenRole>;
46
- protected readonly eciesService: ECIESService<TID>;
47
- protected readonly keyWrappingService: KeyWrappingService;
48
- protected readonly mnemonicService: MnemonicService;
49
- protected readonly emailService: IEmailService;
50
- protected readonly backupCodeService: BackupCodeService<TID, TDate, TTokenRole, TApplication>;
51
- protected readonly serverUrl: string;
52
- protected readonly disableEmailSend: boolean;
53
- constructor(application: TApplication, roleService: RoleService<TID, TDate, TTokenRole>, emailService: IEmailService, keyWrappingService: KeyWrappingService, backupCodeService: BackupCodeService<TID, TDate, TTokenRole, TApplication>);
54
- /**
55
- * Given a User Document, make a User DTO
56
- * @param user a User Document
57
- * @returns An IUserDTO
58
- */
59
- static userToUserDTO<TLanguage extends string, TID extends PlatformID = Buffer>(user: UserDocument<TLanguage, TID> | Record<string, unknown>): IUserDTO;
60
- /**
61
- * Given a User DTO, reconstitute ids and dates
62
- * @param user a User DTO
63
- * @returns An IUserBackendObject
64
- */
65
- hydrateUserDTOToBackend(user: IUserDTO): IUserBackendObject<TLanguage, TID>;
66
- /**
67
- * Create a new email token to send to the user for email verification
68
- * @param userDoc The user to create the email token for
69
- * @param type The type of email token to create
70
- * @param session The session to use for the query
71
- * @returns The email token document
72
- */
73
- createEmailToken(userDoc: UserDocument<TLanguage, TID>, type: EmailTokenType, session?: ClientSession): Promise<EmailTokenDocument>;
74
- /**
75
- * Create and send an email token to the user for email verification
76
- * @param user The user to send the email token to
77
- * @param type The type of email token to send
78
- * @param session The session to use for the query
79
- * @returns The email token document
80
- */
81
- createAndSendEmailToken(user: UserDocument<TLanguage, TID> | (Pick<UserDocument<TLanguage, TID>, keyof UserDocument<TLanguage, TID>> & {
82
- _id: any;
83
- }), type?: EmailTokenType, session?: ClientSession, debug?: boolean): Promise<EmailTokenDocument>;
84
- /**
85
- * Create and send an email token directly within an existing transaction
86
- * @param user The user to send the email token to
87
- * @param type The type of email token to send
88
- * @param session The session to use for the query (required)
89
- * @param debug Whether to enable debug logging
90
- * @returns The email token document
91
- */
92
- createAndSendEmailTokenDirect(user: UserDocument<TLanguage, TID>, type: EmailTokenType | undefined, session: ClientSession, debug?: boolean): Promise<EmailTokenDocument>;
93
- /**
94
- * Send an email token to the user for email verification
95
- * @param emailToken The email token to send
96
- * @param session The session to use for the query
97
- * @returns void
98
- */
99
- sendEmailToken(emailToken: EmailTokenDocument, session?: ClientSession, debug?: boolean): Promise<void>;
100
- /**
101
- * Find a user by email or username and enforce account status checks
102
- * @param email Optional email
103
- * @param username Optional username
104
- * @param session Optional mongoose session
105
- * @throws UsernameOrEmailRequiredError if neither provided
106
- * @throws InvalidCredentialsError if not found or deleted
107
- * @throws AccountLockedError | PendingEmailVerificationError | AccountStatusError per status
108
- */
109
- findUser(email?: string, username?: string, session?: ClientSession): Promise<UserDocument<TLanguage, TID>>;
110
- /**
111
- * Finds a user record by ID
112
- * @param userId The user ID
113
- * @param throwIfNotActive Whether to throw if the user is inactive
114
- * @param session The active session, if present
115
- * @returns The user document
116
- */
117
- findUserById(userId: TID, throwIfNotActive: boolean, session?: ClientSession, select?: ProjectionType<UserDocument<TLanguage, TID>>): Promise<UserDocument<TLanguage, TID>>;
118
- /**
119
- * Ensure required fields are present in a projection for queries that rely on them.
120
- * Supports string and object-style projections. For inclusion projections, adds fields.
121
- * For exclusion projections, ensures required fields are not excluded.
122
- */
123
- private ensureRequiredFieldsInProjection;
124
- /**
125
- * Fill in the default values to a user object
126
- * @param newUser The user object to fill in
127
- * @param createdBy The user ID of the user creating the new user
128
- * @returns The filled in user
129
- */
130
- fillUserDefaults(newUser: ICreateUserBasics, createdBy: TID, backupCodes: Array<IBackupCode>, encryptedMnemonic: string, userId?: TID): IUserBackendObject<TLanguage, TID>;
131
- /**
132
- * Create a new user document from an IUser and unhashed password
133
- * @param newUser The user object
134
- * @returns The new user document
135
- */
136
- makeUserDoc(newUser: TUser): Promise<UserDocument<TLanguage, TID>>;
137
- /**
138
- * Create a new user.
139
- * Do not set createdBy to a new (non-existing) ObjectId unless you also set newUserId to it.
140
- * If newUserId is not set, one will be generated.
141
- * @param systemUser The system user performing the operation
142
- * @param userData Username, email, password in a ICreateUserBasics object
143
- * @param createdBy The user id of the user creating the user
144
- * @param newUserId the user id of the new user object- usually the createdBy user id.
145
- * @param session The session to use for the query
146
- * @param debug Whether to log debug information
147
- * @param password The password to use for the new user (optional, if not provided, mnemonic will be used)
148
- * @returns The new user document
149
- */
150
- newUser(systemUser: BackendMember<TID>, userData: ICreateUserBasics, createdBy?: TID, newUserId?: TID, session?: ClientSession, debug?: boolean, password?: string, userProvidedMnemonic?: string): Promise<{
151
- user: UserDocument<TLanguage, TID>;
152
- mnemonic: string;
153
- backupCodes: Array<string>;
154
- password?: string;
155
- }>;
156
- /**
157
- * Get the backup codes for a user.
158
- * Requires the user not be deleted or inactive
159
- */
160
- getEncryptedUserBackupCodes(userId: TID, session?: ClientSession): Promise<Array<IBackupCode>>;
161
- /**
162
- * Resets the given user's backup codes
163
- * @param backupUser The user to generate codes for
164
- * @param session The current session, if any
165
- * @returns A promise of an array of backup codes
166
- */
167
- resetUserBackupCodes(backupUser: BackendMember<TID>, systemUser: BackendMember<TID>, session?: ClientSession): Promise<Array<BackupCode>>;
168
- /**
169
- * Recover a user's mnemonic from an encrypted mnemonic
170
- * @param user The user whose mnemonic to recover
171
- * @param encryptedMnemonic The encrypted mnemonic
172
- * @returns The recovered mnemonic
173
- */
174
- recoverMnemonic(user: BackendMember<any>, encryptedMnemonic: string): SecureString;
175
- /**
176
- * Make a Member from a user document and optional private key
177
- * @param userDoc The user document
178
- * @param privateKey Optional private key to load the wallet
179
- * @param publicKey Optional public key to override the userDoc public key
180
- * @param session The current session, if any
181
- * @returns A promise containing the created Member
182
- */
183
- makeUserFromUserDoc(userDoc: UserDocument<TLanguage, TID>, privateKey?: SecureBuffer, publicKey?: Buffer, mnemonic?: SecureString, wallet?: Wallet, session?: ClientSession): Promise<BackendMember<TID>>;
184
- /**
185
- * Challenges a given userDoc with a given mnemonic, returns a system and user Member
186
- * @param userDoc The userDoc in question
187
- * @param mnemonic The mnemonic to challenge against
188
- * @returns A promise containing the user and system Members
189
- * @throws InvalidCredentialsError if the challenge fails
190
- * @throws AccountLockedError if the account is locked
191
- * @throws PendingEmailVerificationError if the email is not verified
192
- * @throws AccountStatusError if the account status is invalid
193
- */
194
- challengeUserWithMnemonic(userDoc: UserDocument<TLanguage, TID>, mnemonic: SecureString, session?: ClientSession): Promise<{
195
- userMember: BackendMember<TID>;
196
- adminMember: BackendMember<TID>;
197
- }>;
198
- /**
199
- * Validates a login challenge response
200
- * @param challengeResponse The challenge response bytes in hex
201
- * @param email The email address of the user
202
- * @param username The username of the user
203
- * @param session The mongo session for the query
204
- * @returns A promise that resolves to the user document, user member, and system member
205
- */
206
- loginWithChallengeResponse(challengeResponse: string, email?: string, username?: string, session?: ClientSession): Promise<{
207
- userDoc: UserDocument<TLanguage, TID>;
208
- userMember: BackendMember<TID>;
209
- adminMember: BackendMember<TID>;
210
- }>;
211
- /**
212
- * Authenticate a user with client-verified challenge (skips server-side challenge)
213
- * @returns The authenticated user document.
214
- */
215
- loginWithClientVerifiedChallenge(usernameOrEmail: string, mnemonic: SecureString, session?: ClientSession): Promise<{
216
- userDoc: UserDocument<TLanguage, TID>;
217
- userMember: BackendMember<TID>;
218
- adminMember: BackendMember<TID>;
219
- }>;
220
- /**
221
- * Authenticate a user with their mnemonic.
222
- * @returns The authenticated user document.
223
- */
224
- loginWithMnemonic(usernameOrEmail: string, mnemonic: SecureString, session?: ClientSession): Promise<{
225
- userDoc: UserDocument<TLanguage, TID>;
226
- userMember: BackendMember<TID>;
227
- adminMember: BackendMember<TID>;
228
- }>;
229
- /**
230
- * Authenticate a user with their password (for key-wrapped accounts).
231
- * @returns The authenticated user document.
232
- */
233
- loginWithPassword(usernameOrEmail: string, password: string, session?: ClientSession): Promise<{
234
- userDoc: UserDocument<TLanguage, TID>;
235
- userMember: BackendMember<TID>;
236
- adminMember: BackendMember<TID>;
237
- }>;
238
- /**
239
- * Re-send a previously sent email token
240
- * @param userId The user id
241
- * @param session The session to use for the query
242
- * @returns void
243
- * @throws EmailTokenUsedOrInvalidError
244
- */
245
- resendEmailToken(userId: string, type: EmailTokenType, session?: ClientSession, debug?: boolean): Promise<void>;
246
- /**
247
- * Verify the email token and update the user's account status
248
- * @param emailToken The email token to verify
249
- * @param session The session to use for the query
250
- * @returns void
251
- * @throws EmailTokenUsedOrInvalidError
252
- * @throws EmailTokenExpiredError
253
- * @throws EmailVerifiedError
254
- * @throws UserNotFoundError
255
- */
256
- verifyAccountTokenAndComplete(emailToken: string, session?: ClientSession): Promise<void>;
257
- /**
258
- * Validate the email token
259
- * @param token The token to validate
260
- * @param restrictType The type of email token to validate (or throw)
261
- * @param session The session to use for the query
262
- * @returns void
263
- * @throws EmailTokenUsedOrInvalidError
264
- */
265
- validateEmailToken(token: string, restrictType?: EmailTokenType, session?: ClientSession): Promise<void>;
266
- /**
267
- * Updates the user's language
268
- * @param userId - The ID of the user
269
- * @param newLanguage - The new language
270
- * @param session - The session to use for the query
271
- * @returns The updated user
272
- */
273
- updateSiteLanguage(userId: string, newLanguage: string, session?: ClientSession): Promise<IRequestUserDTO>;
274
- /**
275
- * Updates the user's Dark Mode preference
276
- * @param userId - The ID of the user
277
- * @param newDarkMode - The new Dark Mode preference
278
- * @param session - The session to use for the query
279
- * @returns The updated user
280
- */
281
- updateDarkMode(userId: string, newDarkMode: boolean, session?: ClientSession): Promise<IRequestUserDTO>;
282
- /**
283
- * Updates multiple user settings at once
284
- * @param userId - The ID of the user
285
- * @param settings - Object containing settings to update
286
- * @param session - The session to use for the query
287
- * @returns The updated user
288
- */
289
- updateUserSettings(userId: string, settings: {
290
- email?: string;
291
- timezone?: string;
292
- siteLanguage?: string;
293
- currency?: string;
294
- darkMode?: boolean;
295
- directChallenge?: boolean;
296
- }, session?: ClientSession): Promise<IRequestUserDTO>;
297
- /**
298
- * Changes the user's password by re-wrapping their master key
299
- * @param userId - The ID of the user
300
- * @param currentPassword - The current password
301
- * @param newPassword - The new password
302
- * @param session - The session to use for the query
303
- * @returns void
304
- */
305
- changePassword(userId: string, currentPassword: string, newPassword: string, session?: ClientSession): Promise<void>;
306
- /**
307
- * Retrieve an email token by its token string and type
308
- * @param token - The token string
309
- * @param type - The type of the email token
310
- * @param session - The session to use for the query
311
- * @returns The email token document or null if not found
312
- */
313
- findEmailToken(token: string, type?: EmailTokenType, session?: ClientSession): Promise<EmailTokenDocument | null>;
314
- /**
315
- * Verify email token is valid
316
- * @param token - The email token
317
- * @param session - The session to use for the query
318
- * @returns void
319
- */
320
- verifyEmailToken(token: string, type: EmailTokenType, session?: ClientSession): Promise<void>;
321
- /**
322
- * Reset password using email token
323
- * @param token - The email token
324
- * @param newPassword - The new password
325
- * @param session - The session to use for the query
326
- * @returns void
327
- */
328
- resetPasswordWithToken(token: string, newPassword: string, credential?: string, // either mnemonic or current password; required
329
- session?: ClientSession): Promise<void>;
330
- /**
331
- * Generate a login challenge for the client to sign
332
- * @returns The login challenge in hex
333
- */
334
- generateDirectLoginChallenge(): string;
335
- /**
336
- * Verifies a direct login challenge response
337
- * @param serverSignedRequest The login challenge response in hex
338
- * @param session The mongoose session, if provided
339
- * @returns A promise with the user document and user member object
340
- */
341
- verifyDirectLoginChallenge(serverSignedRequest: string, signature: string, username?: string, email?: string, session?: ClientSession): Promise<{
342
- userDoc: UserDocument<TLanguage, TID>;
343
- userMember: BackendMember<TID>;
344
- }>;
345
- /**
346
- * Request a login link via email
347
- * @param email Email address
348
- * @param username Username
349
- * @param session Existing session, if any
350
- * @returns void
351
- */
352
- requestEmailLogin(email?: string, username?: string, session?: ClientSession): Promise<void>;
353
- /**
354
- * Validate an email login token challenge
355
- * @param token The token to challenge
356
- * @param signature The signature of the token by the user's private key
357
- * @param session The session to use for the query
358
- * @returns The user document if the challenge is valid
359
- */
360
- validateEmailLoginTokenChallenge(token: string, signature: string, session?: ClientSession): Promise<UserDocument<TLanguage, TID>>;
361
- /**
362
- * Updates the user's last login time atomically
363
- * @param userId - The ID of the user
364
- * @returns void
365
- */
366
- updateLastLogin(userId: TID): Promise<void>;
367
- }
368
- //# sourceMappingURL=user.d.ts.map