@digitaldefiance/node-express-suite 1.0.21 → 1.0.23

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 (633) hide show
  1. package/README.md +9 -0
  2. package/package.json +27 -32
  3. package/src/application-base.ts +492 -0
  4. package/src/application.ts +254 -0
  5. package/src/backup-code.ts +336 -0
  6. package/src/constants.ts +69 -0
  7. package/src/controllers/base.ts +440 -0
  8. package/{dist/controllers/index.d.ts → src/controllers/index.ts} +0 -1
  9. package/src/controllers/user.ts +1451 -0
  10. package/src/decorators/base-controller.ts +61 -0
  11. package/src/decorators/controller.ts +109 -0
  12. package/{dist/decorators/index.d.ts → src/decorators/index.ts} +0 -1
  13. package/src/decorators/zod-validation.ts +57 -0
  14. package/src/defaults.ts +94 -0
  15. package/src/documents/base.ts +7 -0
  16. package/src/documents/email-token.ts +14 -0
  17. package/{dist/documents/index.d.ts → src/documents/index.ts} +0 -1
  18. package/{dist/documents/mnemonic.d.ts → src/documents/mnemonic.ts} +5 -2
  19. package/{dist/documents/role.d.ts → src/documents/role.ts} +5 -2
  20. package/src/documents/used-direct-login-token.ts +7 -0
  21. package/{dist/documents/user-role.d.ts → src/documents/user-role.ts} +5 -2
  22. package/{dist/documents/user.d.ts → src/documents/user.ts} +4 -2
  23. package/src/enumerations/base-model-name.ts +41 -0
  24. package/{dist/enumerations/index.d.ts → src/enumerations/index.ts} +0 -1
  25. package/src/enumerations/length-encoding-type.ts +6 -0
  26. package/src/enumerations/schema-collection.ts +33 -0
  27. package/src/enumerations/symmetric-error-type.ts +4 -0
  28. package/src/environment.ts +770 -0
  29. package/src/errors/express-validation.ts +21 -0
  30. package/{dist/errors/index.d.ts → src/errors/index.ts} +0 -1
  31. package/src/errors/invalid-backup-code-version.ts +14 -0
  32. package/src/errors/invalid-jwt-token.ts +10 -0
  33. package/src/errors/invalid-model.ts +11 -0
  34. package/src/errors/invalid-new-password.ts +18 -0
  35. package/src/errors/invalid-password.ts +13 -0
  36. package/src/errors/missing-validated-data.ts +36 -0
  37. package/src/errors/mnemonic-or-password-required.ts +12 -0
  38. package/src/errors/model-not-registered.ts +11 -0
  39. package/src/errors/mongoose-validation.ts +34 -0
  40. package/src/errors/symmetric.ts +41 -0
  41. package/src/errors/token-expired.ts +10 -0
  42. package/src/get-language.ts +53 -0
  43. package/src/get-timezone.ts +45 -0
  44. package/{dist/index.d.ts → src/index.ts} +3 -2
  45. package/{dist/interfaces/api-error-response.d.ts → src/interfaces/api-error-response.ts} +2 -2
  46. package/src/interfaces/api-express-validation-error-response.ts +8 -0
  47. package/src/interfaces/api-message-response.ts +3 -0
  48. package/{dist/interfaces/api-mongo-validation-error-response.d.ts → src/interfaces/api-mongo-validation-error-response.ts} +2 -2
  49. package/{dist/interfaces/api-responses/backup-codes-response.d.ts → src/interfaces/api-responses/backup-codes-response.ts} +2 -2
  50. package/{dist/interfaces/api-responses/challenge-response.d.ts → src/interfaces/api-responses/challenge-response.ts} +3 -3
  51. package/{dist/interfaces/api-responses/code-count-response.d.ts → src/interfaces/api-responses/code-count-response.ts} +2 -2
  52. package/{dist/interfaces/api-responses/index.d.ts → src/interfaces/api-responses/index.ts} +0 -1
  53. package/{dist/interfaces/api-responses/login-response.d.ts → src/interfaces/api-responses/login-response.ts} +4 -4
  54. package/{dist/interfaces/api-responses/mnemonic-response.d.ts → src/interfaces/api-responses/mnemonic-response.ts} +2 -2
  55. package/{dist/interfaces/api-responses/registration-response.d.ts → src/interfaces/api-responses/registration-response.ts} +3 -3
  56. package/{dist/interfaces/api-responses/request-user-response.d.ts → src/interfaces/api-responses/request-user-response.ts} +2 -2
  57. package/{dist/interfaces/application.d.ts → src/interfaces/application.ts} +7 -7
  58. package/src/interfaces/backend-objects/email-token.ts +11 -0
  59. package/{dist/interfaces/backend-objects/index.d.ts → src/interfaces/backend-objects/index.ts} +0 -1
  60. package/{dist/interfaces/backend-objects/request-user.d.ts → src/interfaces/backend-objects/request-user.ts} +7 -2
  61. package/{dist/interfaces/backend-objects/role.d.ts → src/interfaces/backend-objects/role.ts} +1 -1
  62. package/src/interfaces/backend-objects/user.ts +9 -0
  63. package/src/interfaces/checksum-config.ts +4 -0
  64. package/src/interfaces/checksum-consts.ts +13 -0
  65. package/{dist/interfaces/constants.d.ts → src/interfaces/constants.ts} +5 -5
  66. package/src/interfaces/create-user-basics.ts +17 -0
  67. package/src/interfaces/csp-config.ts +35 -0
  68. package/src/interfaces/deep-partial.ts +3 -0
  69. package/{dist/interfaces/discriminator-collections.d.ts → src/interfaces/discriminator-collections.ts} +3 -3
  70. package/src/interfaces/email-service.ts +8 -0
  71. package/src/interfaces/environment-mongo.ts +76 -0
  72. package/src/interfaces/environment.ts +181 -0
  73. package/src/interfaces/failable-result.ts +6 -0
  74. package/src/interfaces/fec-consts.ts +4 -0
  75. package/src/interfaces/handleable-error-options.ts +6 -0
  76. package/{dist/interfaces/index.d.ts → src/interfaces/index.ts} +0 -1
  77. package/src/interfaces/jwt-consts.ts +23 -0
  78. package/src/interfaces/jwt-sign-response.ts +19 -0
  79. package/src/interfaces/mongo-errors.ts +5 -0
  80. package/src/interfaces/request-user.ts +50 -0
  81. package/src/interfaces/required-string-keys.ts +26 -0
  82. package/src/interfaces/schema.ts +31 -0
  83. package/src/interfaces/server-init-result.ts +37 -0
  84. package/src/interfaces/status-code-response.ts +7 -0
  85. package/src/interfaces/symmetric-encryption-results.d.ts +5 -0
  86. package/src/interfaces/symmetric-encryption-results.d.ts.map +1 -0
  87. package/src/interfaces/symmetric-encryption-results.js.map +1 -0
  88. package/src/interfaces/symmetric-encryption-results.ts +4 -0
  89. package/{dist/interfaces/token-response.d.ts → src/interfaces/token-response.ts} +2 -2
  90. package/src/middlewares/authenticate-crypto.ts +243 -0
  91. package/src/middlewares/authenticate-token.ts +152 -0
  92. package/src/middlewares/cleanup-crypto.ts +40 -0
  93. package/{dist/middlewares/index.d.ts → src/middlewares/index.ts} +0 -1
  94. package/src/middlewares/set-global-context-language.ts +24 -0
  95. package/src/middlewares.ts +120 -0
  96. package/src/model-registry.ts +75 -0
  97. package/src/models/email-token.ts +19 -0
  98. package/{dist/models/index.d.ts → src/models/index.ts} +0 -1
  99. package/src/models/mnemonic.ts +19 -0
  100. package/src/models/role.ts +19 -0
  101. package/src/models/used-direct-login-token.ts +23 -0
  102. package/src/models/user-role.ts +17 -0
  103. package/src/models/user.ts +19 -0
  104. package/src/registry/email-service-registry.ts +24 -0
  105. package/{dist/registry/index.d.ts → src/registry/index.ts} +0 -1
  106. package/src/routers/api.ts +151 -0
  107. package/src/routers/app.ts +258 -0
  108. package/src/routers/base.ts +17 -0
  109. package/{dist/routers/index.d.ts → src/routers/index.ts} +0 -1
  110. package/src/schemas/email-token.ts +91 -0
  111. package/{dist/schemas/index.d.ts → src/schemas/index.ts} +1 -2
  112. package/src/schemas/mnemonic.ts +37 -0
  113. package/src/schemas/role.ts +127 -0
  114. package/src/schemas/schema.ts +140 -0
  115. package/src/schemas/used-direct-login-token.ts +38 -0
  116. package/src/schemas/user-role.ts +75 -0
  117. package/src/schemas/user.ts +202 -0
  118. package/src/services/backup-code.ts +316 -0
  119. package/src/services/base.ts +33 -0
  120. package/src/services/checksum.ts +161 -0
  121. package/src/services/crc.ts +213 -0
  122. package/src/services/database-initialization.ts +1479 -0
  123. package/src/services/db-init-cache.d.ts +16 -0
  124. package/src/services/direct-login-token.ts +62 -0
  125. package/src/services/fec-usage-example.ts +102 -0
  126. package/src/services/fec.ts +296 -0
  127. package/{dist/services/index.d.ts → src/services/index.ts} +0 -1
  128. package/src/services/jwt.ts +134 -0
  129. package/src/services/key-wrapping.ts +434 -0
  130. package/src/services/mnemonic.ts +167 -0
  131. package/src/services/request-user.ts +62 -0
  132. package/src/services/role.ts +396 -0
  133. package/src/services/symmetric.ts +139 -0
  134. package/src/services/system-user.ts +82 -0
  135. package/src/services/user.ts +2137 -0
  136. package/src/services/xor.ts +34 -0
  137. package/src/types.d.ts +44 -0
  138. package/src/types.ts +128 -0
  139. package/src/utils.ts +1022 -0
  140. package/dist/application-base.d.ts +0 -112
  141. package/dist/application-base.d.ts.map +0 -1
  142. package/dist/application-base.js +0 -301
  143. package/dist/application-base.js.map +0 -1
  144. package/dist/application.d.ts +0 -23
  145. package/dist/application.d.ts.map +0 -1
  146. package/dist/application.js +0 -126
  147. package/dist/application.js.map +0 -1
  148. package/dist/backup-code.d.ts +0 -67
  149. package/dist/backup-code.d.ts.map +0 -1
  150. package/dist/backup-code.js +0 -270
  151. package/dist/backup-code.js.map +0 -1
  152. package/dist/constants.d.ts +0 -16
  153. package/dist/constants.d.ts.map +0 -1
  154. package/dist/constants.js +0 -54
  155. package/dist/constants.js.map +0 -1
  156. package/dist/controllers/base.d.ts +0 -63
  157. package/dist/controllers/base.d.ts.map +0 -1
  158. package/dist/controllers/base.js +0 -269
  159. package/dist/controllers/base.js.map +0 -1
  160. package/dist/controllers/index.d.ts.map +0 -1
  161. package/dist/controllers/index.js +0 -19
  162. package/dist/controllers/index.js.map +0 -1
  163. package/dist/controllers/user.d.ts +0 -45
  164. package/dist/controllers/user.d.ts.map +0 -1
  165. package/dist/controllers/user.js +0 -750
  166. package/dist/controllers/user.js.map +0 -1
  167. package/dist/decorators/base-controller.d.ts +0 -14
  168. package/dist/decorators/base-controller.d.ts.map +0 -1
  169. package/dist/decorators/base-controller.js +0 -49
  170. package/dist/decorators/base-controller.js.map +0 -1
  171. package/dist/decorators/controller.d.ts +0 -32
  172. package/dist/decorators/controller.d.ts.map +0 -1
  173. package/dist/decorators/controller.js +0 -67
  174. package/dist/decorators/controller.js.map +0 -1
  175. package/dist/decorators/index.d.ts.map +0 -1
  176. package/dist/decorators/index.js +0 -20
  177. package/dist/decorators/index.js.map +0 -1
  178. package/dist/decorators/zod-validation.d.ts +0 -5
  179. package/dist/decorators/zod-validation.d.ts.map +0 -1
  180. package/dist/decorators/zod-validation.js +0 -47
  181. package/dist/decorators/zod-validation.js.map +0 -1
  182. package/dist/defaults.d.ts +0 -7
  183. package/dist/defaults.d.ts.map +0 -1
  184. package/dist/defaults.js +0 -83
  185. package/dist/defaults.js.map +0 -1
  186. package/dist/documents/base.d.ts +0 -3
  187. package/dist/documents/base.d.ts.map +0 -1
  188. package/dist/documents/base.js +0 -3
  189. package/dist/documents/base.js.map +0 -1
  190. package/dist/documents/email-token.d.ts +0 -8
  191. package/dist/documents/email-token.d.ts.map +0 -1
  192. package/dist/documents/email-token.js +0 -3
  193. package/dist/documents/email-token.js.map +0 -1
  194. package/dist/documents/index.d.ts.map +0 -1
  195. package/dist/documents/index.js +0 -3
  196. package/dist/documents/index.js.map +0 -1
  197. package/dist/documents/mnemonic.d.ts.map +0 -1
  198. package/dist/documents/mnemonic.js +0 -3
  199. package/dist/documents/mnemonic.js.map +0 -1
  200. package/dist/documents/role.d.ts.map +0 -1
  201. package/dist/documents/role.js +0 -3
  202. package/dist/documents/role.js.map +0 -1
  203. package/dist/documents/used-direct-login-token.d.ts +0 -5
  204. package/dist/documents/used-direct-login-token.d.ts.map +0 -1
  205. package/dist/documents/used-direct-login-token.js +0 -3
  206. package/dist/documents/used-direct-login-token.js.map +0 -1
  207. package/dist/documents/user-role.d.ts.map +0 -1
  208. package/dist/documents/user-role.js +0 -3
  209. package/dist/documents/user-role.js.map +0 -1
  210. package/dist/documents/user.d.ts.map +0 -1
  211. package/dist/documents/user.js +0 -3
  212. package/dist/documents/user.js.map +0 -1
  213. package/dist/enumerations/base-model-name.d.ts +0 -38
  214. package/dist/enumerations/base-model-name.d.ts.map +0 -1
  215. package/dist/enumerations/base-model-name.js +0 -34
  216. package/dist/enumerations/base-model-name.js.map +0 -1
  217. package/dist/enumerations/index.d.ts.map +0 -1
  218. package/dist/enumerations/index.js +0 -21
  219. package/dist/enumerations/index.js.map +0 -1
  220. package/dist/enumerations/length-encoding-type.d.ts +0 -7
  221. package/dist/enumerations/length-encoding-type.d.ts.map +0 -1
  222. package/dist/enumerations/length-encoding-type.js +0 -11
  223. package/dist/enumerations/length-encoding-type.js.map +0 -1
  224. package/dist/enumerations/schema-collection.d.ts +0 -34
  225. package/dist/enumerations/schema-collection.d.ts.map +0 -1
  226. package/dist/enumerations/schema-collection.js +0 -38
  227. package/dist/enumerations/schema-collection.js.map +0 -1
  228. package/dist/enumerations/symmetric-error-type.d.ts +0 -5
  229. package/dist/enumerations/symmetric-error-type.d.ts.map +0 -1
  230. package/dist/enumerations/symmetric-error-type.js +0 -9
  231. package/dist/enumerations/symmetric-error-type.js.map +0 -1
  232. package/dist/environment.d.ts +0 -189
  233. package/dist/environment.d.ts.map +0 -1
  234. package/dist/environment.js +0 -618
  235. package/dist/environment.js.map +0 -1
  236. package/dist/errors/express-validation.d.ts +0 -9
  237. package/dist/errors/express-validation.d.ts.map +0 -1
  238. package/dist/errors/express-validation.js +0 -17
  239. package/dist/errors/express-validation.js.map +0 -1
  240. package/dist/errors/index.d.ts.map +0 -1
  241. package/dist/errors/index.js +0 -29
  242. package/dist/errors/index.js.map +0 -1
  243. package/dist/errors/invalid-backup-code-version.d.ts +0 -6
  244. package/dist/errors/invalid-backup-code-version.d.ts.map +0 -1
  245. package/dist/errors/invalid-backup-code-version.js +0 -14
  246. package/dist/errors/invalid-backup-code-version.js.map +0 -1
  247. package/dist/errors/invalid-jwt-token.d.ts +0 -5
  248. package/dist/errors/invalid-jwt-token.d.ts.map +0 -1
  249. package/dist/errors/invalid-jwt-token.js +0 -11
  250. package/dist/errors/invalid-jwt-token.js.map +0 -1
  251. package/dist/errors/invalid-model.d.ts +0 -6
  252. package/dist/errors/invalid-model.d.ts.map +0 -1
  253. package/dist/errors/invalid-model.js +0 -13
  254. package/dist/errors/invalid-model.js.map +0 -1
  255. package/dist/errors/invalid-new-password.d.ts +0 -5
  256. package/dist/errors/invalid-new-password.d.ts.map +0 -1
  257. package/dist/errors/invalid-new-password.js +0 -14
  258. package/dist/errors/invalid-new-password.js.map +0 -1
  259. package/dist/errors/invalid-password.d.ts +0 -5
  260. package/dist/errors/invalid-password.d.ts.map +0 -1
  261. package/dist/errors/invalid-password.js +0 -14
  262. package/dist/errors/invalid-password.js.map +0 -1
  263. package/dist/errors/missing-validated-data.d.ts +0 -7
  264. package/dist/errors/missing-validated-data.d.ts.map +0 -1
  265. package/dist/errors/missing-validated-data.js +0 -34
  266. package/dist/errors/missing-validated-data.js.map +0 -1
  267. package/dist/errors/mnemonic-or-password-required.d.ts +0 -5
  268. package/dist/errors/mnemonic-or-password-required.d.ts.map +0 -1
  269. package/dist/errors/mnemonic-or-password-required.js +0 -13
  270. package/dist/errors/mnemonic-or-password-required.js.map +0 -1
  271. package/dist/errors/model-not-registered.d.ts +0 -5
  272. package/dist/errors/model-not-registered.d.ts.map +0 -1
  273. package/dist/errors/model-not-registered.js +0 -12
  274. package/dist/errors/model-not-registered.js.map +0 -1
  275. package/dist/errors/mongoose-validation.d.ts +0 -11
  276. package/dist/errors/mongoose-validation.d.ts.map +0 -1
  277. package/dist/errors/mongoose-validation.js +0 -16
  278. package/dist/errors/mongoose-validation.js.map +0 -1
  279. package/dist/errors/symmetric.d.ts +0 -8
  280. package/dist/errors/symmetric.d.ts.map +0 -1
  281. package/dist/errors/symmetric.js +0 -23
  282. package/dist/errors/symmetric.js.map +0 -1
  283. package/dist/errors/token-expired.d.ts +0 -5
  284. package/dist/errors/token-expired.d.ts.map +0 -1
  285. package/dist/errors/token-expired.js +0 -11
  286. package/dist/errors/token-expired.js.map +0 -1
  287. package/dist/get-language.d.ts +0 -2
  288. package/dist/get-language.d.ts.map +0 -1
  289. package/dist/get-language.js +0 -30
  290. package/dist/get-language.js.map +0 -1
  291. package/dist/get-timezone.d.ts +0 -3
  292. package/dist/get-timezone.d.ts.map +0 -1
  293. package/dist/get-timezone.js +0 -31
  294. package/dist/get-timezone.js.map +0 -1
  295. package/dist/index.d.ts.map +0 -1
  296. package/dist/index.js +0 -40
  297. package/dist/index.js.map +0 -1
  298. package/dist/interfaces/api-error-response.d.ts.map +0 -1
  299. package/dist/interfaces/api-error-response.js +0 -3
  300. package/dist/interfaces/api-error-response.js.map +0 -1
  301. package/dist/interfaces/api-express-validation-error-response.d.ts +0 -7
  302. package/dist/interfaces/api-express-validation-error-response.d.ts.map +0 -1
  303. package/dist/interfaces/api-express-validation-error-response.js +0 -3
  304. package/dist/interfaces/api-express-validation-error-response.js.map +0 -1
  305. package/dist/interfaces/api-message-response.d.ts +0 -4
  306. package/dist/interfaces/api-message-response.d.ts.map +0 -1
  307. package/dist/interfaces/api-message-response.js +0 -3
  308. package/dist/interfaces/api-message-response.js.map +0 -1
  309. package/dist/interfaces/api-mongo-validation-error-response.d.ts.map +0 -1
  310. package/dist/interfaces/api-mongo-validation-error-response.js +0 -3
  311. package/dist/interfaces/api-mongo-validation-error-response.js.map +0 -1
  312. package/dist/interfaces/api-responses/backup-codes-response.d.ts.map +0 -1
  313. package/dist/interfaces/api-responses/backup-codes-response.js +0 -3
  314. package/dist/interfaces/api-responses/backup-codes-response.js.map +0 -1
  315. package/dist/interfaces/api-responses/challenge-response.d.ts.map +0 -1
  316. package/dist/interfaces/api-responses/challenge-response.js +0 -3
  317. package/dist/interfaces/api-responses/challenge-response.js.map +0 -1
  318. package/dist/interfaces/api-responses/code-count-response.d.ts.map +0 -1
  319. package/dist/interfaces/api-responses/code-count-response.js +0 -3
  320. package/dist/interfaces/api-responses/code-count-response.js.map +0 -1
  321. package/dist/interfaces/api-responses/index.d.ts.map +0 -1
  322. package/dist/interfaces/api-responses/index.js +0 -24
  323. package/dist/interfaces/api-responses/index.js.map +0 -1
  324. package/dist/interfaces/api-responses/login-response.d.ts.map +0 -1
  325. package/dist/interfaces/api-responses/login-response.js +0 -3
  326. package/dist/interfaces/api-responses/login-response.js.map +0 -1
  327. package/dist/interfaces/api-responses/mnemonic-response.d.ts.map +0 -1
  328. package/dist/interfaces/api-responses/mnemonic-response.js +0 -3
  329. package/dist/interfaces/api-responses/mnemonic-response.js.map +0 -1
  330. package/dist/interfaces/api-responses/registration-response.d.ts.map +0 -1
  331. package/dist/interfaces/api-responses/registration-response.js +0 -3
  332. package/dist/interfaces/api-responses/registration-response.js.map +0 -1
  333. package/dist/interfaces/api-responses/request-user-response.d.ts.map +0 -1
  334. package/dist/interfaces/api-responses/request-user-response.js +0 -3
  335. package/dist/interfaces/api-responses/request-user-response.js.map +0 -1
  336. package/dist/interfaces/application.d.ts.map +0 -1
  337. package/dist/interfaces/application.js +0 -3
  338. package/dist/interfaces/application.js.map +0 -1
  339. package/dist/interfaces/backend-objects/email-token.d.ts +0 -4
  340. package/dist/interfaces/backend-objects/email-token.d.ts.map +0 -1
  341. package/dist/interfaces/backend-objects/email-token.js +0 -3
  342. package/dist/interfaces/backend-objects/email-token.js.map +0 -1
  343. package/dist/interfaces/backend-objects/index.d.ts.map +0 -1
  344. package/dist/interfaces/backend-objects/index.js +0 -21
  345. package/dist/interfaces/backend-objects/index.js.map +0 -1
  346. package/dist/interfaces/backend-objects/request-user.d.ts.map +0 -1
  347. package/dist/interfaces/backend-objects/request-user.js +0 -3
  348. package/dist/interfaces/backend-objects/request-user.js.map +0 -1
  349. package/dist/interfaces/backend-objects/role.d.ts.map +0 -1
  350. package/dist/interfaces/backend-objects/role.js +0 -3
  351. package/dist/interfaces/backend-objects/role.js.map +0 -1
  352. package/dist/interfaces/backend-objects/user.d.ts +0 -4
  353. package/dist/interfaces/backend-objects/user.d.ts.map +0 -1
  354. package/dist/interfaces/backend-objects/user.js +0 -3
  355. package/dist/interfaces/backend-objects/user.js.map +0 -1
  356. package/dist/interfaces/checksum-config.d.ts +0 -5
  357. package/dist/interfaces/checksum-config.d.ts.map +0 -1
  358. package/dist/interfaces/checksum-config.js +0 -3
  359. package/dist/interfaces/checksum-config.js.map +0 -1
  360. package/dist/interfaces/checksum-consts.d.ts +0 -11
  361. package/dist/interfaces/checksum-consts.d.ts.map +0 -1
  362. package/dist/interfaces/checksum-consts.js +0 -3
  363. package/dist/interfaces/checksum-consts.js.map +0 -1
  364. package/dist/interfaces/constants.d.ts.map +0 -1
  365. package/dist/interfaces/constants.js +0 -3
  366. package/dist/interfaces/constants.js.map +0 -1
  367. package/dist/interfaces/create-user-basics.d.ts +0 -18
  368. package/dist/interfaces/create-user-basics.d.ts.map +0 -1
  369. package/dist/interfaces/create-user-basics.js +0 -3
  370. package/dist/interfaces/create-user-basics.js.map +0 -1
  371. package/dist/interfaces/csp-config.d.ts +0 -14
  372. package/dist/interfaces/csp-config.d.ts.map +0 -1
  373. package/dist/interfaces/csp-config.js +0 -3
  374. package/dist/interfaces/csp-config.js.map +0 -1
  375. package/dist/interfaces/deep-partial.d.ts +0 -4
  376. package/dist/interfaces/deep-partial.d.ts.map +0 -1
  377. package/dist/interfaces/deep-partial.js +0 -3
  378. package/dist/interfaces/deep-partial.js.map +0 -1
  379. package/dist/interfaces/discriminator-collections.d.ts.map +0 -1
  380. package/dist/interfaces/discriminator-collections.js +0 -3
  381. package/dist/interfaces/discriminator-collections.js.map +0 -1
  382. package/dist/interfaces/email-service.d.ts +0 -4
  383. package/dist/interfaces/email-service.d.ts.map +0 -1
  384. package/dist/interfaces/email-service.js +0 -3
  385. package/dist/interfaces/email-service.js.map +0 -1
  386. package/dist/interfaces/environment-mongo.d.ts +0 -76
  387. package/dist/interfaces/environment-mongo.d.ts.map +0 -1
  388. package/dist/interfaces/environment-mongo.js +0 -3
  389. package/dist/interfaces/environment-mongo.js.map +0 -1
  390. package/dist/interfaces/environment.d.ts +0 -181
  391. package/dist/interfaces/environment.d.ts.map +0 -1
  392. package/dist/interfaces/environment.js +0 -3
  393. package/dist/interfaces/environment.js.map +0 -1
  394. package/dist/interfaces/failable-result.d.ts +0 -7
  395. package/dist/interfaces/failable-result.d.ts.map +0 -1
  396. package/dist/interfaces/failable-result.js +0 -3
  397. package/dist/interfaces/failable-result.js.map +0 -1
  398. package/dist/interfaces/fec-consts.d.ts +0 -5
  399. package/dist/interfaces/fec-consts.d.ts.map +0 -1
  400. package/dist/interfaces/fec-consts.js +0 -3
  401. package/dist/interfaces/fec-consts.js.map +0 -1
  402. package/dist/interfaces/handleable-error-options.d.ts +0 -7
  403. package/dist/interfaces/handleable-error-options.d.ts.map +0 -1
  404. package/dist/interfaces/handleable-error-options.js +0 -3
  405. package/dist/interfaces/handleable-error-options.js.map +0 -1
  406. package/dist/interfaces/index.d.ts.map +0 -1
  407. package/dist/interfaces/index.js +0 -46
  408. package/dist/interfaces/index.js.map +0 -1
  409. package/dist/interfaces/jwt-consts.d.ts +0 -11
  410. package/dist/interfaces/jwt-consts.d.ts.map +0 -1
  411. package/dist/interfaces/jwt-consts.js +0 -3
  412. package/dist/interfaces/jwt-consts.js.map +0 -1
  413. package/dist/interfaces/jwt-sign-response.d.ts +0 -11
  414. package/dist/interfaces/jwt-sign-response.d.ts.map +0 -1
  415. package/dist/interfaces/jwt-sign-response.js +0 -3
  416. package/dist/interfaces/jwt-sign-response.js.map +0 -1
  417. package/dist/interfaces/mongo-errors.d.ts +0 -5
  418. package/dist/interfaces/mongo-errors.d.ts.map +0 -1
  419. package/dist/interfaces/mongo-errors.js +0 -3
  420. package/dist/interfaces/mongo-errors.js.map +0 -1
  421. package/dist/interfaces/request-user.d.ts +0 -42
  422. package/dist/interfaces/request-user.d.ts.map +0 -1
  423. package/dist/interfaces/request-user.js +0 -3
  424. package/dist/interfaces/request-user.js.map +0 -1
  425. package/dist/interfaces/required-string-keys.d.ts +0 -22
  426. package/dist/interfaces/required-string-keys.d.ts.map +0 -1
  427. package/dist/interfaces/required-string-keys.js +0 -3
  428. package/dist/interfaces/required-string-keys.js.map +0 -1
  429. package/dist/interfaces/schema.d.ts +0 -29
  430. package/dist/interfaces/schema.d.ts.map +0 -1
  431. package/dist/interfaces/schema.js +0 -3
  432. package/dist/interfaces/schema.js.map +0 -1
  433. package/dist/interfaces/server-init-result.d.ts +0 -35
  434. package/dist/interfaces/server-init-result.d.ts.map +0 -1
  435. package/dist/interfaces/server-init-result.js +0 -3
  436. package/dist/interfaces/server-init-result.js.map +0 -1
  437. package/dist/interfaces/status-code-response.d.ts +0 -7
  438. package/dist/interfaces/status-code-response.d.ts.map +0 -1
  439. package/dist/interfaces/status-code-response.js +0 -3
  440. package/dist/interfaces/status-code-response.js.map +0 -1
  441. package/dist/interfaces/symmetric-encryption-results.d.ts +0 -5
  442. package/dist/interfaces/symmetric-encryption-results.d.ts.map +0 -1
  443. package/dist/interfaces/symmetric-encryption-results.js.map +0 -1
  444. package/dist/interfaces/token-response.d.ts.map +0 -1
  445. package/dist/interfaces/token-response.js +0 -3
  446. package/dist/interfaces/token-response.js.map +0 -1
  447. package/dist/middlewares/authenticate-crypto.d.ts +0 -13
  448. package/dist/middlewares/authenticate-crypto.d.ts.map +0 -1
  449. package/dist/middlewares/authenticate-crypto.js +0 -146
  450. package/dist/middlewares/authenticate-crypto.js.map +0 -1
  451. package/dist/middlewares/authenticate-token.d.ts +0 -24
  452. package/dist/middlewares/authenticate-token.d.ts.map +0 -1
  453. package/dist/middlewares/authenticate-token.js +0 -102
  454. package/dist/middlewares/authenticate-token.js.map +0 -1
  455. package/dist/middlewares/cleanup-crypto.d.ts +0 -7
  456. package/dist/middlewares/cleanup-crypto.d.ts.map +0 -1
  457. package/dist/middlewares/cleanup-crypto.js +0 -32
  458. package/dist/middlewares/cleanup-crypto.js.map +0 -1
  459. package/dist/middlewares/index.d.ts.map +0 -1
  460. package/dist/middlewares/index.js +0 -21
  461. package/dist/middlewares/index.js.map +0 -1
  462. package/dist/middlewares/set-global-context-language.d.ts +0 -3
  463. package/dist/middlewares/set-global-context-language.d.ts.map +0 -1
  464. package/dist/middlewares/set-global-context-language.js +0 -14
  465. package/dist/middlewares/set-global-context-language.js.map +0 -1
  466. package/dist/middlewares.d.ts +0 -18
  467. package/dist/middlewares.d.ts.map +0 -1
  468. package/dist/middlewares.js +0 -76
  469. package/dist/middlewares.js.map +0 -1
  470. package/dist/model-registry.d.ts +0 -23
  471. package/dist/model-registry.d.ts.map +0 -1
  472. package/dist/model-registry.js +0 -47
  473. package/dist/model-registry.js.map +0 -1
  474. package/dist/models/email-token.d.ts +0 -11
  475. package/dist/models/email-token.d.ts.map +0 -1
  476. package/dist/models/email-token.js +0 -11
  477. package/dist/models/email-token.js.map +0 -1
  478. package/dist/models/index.d.ts.map +0 -1
  479. package/dist/models/index.js +0 -23
  480. package/dist/models/index.js.map +0 -1
  481. package/dist/models/mnemonic.d.ts +0 -11
  482. package/dist/models/mnemonic.d.ts.map +0 -1
  483. package/dist/models/mnemonic.js +0 -11
  484. package/dist/models/mnemonic.js.map +0 -1
  485. package/dist/models/role.d.ts +0 -11
  486. package/dist/models/role.d.ts.map +0 -1
  487. package/dist/models/role.js +0 -11
  488. package/dist/models/role.js.map +0 -1
  489. package/dist/models/used-direct-login-token.d.ts +0 -11
  490. package/dist/models/used-direct-login-token.d.ts.map +0 -1
  491. package/dist/models/used-direct-login-token.js +0 -11
  492. package/dist/models/used-direct-login-token.js.map +0 -1
  493. package/dist/models/user-role.d.ts +0 -6
  494. package/dist/models/user-role.d.ts.map +0 -1
  495. package/dist/models/user-role.js +0 -10
  496. package/dist/models/user-role.js.map +0 -1
  497. package/dist/models/user.d.ts +0 -7
  498. package/dist/models/user.d.ts.map +0 -1
  499. package/dist/models/user.js +0 -11
  500. package/dist/models/user.js.map +0 -1
  501. package/dist/registry/email-service-registry.d.ts +0 -9
  502. package/dist/registry/email-service-registry.d.ts.map +0 -1
  503. package/dist/registry/email-service-registry.js +0 -17
  504. package/dist/registry/email-service-registry.js.map +0 -1
  505. package/dist/registry/index.d.ts.map +0 -1
  506. package/dist/registry/index.js +0 -6
  507. package/dist/registry/index.js.map +0 -1
  508. package/dist/routers/api.d.ts +0 -27
  509. package/dist/routers/api.d.ts.map +0 -1
  510. package/dist/routers/api.js +0 -44
  511. package/dist/routers/api.js.map +0 -1
  512. package/dist/routers/app.d.ts +0 -28
  513. package/dist/routers/app.d.ts.map +0 -1
  514. package/dist/routers/app.js +0 -182
  515. package/dist/routers/app.js.map +0 -1
  516. package/dist/routers/base.d.ts +0 -12
  517. package/dist/routers/base.d.ts.map +0 -1
  518. package/dist/routers/base.js +0 -12
  519. package/dist/routers/base.js.map +0 -1
  520. package/dist/routers/index.d.ts.map +0 -1
  521. package/dist/routers/index.js +0 -20
  522. package/dist/routers/index.js.map +0 -1
  523. package/dist/schemas/email-token.d.ts +0 -38
  524. package/dist/schemas/email-token.d.ts.map +0 -1
  525. package/dist/schemas/email-token.js +0 -56
  526. package/dist/schemas/email-token.js.map +0 -1
  527. package/dist/schemas/index.d.ts.map +0 -1
  528. package/dist/schemas/index.js +0 -24
  529. package/dist/schemas/index.js.map +0 -1
  530. package/dist/schemas/mnemonic.d.ts +0 -20
  531. package/dist/schemas/mnemonic.d.ts.map +0 -1
  532. package/dist/schemas/mnemonic.js +0 -30
  533. package/dist/schemas/mnemonic.js.map +0 -1
  534. package/dist/schemas/role.d.ts +0 -32
  535. package/dist/schemas/role.d.ts.map +0 -1
  536. package/dist/schemas/role.js +0 -86
  537. package/dist/schemas/role.js.map +0 -1
  538. package/dist/schemas/schema.d.ts +0 -40
  539. package/dist/schemas/schema.d.ts.map +0 -1
  540. package/dist/schemas/schema.js +0 -64
  541. package/dist/schemas/schema.js.map +0 -1
  542. package/dist/schemas/used-direct-login-token.d.ts +0 -27
  543. package/dist/schemas/used-direct-login-token.d.ts.map +0 -1
  544. package/dist/schemas/used-direct-login-token.js +0 -23
  545. package/dist/schemas/used-direct-login-token.js.map +0 -1
  546. package/dist/schemas/user-role.d.ts +0 -29
  547. package/dist/schemas/user-role.d.ts.map +0 -1
  548. package/dist/schemas/user-role.js +0 -54
  549. package/dist/schemas/user-role.js.map +0 -1
  550. package/dist/schemas/user.d.ts +0 -21
  551. package/dist/schemas/user.d.ts.map +0 -1
  552. package/dist/schemas/user.js +0 -178
  553. package/dist/schemas/user.js.map +0 -1
  554. package/dist/services/backup-code.d.ts +0 -78
  555. package/dist/services/backup-code.d.ts.map +0 -1
  556. package/dist/services/backup-code.js +0 -180
  557. package/dist/services/backup-code.js.map +0 -1
  558. package/dist/services/base.d.ts +0 -13
  559. package/dist/services/base.d.ts.map +0 -1
  560. package/dist/services/base.js +0 -14
  561. package/dist/services/base.js.map +0 -1
  562. package/dist/services/checksum.d.ts +0 -67
  563. package/dist/services/checksum.d.ts.map +0 -1
  564. package/dist/services/checksum.js +0 -175
  565. package/dist/services/checksum.js.map +0 -1
  566. package/dist/services/crc.d.ts +0 -87
  567. package/dist/services/crc.d.ts.map +0 -1
  568. package/dist/services/crc.js +0 -198
  569. package/dist/services/crc.js.map +0 -1
  570. package/dist/services/database-initialization.d.ts +0 -105
  571. package/dist/services/database-initialization.d.ts.map +0 -1
  572. package/dist/services/database-initialization.js +0 -779
  573. package/dist/services/database-initialization.js.map +0 -1
  574. package/dist/services/direct-login-token.d.ts +0 -9
  575. package/dist/services/direct-login-token.d.ts.map +0 -1
  576. package/dist/services/direct-login-token.js +0 -41
  577. package/dist/services/direct-login-token.js.map +0 -1
  578. package/dist/services/fec-usage-example.d.ts +0 -38
  579. package/dist/services/fec-usage-example.d.ts.map +0 -1
  580. package/dist/services/fec-usage-example.js +0 -77
  581. package/dist/services/fec-usage-example.js.map +0 -1
  582. package/dist/services/fec.d.ts +0 -46
  583. package/dist/services/fec.d.ts.map +0 -1
  584. package/dist/services/fec.js +0 -192
  585. package/dist/services/fec.js.map +0 -1
  586. package/dist/services/index.d.ts.map +0 -1
  587. package/dist/services/index.js +0 -35
  588. package/dist/services/index.js.map +0 -1
  589. package/dist/services/jwt.d.ts +0 -33
  590. package/dist/services/jwt.d.ts.map +0 -1
  591. package/dist/services/jwt.js +0 -90
  592. package/dist/services/jwt.js.map +0 -1
  593. package/dist/services/key-wrapping.d.ts +0 -60
  594. package/dist/services/key-wrapping.d.ts.map +0 -1
  595. package/dist/services/key-wrapping.js +0 -311
  596. package/dist/services/key-wrapping.js.map +0 -1
  597. package/dist/services/mnemonic.d.ts +0 -61
  598. package/dist/services/mnemonic.d.ts.map +0 -1
  599. package/dist/services/mnemonic.js +0 -112
  600. package/dist/services/mnemonic.js.map +0 -1
  601. package/dist/services/request-user.d.ts +0 -20
  602. package/dist/services/request-user.d.ts.map +0 -1
  603. package/dist/services/request-user.js +0 -50
  604. package/dist/services/request-user.js.map +0 -1
  605. package/dist/services/role.d.ts +0 -88
  606. package/dist/services/role.d.ts.map +0 -1
  607. package/dist/services/role.js +0 -263
  608. package/dist/services/role.js.map +0 -1
  609. package/dist/services/symmetric.d.ts +0 -42
  610. package/dist/services/symmetric.d.ts.map +0 -1
  611. package/dist/services/symmetric.js +0 -101
  612. package/dist/services/symmetric.js.map +0 -1
  613. package/dist/services/system-user.d.ts +0 -17
  614. package/dist/services/system-user.d.ts.map +0 -1
  615. package/dist/services/system-user.js +0 -46
  616. package/dist/services/system-user.js.map +0 -1
  617. package/dist/services/user.d.ts +0 -320
  618. package/dist/services/user.d.ts.map +0 -1
  619. package/dist/services/user.js +0 -1374
  620. package/dist/services/user.js.map +0 -1
  621. package/dist/services/xor.d.ts +0 -24
  622. package/dist/services/xor.d.ts.map +0 -1
  623. package/dist/services/xor.js +0 -37
  624. package/dist/services/xor.js.map +0 -1
  625. package/dist/types.d.ts +0 -70
  626. package/dist/types.d.ts.map +0 -1
  627. package/dist/types.js +0 -14
  628. package/dist/types.js.map +0 -1
  629. package/dist/utils.d.ts +0 -202
  630. package/dist/utils.d.ts.map +0 -1
  631. package/dist/utils.js +0 -786
  632. package/dist/utils.js.map +0 -1
  633. /package/{dist → src}/interfaces/symmetric-encryption-results.js +0 -0
@@ -1,779 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DatabaseInitializationService = void 0;
4
- const ecies_lib_1 = require("@digitaldefiance/ecies-lib");
5
- const node_ecies_lib_1 = require("@digitaldefiance/node-ecies-lib");
6
- const suite_core_lib_1 = require("@digitaldefiance/suite-core-lib");
7
- const crypto_1 = require("crypto");
8
- const mongodb_1 = require("mongodb");
9
- const mongoose_1 = require("mongoose");
10
- const zlib_1 = require("zlib");
11
- const backup_code_1 = require("../backup-code");
12
- const base_model_name_1 = require("../enumerations/base-model-name");
13
- const model_registry_1 = require("../model-registry");
14
- const key_wrapping_1 = require("../services/key-wrapping");
15
- const utils_1 = require("../utils");
16
- const backup_code_2 = require("./backup-code");
17
- const mnemonic_1 = require("./mnemonic");
18
- const role_1 = require("./role");
19
- const system_user_1 = require("./system-user");
20
- class DatabaseInitializationService {
21
- /**
22
- * Get the mnemonic or generate a new one if not present
23
- * @param mnemonic The existing mnemonic or undefined
24
- * @param eciesService The ECIES service to generate a new mnemonic
25
- * @returns The existing or new mnemonic
26
- */
27
- static mnemonicOrNew(mnemonic, eciesService) {
28
- return mnemonic && mnemonic.hasValue
29
- ? mnemonic
30
- : eciesService.generateNewMnemonic();
31
- }
32
- /**
33
- * Generate a cache key for a user based on their details
34
- * @param username The username
35
- * @param email The email address
36
- * @param mnemonic The mnemonic
37
- * @param id The user ID
38
- * @returns The generated cache key
39
- */
40
- static cacheKey(username, email, mnemonic, id) {
41
- const combined = `${username}|${email.email}|${mnemonic.value}|${id.toString()}`;
42
- const buffer = Buffer.from(combined, 'utf-8');
43
- const crcHash = (0, zlib_1.crc32)(buffer);
44
- return crcHash.toString(16).padStart(8, '0');
45
- }
46
- /**
47
- * Get a cached BackendMember or create a new one if not cached
48
- * @param username The username
49
- * @param email The email address
50
- * @param mnemonic The mnemonic or undefined to generate a new one
51
- * @param memberType The type of member (Admin, Member, System)
52
- * @param eciesService The ECIES service to handle key generation
53
- * @param memberId Optional specific member ID to use
54
- * @param createdBy Optional ID of the user who created this member
55
- * @returns The cached or newly created BackendMember and the mnemonic used
56
- */
57
- static cacheOrNew(username, email, mnemonic, memberType, eciesService, memberId, createdBy) {
58
- const m = this.mnemonicOrNew(mnemonic, eciesService);
59
- const newId = memberId ? memberId : new mongodb_1.ObjectId();
60
- const key = DatabaseInitializationService.cacheKey(username, email, m, newId);
61
- if (!global.__MEMBER_CACHE__) {
62
- global.__MEMBER_CACHE__ = new Map();
63
- }
64
- if (!global.__MEMBER_CACHE__.has(key)) {
65
- const { wallet } = eciesService.walletAndSeedFromMnemonic(m);
66
- // Get private key from wallet
67
- const privateKey = wallet.getPrivateKey();
68
- // Get public key with 0x04 prefix
69
- const publicKeyWithPrefix = Buffer.concat([
70
- Buffer.from([ecies_lib_1.ECIES.PUBLIC_KEY_MAGIC]),
71
- wallet.getPublicKey(),
72
- ]);
73
- const user = new node_ecies_lib_1.Member(eciesService, memberType, username, email, publicKeyWithPrefix, new ecies_lib_1.SecureBuffer(privateKey), wallet, newId, undefined, undefined, createdBy);
74
- global.__MEMBER_CACHE__.set(key, { mnemonic: m, member: user });
75
- return { mnemonic: m, member: user };
76
- }
77
- else {
78
- return global.__MEMBER_CACHE__.get(key);
79
- }
80
- }
81
- /**
82
- * Generate a random password
83
- * @param length The length of the password
84
- * @returns The generated password
85
- */
86
- static generatePassword(length) {
87
- const specialCharacters = "!@#$%^&*()_+-=[]{};':|,.<>/?";
88
- const numbers = '0123456789';
89
- const letters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
90
- // Get a random character from a string
91
- const getRandomChar = (chars) => {
92
- // amazonq-ignore-next-line false positive
93
- const randomIndex = (0, crypto_1.randomBytes)(1)[0] % chars.length;
94
- return chars[randomIndex];
95
- };
96
- // Start with one of each required character type
97
- // amazonq-ignore-next-line false positive
98
- let password = '';
99
- password += getRandomChar(letters);
100
- password += getRandomChar(numbers);
101
- password += getRandomChar(specialCharacters);
102
- // Fill the rest with random characters from all types
103
- const allCharacters = specialCharacters + numbers + letters;
104
- for (let i = password.length; i < length; i++) {
105
- password += getRandomChar(allCharacters);
106
- }
107
- // Shuffle the password characters to avoid predictable pattern
108
- const chars = password.split('');
109
- for (let i = chars.length - 1; i > 0; i--) {
110
- // amazonq-ignore-next-line already fixed
111
- const j = (0, crypto_1.randomBytes)(1)[0] % (i + 1);
112
- [chars[i], chars[j]] = [chars[j], chars[i]];
113
- }
114
- return chars.join('');
115
- }
116
- /**
117
- * Drops the database
118
- * @param connection The database connection
119
- * @returns True if the database was dropped, false if not connected
120
- */
121
- static async dropDatabase(connection) {
122
- if (!connection.db)
123
- return false;
124
- (0, utils_1.debugLog)(true, 'warn', this.defaultI18nTFunc('{{StringName.Admin_DroppingDatabase}}'));
125
- return connection.db.dropDatabase();
126
- }
127
- static getInitOptions(application) {
128
- return {
129
- adminId: application.environment.adminId
130
- ? application.environment.adminId
131
- : undefined,
132
- adminMnemonic: application.environment.adminMnemonic?.hasValue
133
- ? application.environment.adminMnemonic
134
- : undefined,
135
- adminPassword: application.environment.adminPassword?.hasValue
136
- ? application.environment.adminPassword
137
- : undefined,
138
- adminRoleId: application.environment.adminRoleId
139
- ? application.environment.adminRoleId
140
- : undefined,
141
- adminUserRoleId: application.environment.adminUserRoleId
142
- ? application.environment.adminUserRoleId
143
- : undefined,
144
- adminBackupCodes: application.environment.adminBackupCodes
145
- ? application.environment.adminBackupCodes
146
- : undefined,
147
- memberId: application.environment.memberId
148
- ? application.environment.memberId
149
- : undefined,
150
- memberMnemonic: application.environment.memberMnemonic?.hasValue
151
- ? application.environment.memberMnemonic
152
- : undefined,
153
- memberPassword: application.environment.memberPassword?.hasValue
154
- ? application.environment.memberPassword
155
- : undefined,
156
- memberRoleId: application.environment.memberRoleId
157
- ? application.environment.memberRoleId
158
- : undefined,
159
- memberUserRoleId: application.environment.memberUserRoleId
160
- ? application.environment.memberUserRoleId
161
- : undefined,
162
- memberBackupCodes: application.environment.memberBackupCodes
163
- ? application.environment.memberBackupCodes
164
- : undefined,
165
- systemId: application.environment.systemId
166
- ? application.environment.systemId
167
- : undefined,
168
- systemMnemonic: application.environment.systemMnemonic?.hasValue
169
- ? application.environment.systemMnemonic
170
- : undefined,
171
- systemPassword: application.environment.systemPassword?.hasValue
172
- ? application.environment.systemPassword
173
- : undefined,
174
- systemRoleId: application.environment.systemRoleId
175
- ? application.environment.systemRoleId
176
- : undefined,
177
- systemUserRoleId: application.environment.systemUserRoleId
178
- ? application.environment.systemUserRoleId
179
- : undefined,
180
- systemBackupCodes: application.environment.systemBackupCodes
181
- ? application.environment.systemBackupCodes
182
- : undefined,
183
- };
184
- }
185
- static serverInitResultHash(serverInitResult) {
186
- const h = (0, crypto_1.createHash)('sha256');
187
- h.update(serverInitResult.adminUser._id.toHexString());
188
- h.update(serverInitResult.adminRole._id.toHexString());
189
- h.update(serverInitResult.adminUserRole._id.toHexString());
190
- h.update(serverInitResult.adminUsername);
191
- h.update(serverInitResult.adminEmail);
192
- h.update(serverInitResult.adminMnemonic);
193
- h.update(serverInitResult.adminPassword);
194
- h.update(serverInitResult.adminUser.publicKey);
195
- serverInitResult.adminBackupCodes.map((bc) => h.update(bc));
196
- h.update(serverInitResult.memberUser._id.toHexString());
197
- h.update(serverInitResult.memberRole._id.toHexString());
198
- h.update(serverInitResult.memberUserRole._id.toHexString());
199
- h.update(serverInitResult.memberUsername);
200
- h.update(serverInitResult.memberEmail);
201
- h.update(serverInitResult.memberMnemonic);
202
- h.update(serverInitResult.memberPassword);
203
- h.update(serverInitResult.memberUser.publicKey);
204
- serverInitResult.memberBackupCodes.map((bc) => h.update(bc));
205
- h.update(serverInitResult.systemUser._id.toHexString());
206
- h.update(serverInitResult.systemRole._id.toHexString());
207
- h.update(serverInitResult.systemUserRole._id.toHexString());
208
- h.update(serverInitResult.systemUsername);
209
- h.update(serverInitResult.systemEmail);
210
- h.update(serverInitResult.systemMnemonic);
211
- h.update(serverInitResult.systemPassword);
212
- h.update(serverInitResult.systemUser.publicKey);
213
- serverInitResult.systemBackupCodes.map((bc) => h.update(bc));
214
- return h.digest('hex');
215
- }
216
- /**
217
- * Initialize the user database with default users and roles (with dependency injection)
218
- * @param application The application
219
- * @param keyWrappingService The key wrapping service
220
- * @param mnemonicService The mnemonic service
221
- * @param eciesService The ECIES service
222
- * @param roleService The role service
223
- * @param backupCodeService The backup code service
224
- * @returns The result of the initialization
225
- */
226
- static async initUserDbWithServices(application, keyWrappingService, mnemonicService, eciesService, roleService, backupCodeService) {
227
- const isTestEnvironment = process.env['NODE_ENV'] === 'test';
228
- const options = DatabaseInitializationService.getInitOptions(application);
229
- const UserModel = model_registry_1.ModelRegistry.instance.getTypedModel(base_model_name_1.BaseModelName.User);
230
- const RoleModel = model_registry_1.ModelRegistry.instance.getTypedModel(base_model_name_1.BaseModelName.Role);
231
- const adminUserId = options.adminId ?? new mongoose_1.Types.ObjectId();
232
- const adminRoleId = options.adminRoleId ?? new mongoose_1.Types.ObjectId();
233
- const adminUserRoleId = options.adminUserRoleId ?? new mongoose_1.Types.ObjectId();
234
- const memberUserId = options.memberId ?? new mongoose_1.Types.ObjectId();
235
- const memberRoleId = options.memberRoleId ?? new mongoose_1.Types.ObjectId();
236
- const memberUserRoleId = options.memberUserRoleId ?? new mongoose_1.Types.ObjectId();
237
- const systemUserId = options.systemId ?? new mongoose_1.Types.ObjectId();
238
- const systemRoleId = options.systemRoleId ?? new mongoose_1.Types.ObjectId();
239
- const systemUserRoleId = options.systemUserRoleId ?? new mongoose_1.Types.ObjectId();
240
- // Check for existing users and roles with optimized queries
241
- // Use lean() for better performance on read-only operations
242
- const [existingUsers, existingRoles] = await Promise.all([
243
- UserModel.find({
244
- username: {
245
- $in: [
246
- suite_core_lib_1.Constants.SystemUser,
247
- suite_core_lib_1.Constants.AdministratorUser,
248
- suite_core_lib_1.Constants.MemberUser,
249
- ],
250
- },
251
- }).lean(),
252
- RoleModel.find({
253
- name: {
254
- $in: [
255
- suite_core_lib_1.Constants.AdministratorRole,
256
- suite_core_lib_1.Constants.MemberRole,
257
- suite_core_lib_1.Constants.SystemRole,
258
- ],
259
- },
260
- }).lean(),
261
- ]);
262
- if (existingUsers.length > 0 || existingRoles.length > 0) {
263
- // Database is already initialized, return the existing data
264
- const existingAdminUser = existingUsers.find((u) => u.username === suite_core_lib_1.Constants.AdministratorUser);
265
- const existingMemberUser = existingUsers.find((u) => u.username === suite_core_lib_1.Constants.MemberUser);
266
- const existingSystemUser = existingUsers.find((u) => u.username === suite_core_lib_1.Constants.SystemUser);
267
- if (existingAdminUser && existingMemberUser && existingSystemUser) {
268
- // Try to construct a minimal result from existing data
269
- // Note: This is a fallback case and some data may not be available
270
- const UserRoleModel = model_registry_1.ModelRegistry.instance.getTypedModel(base_model_name_1.BaseModelName.UserRole);
271
- const [adminRole, memberRole, systemRole, adminUserRole, memberUserRole, systemUserRole,] = await Promise.all([
272
- RoleModel.findOne({ name: suite_core_lib_1.Constants.AdministratorRole }),
273
- RoleModel.findOne({ name: suite_core_lib_1.Constants.MemberRole }),
274
- RoleModel.findOne({ name: suite_core_lib_1.Constants.SystemRole }),
275
- UserRoleModel.findOne({ userId: existingAdminUser._id }),
276
- UserRoleModel.findOne({ userId: existingMemberUser._id }),
277
- UserRoleModel.findOne({ userId: existingSystemUser._id }),
278
- ]);
279
- if (adminRole &&
280
- memberRole &&
281
- systemRole &&
282
- adminUserRole &&
283
- memberUserRole &&
284
- systemUserRole) {
285
- return {
286
- success: true,
287
- data: {
288
- adminRole,
289
- adminUserRole,
290
- adminUser: existingAdminUser,
291
- adminUsername: existingAdminUser.username,
292
- adminEmail: existingAdminUser.email,
293
- adminMnemonic: '', // Not available in fallback
294
- adminPassword: '', // Not available in fallback
295
- adminBackupCodes: [], // Not available in fallback
296
- adminMember: {}, // Not available in fallback
297
- memberRole,
298
- memberUserRole,
299
- memberUser: existingMemberUser,
300
- memberUsername: existingMemberUser.username,
301
- memberEmail: existingMemberUser.email,
302
- memberMnemonic: '', // Not available in fallback
303
- memberPassword: '', // Not available in fallback
304
- memberBackupCodes: [], // Not available in fallback
305
- memberMember: {}, // Not available in fallback
306
- systemRole,
307
- systemUserRole,
308
- systemUser: existingSystemUser,
309
- systemUsername: existingSystemUser.username,
310
- systemEmail: existingSystemUser.email,
311
- systemMnemonic: '', // Not available in fallback
312
- systemPassword: '', // Not available in fallback
313
- systemBackupCodes: [], // Not available in fallback
314
- systemMember: {}, // Not available in fallback
315
- },
316
- };
317
- }
318
- }
319
- return {
320
- success: false,
321
- message: (0, suite_core_lib_1.getSuiteCoreI18nEngine)().translate(suite_core_lib_1.SuiteCoreComponentId, suite_core_lib_1.SuiteCoreStringKey.Admin_DatabaseAlreadyInitialized),
322
- error: new Error((0, suite_core_lib_1.getSuiteCoreI18nEngine)().translate(suite_core_lib_1.SuiteCoreComponentId, suite_core_lib_1.SuiteCoreStringKey.Admin_DatabaseAlreadyInitialized)),
323
- };
324
- }
325
- (0, utils_1.debugLog)(application.environment.detailedDebug, 'log', (0, suite_core_lib_1.getSuiteCoreI18nEngine)().translate(suite_core_lib_1.SuiteCoreComponentId, suite_core_lib_1.SuiteCoreStringKey.Admin_SettingUpUsersAndRoles));
326
- const now = new Date();
327
- // Add a small random delay in test environments to reduce collision probability
328
- if (isTestEnvironment) {
329
- const delay = (0, crypto_1.randomBytes)(1)[0] % 50 + 10; // 10-60ms random delay (reduced)
330
- await new Promise((resolve) => setTimeout(resolve, delay));
331
- }
332
- try {
333
- // Use test-optimized settings for better performance
334
- const transactionOptions = isTestEnvironment
335
- ? { timeoutMs: 15000, retryAttempts: 2 } // Reduced timeout and retries for tests
336
- : { timeoutMs: 120000 }; // Keep original production timeout
337
- const result = await (0, utils_1.withTransaction)(application.db.connection, application.environment.mongo.useTransactions, undefined, async (sess) => {
338
- // Check if admin role already exists
339
- let adminRole = await RoleModel.findOne({
340
- name: suite_core_lib_1.Constants.AdministratorRole,
341
- }).session(sess ?? null);
342
- if (!adminRole) {
343
- const adminRoleDocs = await RoleModel.create([
344
- {
345
- _id: adminRoleId,
346
- name: suite_core_lib_1.Constants.AdministratorRole,
347
- admin: true,
348
- member: true,
349
- system: false,
350
- child: false,
351
- createdAt: now,
352
- updatedAt: now,
353
- createdBy: systemUserId,
354
- updatedBy: systemUserId,
355
- },
356
- ], { session: sess });
357
- if (adminRoleDocs.length !== 1) {
358
- throw new suite_core_lib_1.TranslatableSuiteError(suite_core_lib_1.SuiteCoreStringKey.Error_FailedToCreateRoleTemplate, {
359
- NAME: suite_core_lib_1.Constants.AdministratorRole,
360
- });
361
- }
362
- adminRole = adminRoleDocs[0];
363
- }
364
- // Check if member role already exists
365
- let memberRole = await RoleModel.findOne({
366
- name: suite_core_lib_1.Constants.MemberRole,
367
- }).session(sess ?? null);
368
- if (!memberRole) {
369
- const memberRoleDocs = await RoleModel.create([
370
- {
371
- _id: memberRoleId,
372
- name: suite_core_lib_1.Constants.MemberRole,
373
- admin: false,
374
- member: true,
375
- child: false,
376
- system: false,
377
- createdAt: now,
378
- updatedAt: now,
379
- createdBy: systemUserId,
380
- updatedBy: systemUserId,
381
- },
382
- ], { session: sess });
383
- if (memberRoleDocs.length !== 1) {
384
- throw new suite_core_lib_1.TranslatableSuiteError(suite_core_lib_1.SuiteCoreStringKey.Error_FailedToCreateRoleTemplate, {
385
- NAME: (0, suite_core_lib_1.getSuiteCoreI18nEngine)().translate(suite_core_lib_1.SuiteCoreComponentId, suite_core_lib_1.SuiteCoreStringKey.Common_Member),
386
- });
387
- }
388
- memberRole = memberRoleDocs[0];
389
- }
390
- // Check if system role already exists
391
- let systemRole = await RoleModel.findOne({
392
- name: suite_core_lib_1.Constants.SystemRole,
393
- }).session(sess ?? null);
394
- if (!systemRole) {
395
- const systemRoleDocs = await RoleModel.create([
396
- {
397
- _id: systemRoleId,
398
- name: suite_core_lib_1.Constants.SystemRole,
399
- admin: true,
400
- member: true,
401
- system: true,
402
- child: false,
403
- createdAt: now,
404
- updatedAt: now,
405
- createdBy: systemUserId,
406
- updatedBy: systemUserId,
407
- },
408
- ], { session: sess });
409
- if (systemRoleDocs.length !== 1) {
410
- throw new suite_core_lib_1.TranslatableSuiteError(suite_core_lib_1.SuiteCoreStringKey.Error_FailedToCreateRoleTemplate);
411
- }
412
- systemRole = systemRoleDocs[0];
413
- }
414
- const systemUser = DatabaseInitializationService.cacheOrNew(suite_core_lib_1.Constants.SystemUser, new ecies_lib_1.EmailString(suite_core_lib_1.Constants.SystemEmail), options.systemMnemonic, ecies_lib_1.MemberType.System, eciesService, options.systemId, options.systemId);
415
- backupCodeService.setSystemUser(systemUser.member);
416
- system_user_1.SystemUserService.setSystemUser(systemUser.member);
417
- // Encrypt mnemonic for recovery
418
- const systemEncryptedMnemonic = systemUser.member
419
- .encryptData(Buffer.from(systemUser.mnemonic.value ?? '', 'utf-8'))
420
- .toString('hex');
421
- const systemMnemonicDoc = await mnemonicService.addMnemonic(systemUser.mnemonic, sess);
422
- if (!systemMnemonicDoc) {
423
- throw new Error((0, suite_core_lib_1.getSuiteCoreI18nEngine)().translate(suite_core_lib_1.SuiteCoreComponentId, suite_core_lib_1.SuiteCoreStringKey.Error_FailedToStoreUserMnemonicTemplate, {
424
- NAME: (0, suite_core_lib_1.getSuiteCoreI18nEngine)().translate(suite_core_lib_1.SuiteCoreComponentId, suite_core_lib_1.SuiteCoreStringKey.Common_System),
425
- }));
426
- }
427
- const systemPasswordSecure = options.systemPassword
428
- ? options.systemPassword
429
- : new ecies_lib_1.SecureString(this.generatePassword(16));
430
- const systemWrapped = keyWrappingService.wrapSecret(systemUser.member.privateKey, systemPasswordSecure);
431
- const systemBackupCodes = options.systemBackupCodes ?? backup_code_1.BackupCode.generateBackupCodes();
432
- const encryptedSystemBackupCodes = await backup_code_1.BackupCode.encryptBackupCodes(systemUser.member, systemUser.member, systemBackupCodes);
433
- const systemDocs = await UserModel.create([
434
- {
435
- _id: systemUserId,
436
- username: suite_core_lib_1.Constants.SystemUser,
437
- email: suite_core_lib_1.Constants.SystemEmail,
438
- publicKey: systemUser.member.publicKey.toString('hex'),
439
- duressPasswords: [],
440
- mnemonicRecovery: systemEncryptedMnemonic,
441
- mnemonicId: systemMnemonicDoc._id,
442
- passwordWrappedPrivateKey: systemWrapped,
443
- backupCodes: encryptedSystemBackupCodes,
444
- timezone: application.environment.timezone.value,
445
- siteLanguage: 'en-US',
446
- emailVerified: true,
447
- accountStatus: suite_core_lib_1.AccountStatus.Active,
448
- createdAt: now,
449
- updatedAt: now,
450
- createdBy: systemUserId,
451
- updatedBy: systemUserId,
452
- },
453
- ], { session: sess });
454
- if (systemDocs.length !== 1) {
455
- throw new Error((0, suite_core_lib_1.getSuiteCoreI18nEngine)().translate(suite_core_lib_1.SuiteCoreComponentId, suite_core_lib_1.SuiteCoreStringKey.Error_FailedToCreateUserTemplate, {
456
- NAME: (0, suite_core_lib_1.getSuiteCoreI18nEngine)().translate(suite_core_lib_1.SuiteCoreComponentId, suite_core_lib_1.SuiteCoreStringKey.Common_System),
457
- }));
458
- }
459
- const systemDoc = systemDocs[0];
460
- // Create admin user-role relationship
461
- const systemUserRoleDoc = await roleService.addUserToRole(systemRoleId, systemUserId, systemUserId, sess, systemUserRoleId);
462
- if (!systemUser.mnemonic.value) {
463
- throw new Error((0, suite_core_lib_1.getSuiteCoreI18nEngine)().translate(suite_core_lib_1.SuiteCoreComponentId, suite_core_lib_1.SuiteCoreStringKey.Error_MnemonicIsNullTemplate, {
464
- NAME: suite_core_lib_1.SuiteCoreStringKey.Common_System,
465
- }));
466
- }
467
- const adminUser = DatabaseInitializationService.cacheOrNew(suite_core_lib_1.Constants.AdministratorUser, new ecies_lib_1.EmailString(suite_core_lib_1.Constants.AdministratorEmail), options.adminMnemonic, ecies_lib_1.MemberType.User, eciesService, options.adminId, systemDoc._id);
468
- // Encrypt mnemonic for recovery
469
- const adminEncryptedMnemonic = adminUser.member
470
- .encryptData(Buffer.from(adminUser.mnemonic.value ?? '', 'utf-8'))
471
- .toString('hex');
472
- const adminMnemonicDoc = await mnemonicService.addMnemonic(adminUser.mnemonic, sess);
473
- if (!adminMnemonicDoc) {
474
- throw new Error((0, suite_core_lib_1.getSuiteCoreI18nEngine)().translate(suite_core_lib_1.SuiteCoreComponentId, suite_core_lib_1.SuiteCoreStringKey.Error_FailedToStoreUserMnemonicTemplate, {
475
- NAME: (0, suite_core_lib_1.getSuiteCoreI18nEngine)().translate(suite_core_lib_1.SuiteCoreComponentId, suite_core_lib_1.SuiteCoreStringKey.Common_Admin),
476
- }));
477
- }
478
- const adminPasswordSecure = options.adminPassword
479
- ? options.adminPassword
480
- : new ecies_lib_1.SecureString(this.generatePassword(16));
481
- const adminWrapped = keyWrappingService.wrapSecret(adminUser.member.privateKey, adminPasswordSecure);
482
- const adminBackupCodes = options.adminBackupCodes ?? backup_code_1.BackupCode.generateBackupCodes();
483
- const encryptedAdminBackupCodes = await backup_code_1.BackupCode.encryptBackupCodes(adminUser.member, systemUser.member, adminBackupCodes);
484
- const adminDocs = await UserModel.create([
485
- {
486
- _id: adminUserId,
487
- username: suite_core_lib_1.Constants.AdministratorUser,
488
- email: suite_core_lib_1.Constants.AdministratorEmail,
489
- publicKey: adminUser.member.publicKey.toString('hex'),
490
- duressPasswords: [],
491
- mnemonicRecovery: adminEncryptedMnemonic,
492
- mnemonicId: adminMnemonicDoc._id,
493
- passwordWrappedPrivateKey: adminWrapped,
494
- backupCodes: encryptedAdminBackupCodes,
495
- timezone: application.environment.timezone.value,
496
- siteLanguage: 'en-US',
497
- emailVerified: true,
498
- accountStatus: suite_core_lib_1.AccountStatus.Active,
499
- createdAt: now,
500
- updatedAt: now,
501
- createdBy: systemUserId,
502
- updatedBy: systemUserId,
503
- },
504
- ], { session: sess });
505
- if (adminDocs.length !== 1) {
506
- throw new Error((0, suite_core_lib_1.getSuiteCoreI18nEngine)().translate(suite_core_lib_1.SuiteCoreComponentId, suite_core_lib_1.SuiteCoreStringKey.Error_FailedToCreateUserTemplate, {
507
- NAME: (0, suite_core_lib_1.getSuiteCoreI18nEngine)().translate(suite_core_lib_1.SuiteCoreComponentId, suite_core_lib_1.SuiteCoreStringKey.Common_Admin),
508
- }));
509
- }
510
- const adminDoc = adminDocs[0];
511
- // Create admin user-role relationship
512
- const adminUserRoleDoc = await roleService.addUserToRole(adminRoleId, adminUserId, systemUserId, sess, adminUserRoleId);
513
- if (!adminUser.mnemonic.value) {
514
- throw new Error((0, suite_core_lib_1.getSuiteCoreI18nEngine)().translate(suite_core_lib_1.SuiteCoreComponentId, suite_core_lib_1.SuiteCoreStringKey.Error_MnemonicIsNullTemplate, {
515
- NAME: (0, suite_core_lib_1.getSuiteCoreI18nEngine)().translate(suite_core_lib_1.SuiteCoreComponentId, suite_core_lib_1.SuiteCoreStringKey.Common_Admin),
516
- }));
517
- }
518
- const memberUser = DatabaseInitializationService.cacheOrNew(suite_core_lib_1.Constants.MemberUser, new ecies_lib_1.EmailString(suite_core_lib_1.Constants.MemberEmail), options.memberMnemonic, ecies_lib_1.MemberType.User, eciesService, options.memberId, systemDoc._id);
519
- const memberPasswordSecure = options.memberPassword
520
- ? options.memberPassword
521
- : new ecies_lib_1.SecureString(this.generatePassword(16));
522
- const memberMnemonicDoc = await mnemonicService.addMnemonic(memberUser.mnemonic, sess);
523
- if (!memberMnemonicDoc) {
524
- throw new Error((0, suite_core_lib_1.getSuiteCoreI18nEngine)().translate(suite_core_lib_1.SuiteCoreComponentId, suite_core_lib_1.SuiteCoreStringKey.Error_FailedToStoreUserMnemonicTemplate, {
525
- NAME: (0, suite_core_lib_1.getSuiteCoreI18nEngine)().translate(suite_core_lib_1.SuiteCoreComponentId, suite_core_lib_1.SuiteCoreStringKey.Common_Member),
526
- }));
527
- }
528
- // Encrypt mnemonic for recovery
529
- const encryptedMemberMnemonic = memberUser.member
530
- .encryptData(Buffer.from(memberUser.mnemonic.value ?? '', 'utf-8'))
531
- .toString('hex');
532
- const memberWrapped = keyWrappingService.wrapSecret(memberUser.member.privateKey, memberPasswordSecure);
533
- const memberBackupCodes = options.memberBackupCodes ?? backup_code_1.BackupCode.generateBackupCodes();
534
- const encryptedMemberBackupCodes = await backup_code_1.BackupCode.encryptBackupCodes(memberUser.member, systemUser.member, memberBackupCodes);
535
- const memberDocs = await UserModel.create([
536
- {
537
- _id: memberUserId,
538
- username: suite_core_lib_1.Constants.MemberUser,
539
- email: suite_core_lib_1.Constants.MemberEmail,
540
- publicKey: memberUser.member.publicKey.toString('hex'),
541
- mnemonicId: memberMnemonicDoc._id,
542
- mnemonicRecovery: encryptedMemberMnemonic,
543
- passwordWrappedPrivateKey: memberWrapped,
544
- backupCodes: encryptedMemberBackupCodes,
545
- duressPasswords: [],
546
- timezone: application.environment.timezone.value,
547
- siteLanguage: 'en-US',
548
- emailVerified: true,
549
- accountStatus: suite_core_lib_1.AccountStatus.Active,
550
- createdAt: now,
551
- updatedAt: now,
552
- createdBy: systemUserId,
553
- updatedBy: systemUserId,
554
- },
555
- ], { session: sess });
556
- if (memberDocs.length !== 1) {
557
- throw new Error((0, suite_core_lib_1.getSuiteCoreI18nEngine)().translate(suite_core_lib_1.SuiteCoreComponentId, suite_core_lib_1.SuiteCoreStringKey.Error_FailedToCreateUserTemplate, {
558
- NAME: (0, suite_core_lib_1.getSuiteCoreI18nEngine)().translate(suite_core_lib_1.SuiteCoreComponentId, suite_core_lib_1.SuiteCoreStringKey.Common_Member),
559
- }));
560
- }
561
- const memberDoc = memberDocs[0];
562
- // Create member user-role relationship
563
- const memberUserRoleDoc = await roleService.addUserToRole(memberRoleId, memberUserId, systemUserId, sess, memberUserRoleId);
564
- if (!memberUser.mnemonic.value) {
565
- throw new Error((0, suite_core_lib_1.getSuiteCoreI18nEngine)().translate(suite_core_lib_1.SuiteCoreComponentId, suite_core_lib_1.SuiteCoreStringKey.Error_MnemonicIsNullTemplate, {
566
- NAME: (0, suite_core_lib_1.getSuiteCoreI18nEngine)().translate(suite_core_lib_1.SuiteCoreComponentId, suite_core_lib_1.SuiteCoreStringKey.Common_Member),
567
- }));
568
- }
569
- return {
570
- adminRole,
571
- memberRole,
572
- systemRole,
573
- systemDoc,
574
- systemUserRoleDoc,
575
- systemPassword: systemPasswordSecure.notNullValue,
576
- systemMnemonic: systemUser.mnemonic.notNullValue,
577
- systemBackupCodes: systemBackupCodes,
578
- systemMember: systemUser.member,
579
- adminDoc,
580
- adminUserRoleDoc,
581
- adminPassword: adminPasswordSecure.notNullValue,
582
- adminMnemonic: adminUser.mnemonic.notNullValue,
583
- adminBackupCodes: adminBackupCodes,
584
- adminMember: adminUser.member,
585
- memberDoc,
586
- memberUserRoleDoc,
587
- memberPassword: memberPasswordSecure.notNullValue,
588
- memberMnemonic: memberUser.mnemonic.notNullValue,
589
- memberBackupCodes: memberBackupCodes,
590
- memberUser: memberUser.member,
591
- };
592
- }, transactionOptions);
593
- return {
594
- success: true,
595
- data: {
596
- adminRole: result.adminRole,
597
- adminUserRole: result.adminUserRoleDoc,
598
- adminUser: result.adminDoc,
599
- adminUsername: result.adminDoc.username,
600
- adminEmail: result.adminDoc.email,
601
- adminMnemonic: result.adminMnemonic,
602
- adminPassword: result.adminPassword,
603
- adminBackupCodes: result.adminBackupCodes.map((bc) => bc.value ?? ''),
604
- adminMember: result.adminMember,
605
- memberRole: result.memberRole,
606
- memberUserRole: result.memberUserRoleDoc,
607
- memberUser: result.memberDoc,
608
- memberUsername: result.memberDoc.username,
609
- memberEmail: result.memberDoc.email,
610
- memberMnemonic: result.memberMnemonic,
611
- memberPassword: result.memberPassword,
612
- memberBackupCodes: result.memberBackupCodes.map((bc) => bc.value ?? ''),
613
- memberMember: result.memberUser,
614
- systemRole: result.systemRole,
615
- systemUserRole: result.systemUserRoleDoc,
616
- systemUser: result.systemDoc,
617
- systemUsername: result.systemDoc.username,
618
- systemEmail: result.systemDoc.email,
619
- systemMnemonic: result.systemMnemonic,
620
- systemPassword: result.systemPassword,
621
- systemBackupCodes: result.systemBackupCodes.map((bc) => bc.value ?? ''),
622
- systemMember: result.systemMember,
623
- },
624
- };
625
- }
626
- catch (error) {
627
- return {
628
- success: false,
629
- message: (0, suite_core_lib_1.getSuiteCoreI18nEngine)().translate(suite_core_lib_1.SuiteCoreComponentId, suite_core_lib_1.SuiteCoreStringKey.Admin_Error_FailedToInitializeUserDatabase),
630
- error: error instanceof Error
631
- ? error
632
- : new Error((0, suite_core_lib_1.getSuiteCoreI18nEngine)().translate(suite_core_lib_1.SuiteCoreComponentId, suite_core_lib_1.SuiteCoreStringKey.Admin_Error_FailedToInitializeUserDatabase)),
633
- };
634
- }
635
- }
636
- static printServerInitResults(result) {
637
- (0, utils_1.debugLog)(true, 'log', this.defaultI18nTFunc('\n=== {{StringName.Admin_AccountCredentials}} ==='));
638
- (0, utils_1.debugLog)(true, 'log', this.defaultI18nTFunc('{{StringName.Common_System}} {{StringName.Common_ID}}: {id}', undefined, {
639
- id: result.systemUser._id.toHexString(),
640
- }));
641
- (0, utils_1.debugLog)(true, 'log', this.defaultI18nTFunc('{{StringName.Common_System}} {{StringName.Common_Role}}: {roleName}', undefined, {
642
- roleName: result.systemRole.name,
643
- }));
644
- (0, utils_1.debugLog)(true, 'log', this.defaultI18nTFunc('{{StringName.Common_System}} {{StringName.Common_Role}} {{StringName.Common_ID}}: {roleId}', undefined, {
645
- roleId: result.systemRole._id.toString(),
646
- }));
647
- (0, utils_1.debugLog)(true, 'log', this.defaultI18nTFunc('{{StringName.Common_System}} {{StringName.Common_User}} {{StringName.Common_Role}} {{StringName.Common_ID}}: {userRoleId}', undefined, {
648
- userRoleId: result.systemUserRole._id.toString(),
649
- }));
650
- (0, utils_1.debugLog)(true, 'log', this.defaultI18nTFunc('{{StringName.Common_System}} {{StringName.Common_Username}}: {username}', undefined, {
651
- username: result.systemUsername,
652
- }));
653
- (0, utils_1.debugLog)(true, 'log', this.defaultI18nTFunc('{{StringName.Common_System}} {{StringName.Common_Email}}: {email}', undefined, {
654
- email: result.systemEmail,
655
- }));
656
- (0, utils_1.debugLog)(true, 'log', this.defaultI18nTFunc('{{StringName.Common_System}} {{StringName.Common_Password}}: {password}', undefined, {
657
- password: result.systemPassword,
658
- }));
659
- (0, utils_1.debugLog)(true, 'log', this.defaultI18nTFunc('{{StringName.Common_System}} {{StringName.Common_Mnemonic}}: {mnemonic}', undefined, {
660
- mnemonic: result.systemMnemonic,
661
- }));
662
- (0, utils_1.debugLog)(true, 'log', this.defaultI18nTFunc('{{StringName.Common_System}} {{StringName.Common_PublicKey}}: {publicKey}', undefined, {
663
- publicKey: result.systemUser.publicKey,
664
- }));
665
- (0, utils_1.debugLog)(true, 'log', `${this.defaultI18nTFunc('{{StringName.Common_System}} {{StringName.Common_BackupCodes}}')}: ${result.systemBackupCodes.join(', ')}`);
666
- (0, utils_1.debugLog)(true, 'log', '');
667
- (0, utils_1.debugLog)(true, 'log', this.defaultI18nTFunc('{{StringName.Common_Admin}} {{StringName.Common_ID}}: {id}', undefined, {
668
- id: result.adminUser._id.toHexString(),
669
- }));
670
- (0, utils_1.debugLog)(true, 'log', this.defaultI18nTFunc('{{StringName.Common_Admin}} {{StringName.Common_Role}}: {roleName}', undefined, {
671
- roleName: result.adminRole.name,
672
- }));
673
- (0, utils_1.debugLog)(true, 'log', this.defaultI18nTFunc('{{StringName.Common_Admin}} {{StringName.Common_Role}} {{StringName.Common_ID}}: {roleId}', undefined, {
674
- roleId: result.adminRole._id.toString(),
675
- }));
676
- (0, utils_1.debugLog)(true, 'log', this.defaultI18nTFunc('{{StringName.Common_Admin}} {{StringName.Common_User}} {{StringName.Common_Role}} {{StringName.Common_ID}}: {userRoleId}', undefined, {
677
- userRoleId: result.adminUserRole._id.toString(),
678
- }));
679
- (0, utils_1.debugLog)(true, 'log', this.defaultI18nTFunc('{{StringName.Common_Admin}} {{StringName.Common_Username}}: {username}', undefined, {
680
- username: result.adminUsername,
681
- }));
682
- (0, utils_1.debugLog)(true, 'log', this.defaultI18nTFunc('{{StringName.Common_Admin}} {{StringName.Common_Email}}: {email}', undefined, {
683
- email: result.adminEmail,
684
- }));
685
- (0, utils_1.debugLog)(true, 'log', this.defaultI18nTFunc('{{StringName.Common_Admin}} {{StringName.Common_Password}}: {password}', undefined, {
686
- password: result.adminPassword,
687
- }));
688
- (0, utils_1.debugLog)(true, 'log', this.defaultI18nTFunc('{{StringName.Common_Admin}} {{StringName.Common_Mnemonic}}: {mnemonic}', undefined, {
689
- mnemonic: result.adminMnemonic,
690
- }));
691
- (0, utils_1.debugLog)(true, 'log', this.defaultI18nTFunc('{{StringName.Common_Admin}} {{StringName.Common_PublicKey}}: {publicKey}', undefined, {
692
- publicKey: result.adminUser.publicKey,
693
- }));
694
- (0, utils_1.debugLog)(true, 'log', `${this.defaultI18nTFunc('{{StringName.Common_Admin}} {{StringName.Common_BackupCodes}}')}: ${result.adminBackupCodes.join(', ')}`);
695
- (0, utils_1.debugLog)(true, 'log', '');
696
- (0, utils_1.debugLog)(true, 'log', this.defaultI18nTFunc('{{StringName.Common_Member}} {{StringName.Common_ID}}: {id}', undefined, {
697
- id: result.memberUser._id.toHexString(),
698
- }));
699
- (0, utils_1.debugLog)(true, 'log', this.defaultI18nTFunc('{{StringName.Common_Member}} {{StringName.Common_Role}}: {roleName}', undefined, {
700
- roleName: result.memberRole.name,
701
- }));
702
- (0, utils_1.debugLog)(true, 'log', this.defaultI18nTFunc('{{StringName.Common_Member}} {{StringName.Common_Role}} {{StringName.Common_ID}}: {roleId}', undefined, {
703
- roleId: result.memberRole._id.toString(),
704
- }));
705
- (0, utils_1.debugLog)(true, 'log', this.defaultI18nTFunc('{{StringName.Common_Member}} {{StringName.Common_User}} {{StringName.Common_Role}} {{StringName.Common_ID}}: {userRoleId}', undefined, {
706
- userRoleId: result.memberUserRole._id.toString(),
707
- }));
708
- (0, utils_1.debugLog)(true, 'log', this.defaultI18nTFunc('{{StringName.Common_Member}} {{StringName.Common_Username}}: {username}', undefined, {
709
- username: result.memberUsername,
710
- }));
711
- (0, utils_1.debugLog)(true, 'log', this.defaultI18nTFunc('{{StringName.Common_Member}} {{StringName.Common_Email}}: {email}', undefined, {
712
- email: result.memberEmail,
713
- }));
714
- (0, utils_1.debugLog)(true, 'log', this.defaultI18nTFunc('{{StringName.Common_Member}} {{StringName.Common_Password}}: {password}', undefined, {
715
- password: result.memberPassword,
716
- }));
717
- (0, utils_1.debugLog)(true, 'log', this.defaultI18nTFunc('{{StringName.Common_Member}} {{StringName.Common_Mnemonic}}: {mnemonic}', undefined, {
718
- mnemonic: result.memberMnemonic,
719
- }));
720
- (0, utils_1.debugLog)(true, 'log', this.defaultI18nTFunc('{{StringName.Common_Member}} {{StringName.Common_PublicKey}}: {publicKey}', undefined, {
721
- publicKey: result.memberUser.publicKey,
722
- }));
723
- (0, utils_1.debugLog)(true, 'log', `${this.defaultI18nTFunc('{{StringName.Common_Member}} {{StringName.Common_BackupCodes}}')}: ${result.memberBackupCodes.join(', ')}`);
724
- (0, utils_1.debugLog)(true, 'log', this.defaultI18nTFunc('\n=== {{StringName.Admin_EndCredentials}} ==='));
725
- }
726
- static setEnvFromInitResults(result) {
727
- process.env['ADMIN_ID'] = result.adminUser._id.toHexString();
728
- process.env['ADMIN_PUBLIC_KEY'] = result.adminUser.publicKey;
729
- process.env['ADMIN_MNEMONIC'] = result.adminMnemonic;
730
- process.env['ADMIN_PASSWORD'] = result.adminPassword;
731
- process.env['ADMIN_ROLE_ID'] = result.adminRole._id.toHexString();
732
- process.env['ADMIN_USER_ROLE_ID'] = result.adminUserRole._id.toHexString();
733
- //
734
- process.env['MEMBER_ID'] = result.memberUser._id.toHexString();
735
- process.env['MEMBER_PUBLIC_KEY'] = result.memberUser.publicKey;
736
- process.env['MEMBER_MNEMONIC'] = result.memberMnemonic;
737
- process.env['MEMBER_PASSWORD'] = result.memberPassword;
738
- process.env['MEMBER_ROLE_ID'] = result.memberRole._id.toHexString();
739
- process.env['MEMBER_USER_ROLE_ID'] =
740
- result.memberUserRole._id.toHexString();
741
- //
742
- process.env['SYSTEM_ID'] = result.systemUser._id.toHexString();
743
- process.env['SYSTEM_PUBLIC_KEY'] = result.systemUser.publicKey;
744
- process.env['SYSTEM_MNEMONIC'] = result.systemMnemonic;
745
- process.env['SYSTEM_PASSWORD'] = result.systemPassword;
746
- process.env['SYSTEM_ROLE_ID'] = result.systemRole._id.toHexString();
747
- process.env['SYSTEM_USER_ROLE_ID'] =
748
- result.systemUserRole._id.toHexString();
749
- }
750
- /**
751
- * Initialize the user database with default users and roles (convenience method)
752
- * This method creates the necessary services and calls initUserDbWithServices
753
- * @param application The application
754
- * @returns The result of the initialization
755
- */
756
- static async initUserDb(application) {
757
- const mnemonicModel = model_registry_1.ModelRegistry.instance.getTypedModel(base_model_name_1.BaseModelName.Mnemonic);
758
- const keyWrappingService = new key_wrapping_1.KeyWrappingService();
759
- const mnemonicService = new mnemonic_1.MnemonicService(mnemonicModel, application.environment.mnemonicHmacSecret, keyWrappingService);
760
- const config = {
761
- curveName: ecies_lib_1.ECIES.CURVE_NAME,
762
- primaryKeyDerivationPath: ecies_lib_1.ECIES.PRIMARY_KEY_DERIVATION_PATH,
763
- mnemonicStrength: ecies_lib_1.ECIES.MNEMONIC_STRENGTH,
764
- symmetricAlgorithm: ecies_lib_1.ECIES.SYMMETRIC_ALGORITHM_CONFIGURATION,
765
- symmetricKeyBits: ecies_lib_1.ECIES.SYMMETRIC.KEY_BITS,
766
- symmetricKeyMode: ecies_lib_1.ECIES.SYMMETRIC.MODE,
767
- };
768
- const eciesService = new node_ecies_lib_1.ECIESService(config);
769
- const roleService = new role_1.RoleService(application);
770
- const backupCodeService = new backup_code_2.BackupCodeService(application, eciesService, keyWrappingService, roleService);
771
- return this.initUserDbWithServices(application, keyWrappingService, mnemonicService, eciesService, roleService, backupCodeService);
772
- }
773
- }
774
- exports.DatabaseInitializationService = DatabaseInitializationService;
775
- // Static initialization state management
776
- DatabaseInitializationService.initializationPromises = new Map();
777
- DatabaseInitializationService.initializationLock = new Map();
778
- DatabaseInitializationService.defaultI18nTFunc = (0, suite_core_lib_1.getSuiteCoreI18nEngine)().t;
779
- //# sourceMappingURL=database-initialization.js.map