@digitaldefiance/node-express-suite 3.7.3 → 3.7.5

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 (882) hide show
  1. package/LICENSE +21 -0
  2. package/package.json +4 -5
  3. package/src/__tests__/fixtures/{index.d.ts → index.ts} +0 -1
  4. package/src/__tests__/fixtures/model-mocks.mock.ts +164 -0
  5. package/src/__tests__/helpers/application.mock.ts +89 -0
  6. package/src/__tests__/helpers/{index.d.ts → index.ts} +0 -1
  7. package/src/__tests__/helpers/setup-test-env.ts +202 -0
  8. package/src/__tests__/{index.d.ts → index.ts} +0 -1
  9. package/src/application-base.ts +548 -0
  10. package/src/application-concrete.ts +62 -0
  11. package/src/application.ts +330 -0
  12. package/src/backup-code.ts +348 -0
  13. package/src/builders/application-builder.ts +147 -0
  14. package/src/builders/{index.d.ts → index.ts} +0 -1
  15. package/src/constants.ts +89 -0
  16. package/src/container/{index.d.ts → index.ts} +0 -1
  17. package/src/container/service-container.ts +85 -0
  18. package/src/container/service-definitions.ts +23 -0
  19. package/src/controllers/base.ts +512 -0
  20. package/src/controllers/{index.d.ts → index.ts} +0 -1
  21. package/src/controllers/user.ts +1734 -0
  22. package/src/database/database-initializer.ts +13 -0
  23. package/src/database/{index.d.ts → index.ts} +0 -1
  24. package/src/decorators/base-controller.ts +91 -0
  25. package/src/decorators/controller.ts +152 -0
  26. package/src/decorators/{index.d.ts → index.ts} +0 -1
  27. package/src/decorators/zod-validation.ts +64 -0
  28. package/src/defaults.ts +259 -0
  29. package/src/documents/base.ts +17 -0
  30. package/src/documents/email-token.ts +20 -0
  31. package/src/documents/{index.d.ts → index.ts} +0 -1
  32. package/src/documents/mnemonic.ts +20 -0
  33. package/src/documents/role.ts +19 -0
  34. package/src/documents/used-direct-login-token.ts +18 -0
  35. package/src/documents/user-role.ts +20 -0
  36. package/src/documents/user.ts +20 -0
  37. package/src/enumerations/base-model-name.ts +47 -0
  38. package/src/enumerations/{index.d.ts → index.ts} +0 -1
  39. package/src/enumerations/length-encoding-type.ts +16 -0
  40. package/src/enumerations/schema-collection.ts +39 -0
  41. package/src/enumerations/symmetric-error-type.ts +13 -0
  42. package/src/environment.ts +859 -0
  43. package/src/errors/express-validation.ts +38 -0
  44. package/src/errors/{index.d.ts → index.ts} +0 -1
  45. package/src/errors/invalid-backup-code-version.ts +30 -0
  46. package/src/errors/invalid-jwt-token.ts +24 -0
  47. package/src/errors/invalid-model.ts +24 -0
  48. package/src/errors/invalid-new-password.ts +33 -0
  49. package/src/errors/invalid-password.ts +28 -0
  50. package/src/errors/missing-validated-data.ts +55 -0
  51. package/src/errors/mnemonic-or-password-required.ts +26 -0
  52. package/src/errors/model-not-registered.ts +24 -0
  53. package/src/errors/mongoose-validation.ts +56 -0
  54. package/src/errors/symmetric.ts +53 -0
  55. package/src/errors/token-expired.ts +24 -0
  56. package/src/get-language.ts +64 -0
  57. package/src/get-timezone.ts +76 -0
  58. package/src/{index.d.ts → index.ts} +44 -2
  59. package/src/interfaces/api-error-response.ts +15 -0
  60. package/src/interfaces/api-express-validation-error-response.ts +17 -0
  61. package/src/interfaces/api-message-response.ts +12 -0
  62. package/src/interfaces/api-mongo-validation-error-response.ts +17 -0
  63. package/src/interfaces/api-responses/backup-codes-response.ts +15 -0
  64. package/src/interfaces/api-responses/challenge-response.ts +17 -0
  65. package/src/interfaces/api-responses/code-count-response.ts +12 -0
  66. package/src/interfaces/api-responses/{index.d.ts → index.ts} +0 -1
  67. package/src/interfaces/api-responses/login-response.ts +18 -0
  68. package/src/interfaces/api-responses/mnemonic-response.ts +15 -0
  69. package/src/interfaces/api-responses/registration-response.ts +17 -0
  70. package/src/interfaces/api-responses/request-user-response.ts +16 -0
  71. package/src/interfaces/api-responses/user-settings-response.ts +19 -0
  72. package/src/interfaces/application.ts +40 -0
  73. package/src/interfaces/backend-objects/email-token.ts +18 -0
  74. package/src/interfaces/backend-objects/{index.d.ts → index.ts} +0 -1
  75. package/src/interfaces/backend-objects/request-user.ts +19 -0
  76. package/src/interfaces/backend-objects/role.ts +18 -0
  77. package/src/interfaces/backend-objects/user.ts +18 -0
  78. package/src/interfaces/checksum-config.ts +15 -0
  79. package/src/interfaces/checksum-consts.ts +23 -0
  80. package/src/interfaces/constants.ts +114 -0
  81. package/src/interfaces/controller-config.ts +54 -0
  82. package/src/interfaces/create-user-basics.ts +24 -0
  83. package/src/interfaces/csp-config.ts +32 -0
  84. package/src/interfaces/csp-definition.ts +71 -0
  85. package/src/interfaces/db-init-result.ts +17 -0
  86. package/src/interfaces/deep-partial.ts +14 -0
  87. package/src/interfaces/discriminator-collections.ts +21 -0
  88. package/src/interfaces/email-service.ts +26 -0
  89. package/src/interfaces/environment-mongo.ts +86 -0
  90. package/src/interfaces/environment.ts +191 -0
  91. package/src/interfaces/failable-result.ts +20 -0
  92. package/src/interfaces/fec-consts.ts +14 -0
  93. package/src/interfaces/flexible-csp.ts +35 -0
  94. package/src/interfaces/handleable-error-options.ts +19 -0
  95. package/src/interfaces/{index.d.ts → index.ts} +0 -1
  96. package/src/interfaces/jwt-consts.ts +33 -0
  97. package/src/interfaces/jwt-sign-response.ts +31 -0
  98. package/src/interfaces/models/email-token.ts +13 -0
  99. package/src/interfaces/models/{index.d.ts → index.ts} +0 -1
  100. package/src/interfaces/models/mnemonic.ts +14 -0
  101. package/src/interfaces/models/role.ts +13 -0
  102. package/src/interfaces/models/token-role.ts +23 -0
  103. package/src/interfaces/models/used-direct-login-token.ts +21 -0
  104. package/src/interfaces/models/user-role.ts +23 -0
  105. package/src/interfaces/models/user.ts +30 -0
  106. package/src/interfaces/mongo-errors.ts +14 -0
  107. package/src/interfaces/request-user.ts +80 -0
  108. package/src/interfaces/required-string-keys.ts +33 -0
  109. package/src/interfaces/schema.ts +43 -0
  110. package/src/interfaces/server-init-result.ts +48 -0
  111. package/src/interfaces/status-code-response.ts +20 -0
  112. package/src/interfaces/symmetric-encryption-results.d.ts.map +1 -1
  113. package/src/interfaces/symmetric-encryption-results.js.map +1 -1
  114. package/src/interfaces/symmetric-encryption-results.ts +15 -0
  115. package/src/interfaces/test-environment.ts +23 -0
  116. package/src/interfaces/token-response.ts +16 -0
  117. package/src/middleware-utils.ts +138 -0
  118. package/src/middlewares/authenticate-crypto.ts +237 -0
  119. package/src/middlewares/authenticate-token.ts +165 -0
  120. package/src/middlewares/cleanup-crypto.ts +47 -0
  121. package/src/middlewares/{index.d.ts → index.ts} +0 -1
  122. package/src/middlewares/set-global-context-language.ts +38 -0
  123. package/src/model-registry.ts +142 -0
  124. package/src/models/email-token.ts +49 -0
  125. package/src/models/{index.d.ts → index.ts} +0 -1
  126. package/src/models/mnemonic.ts +42 -0
  127. package/src/models/role.ts +38 -0
  128. package/src/models/used-direct-login-token.ts +49 -0
  129. package/src/models/user-role.ts +40 -0
  130. package/src/models/user.ts +42 -0
  131. package/src/pipeline/{index.d.ts → index.ts} +0 -1
  132. package/src/pipeline/pipeline-builder.ts +27 -0
  133. package/src/plugins/{index.d.ts → index.ts} +0 -1
  134. package/src/plugins/plugin-interface.ts +19 -0
  135. package/src/plugins/plugin-manager.ts +53 -0
  136. package/src/registry/email-service-registry.ts +76 -0
  137. package/src/registry/{index.d.ts → index.ts} +0 -1
  138. package/src/responses/{index.d.ts → index.ts} +0 -1
  139. package/src/responses/response-builder.ts +166 -0
  140. package/src/routers/api.ts +233 -0
  141. package/src/routers/app.ts +395 -0
  142. package/src/routers/base.ts +34 -0
  143. package/src/routers/{index.d.ts → index.ts} +0 -1
  144. package/src/routers/router-config.ts +34 -0
  145. package/src/routing/index.ts +1 -0
  146. package/src/routing/route-builder.ts +214 -0
  147. package/src/schemas/email-token.ts +112 -0
  148. package/src/schemas/{index.d.ts → index.ts} +0 -1
  149. package/src/schemas/mnemonic.ts +48 -0
  150. package/src/schemas/role.ts +153 -0
  151. package/src/schemas/schema.ts +185 -0
  152. package/src/schemas/used-direct-login-token.ts +58 -0
  153. package/src/schemas/user-role.ts +93 -0
  154. package/src/schemas/user.ts +244 -0
  155. package/src/services/backup-code.ts +327 -0
  156. package/src/services/base.ts +46 -0
  157. package/src/services/checksum.ts +189 -0
  158. package/src/services/database-initialization.ts +1653 -0
  159. package/src/services/db-init-cache.ts +28 -0
  160. package/src/services/direct-login-token.ts +83 -0
  161. package/src/services/dummy-email-service.ts +43 -0
  162. package/src/services/fec-usage-example.ts +123 -0
  163. package/src/services/fec.ts +399 -0
  164. package/src/services/{index.d.ts → index.ts} +0 -2
  165. package/src/services/jwt.ts +146 -0
  166. package/src/services/key-wrapping.ts +528 -0
  167. package/src/services/mnemonic.ts +174 -0
  168. package/src/services/request-user.ts +127 -0
  169. package/src/services/role.ts +417 -0
  170. package/src/services/symmetric.ts +164 -0
  171. package/src/services/system-user.ts +87 -0
  172. package/src/services/user.ts +2324 -0
  173. package/src/services/xor.ts +39 -0
  174. package/src/testing.ts +9 -0
  175. package/src/transactions/{index.d.ts → index.ts} +0 -1
  176. package/src/transactions/transaction-manager.ts +63 -0
  177. package/src/types/app-config.ts +36 -0
  178. package/src/types/controller-config.ts +28 -0
  179. package/src/types/{environment-variables.d.ts → environment-variables.ts} +32 -5
  180. package/src/types/{index.d.ts → index.ts} +0 -1
  181. package/src/types/{mongoose-helpers.d.ts → mongoose-helpers.ts} +8 -2
  182. package/src/types/mongoose-override.d.ts +1 -0
  183. package/src/types/mongoose.d.ts +1 -0
  184. package/src/types.ts +189 -0
  185. package/src/utils.ts +1116 -0
  186. package/src/validation/{index.d.ts → index.ts} +0 -1
  187. package/src/validation/validation-builder.ts +155 -0
  188. package/src/__tests__/fixtures/index.d.ts.map +0 -1
  189. package/src/__tests__/fixtures/index.js +0 -5
  190. package/src/__tests__/fixtures/index.js.map +0 -1
  191. package/src/__tests__/fixtures/model-mocks.mock.d.ts +0 -12
  192. package/src/__tests__/fixtures/model-mocks.mock.d.ts.map +0 -1
  193. package/src/__tests__/fixtures/model-mocks.mock.js +0 -102
  194. package/src/__tests__/fixtures/model-mocks.mock.js.map +0 -1
  195. package/src/__tests__/helpers/application.mock.d.ts +0 -8
  196. package/src/__tests__/helpers/application.mock.d.ts.map +0 -1
  197. package/src/__tests__/helpers/application.mock.js +0 -77
  198. package/src/__tests__/helpers/application.mock.js.map +0 -1
  199. package/src/__tests__/helpers/index.d.ts.map +0 -1
  200. package/src/__tests__/helpers/index.js +0 -7
  201. package/src/__tests__/helpers/index.js.map +0 -1
  202. package/src/__tests__/helpers/setup-test-env.d.ts +0 -12
  203. package/src/__tests__/helpers/setup-test-env.d.ts.map +0 -1
  204. package/src/__tests__/helpers/setup-test-env.js +0 -121
  205. package/src/__tests__/helpers/setup-test-env.js.map +0 -1
  206. package/src/__tests__/index.d.ts.map +0 -1
  207. package/src/__tests__/index.js +0 -6
  208. package/src/__tests__/index.js.map +0 -1
  209. package/src/application-base.d.ts +0 -123
  210. package/src/application-base.d.ts.map +0 -1
  211. package/src/application-base.js +0 -359
  212. package/src/application-base.js.map +0 -1
  213. package/src/application-concrete.d.ts +0 -13
  214. package/src/application-concrete.d.ts.map +0 -1
  215. package/src/application-concrete.js +0 -21
  216. package/src/application-concrete.js.map +0 -1
  217. package/src/application.d.ts +0 -29
  218. package/src/application.d.ts.map +0 -1
  219. package/src/application.js +0 -167
  220. package/src/application.js.map +0 -1
  221. package/src/backup-code.d.ts +0 -67
  222. package/src/backup-code.d.ts.map +0 -1
  223. package/src/backup-code.js +0 -238
  224. package/src/backup-code.js.map +0 -1
  225. package/src/builders/application-builder.d.ts +0 -35
  226. package/src/builders/application-builder.d.ts.map +0 -1
  227. package/src/builders/application-builder.js +0 -64
  228. package/src/builders/application-builder.js.map +0 -1
  229. package/src/builders/index.d.ts.map +0 -1
  230. package/src/builders/index.js +0 -5
  231. package/src/builders/index.js.map +0 -1
  232. package/src/constants.d.ts +0 -16
  233. package/src/constants.d.ts.map +0 -1
  234. package/src/constants.js +0 -58
  235. package/src/constants.js.map +0 -1
  236. package/src/container/index.d.ts.map +0 -1
  237. package/src/container/index.js +0 -6
  238. package/src/container/index.js.map +0 -1
  239. package/src/container/service-container.d.ts +0 -11
  240. package/src/container/service-container.d.ts.map +0 -1
  241. package/src/container/service-container.js +0 -38
  242. package/src/container/service-container.js.map +0 -1
  243. package/src/container/service-definitions.d.ts +0 -11
  244. package/src/container/service-definitions.d.ts.map +0 -1
  245. package/src/container/service-definitions.js +0 -13
  246. package/src/container/service-definitions.js.map +0 -1
  247. package/src/controllers/base.d.ts +0 -67
  248. package/src/controllers/base.d.ts.map +0 -1
  249. package/src/controllers/base.js +0 -305
  250. package/src/controllers/base.js.map +0 -1
  251. package/src/controllers/index.d.ts.map +0 -1
  252. package/src/controllers/index.js +0 -6
  253. package/src/controllers/index.js.map +0 -1
  254. package/src/controllers/user.d.ts +0 -49
  255. package/src/controllers/user.d.ts.map +0 -1
  256. package/src/controllers/user.js +0 -919
  257. package/src/controllers/user.js.map +0 -1
  258. package/src/database/database-initializer.d.ts +0 -7
  259. package/src/database/database-initializer.d.ts.map +0 -1
  260. package/src/database/database-initializer.js +0 -3
  261. package/src/database/database-initializer.js.map +0 -1
  262. package/src/database/index.d.ts.map +0 -1
  263. package/src/database/index.js +0 -5
  264. package/src/database/index.js.map +0 -1
  265. package/src/decorators/base-controller.d.ts +0 -11
  266. package/src/decorators/base-controller.d.ts.map +0 -1
  267. package/src/decorators/base-controller.js +0 -60
  268. package/src/decorators/base-controller.js.map +0 -1
  269. package/src/decorators/controller.d.ts +0 -38
  270. package/src/decorators/controller.d.ts.map +0 -1
  271. package/src/decorators/controller.js +0 -68
  272. package/src/decorators/controller.js.map +0 -1
  273. package/src/decorators/index.d.ts.map +0 -1
  274. package/src/decorators/index.js +0 -7
  275. package/src/decorators/index.js.map +0 -1
  276. package/src/decorators/zod-validation.d.ts +0 -5
  277. package/src/decorators/zod-validation.d.ts.map +0 -1
  278. package/src/decorators/zod-validation.js +0 -48
  279. package/src/decorators/zod-validation.js.map +0 -1
  280. package/src/defaults.d.ts +0 -7
  281. package/src/defaults.d.ts.map +0 -1
  282. package/src/defaults.js +0 -205
  283. package/src/defaults.js.map +0 -1
  284. package/src/documents/base.d.ts +0 -4
  285. package/src/documents/base.d.ts.map +0 -1
  286. package/src/documents/base.js +0 -3
  287. package/src/documents/base.js.map +0 -1
  288. package/src/documents/email-token.d.ts +0 -8
  289. package/src/documents/email-token.d.ts.map +0 -1
  290. package/src/documents/email-token.js +0 -3
  291. package/src/documents/email-token.js.map +0 -1
  292. package/src/documents/index.d.ts.map +0 -1
  293. package/src/documents/index.js +0 -3
  294. package/src/documents/index.js.map +0 -1
  295. package/src/documents/mnemonic.d.ts +0 -8
  296. package/src/documents/mnemonic.d.ts.map +0 -1
  297. package/src/documents/mnemonic.js +0 -3
  298. package/src/documents/mnemonic.js.map +0 -1
  299. package/src/documents/role.d.ts +0 -8
  300. package/src/documents/role.d.ts.map +0 -1
  301. package/src/documents/role.js +0 -3
  302. package/src/documents/role.js.map +0 -1
  303. package/src/documents/used-direct-login-token.d.ts +0 -5
  304. package/src/documents/used-direct-login-token.d.ts.map +0 -1
  305. package/src/documents/used-direct-login-token.js +0 -3
  306. package/src/documents/used-direct-login-token.js.map +0 -1
  307. package/src/documents/user-role.d.ts +0 -8
  308. package/src/documents/user-role.d.ts.map +0 -1
  309. package/src/documents/user-role.js +0 -3
  310. package/src/documents/user-role.js.map +0 -1
  311. package/src/documents/user.d.ts +0 -8
  312. package/src/documents/user.d.ts.map +0 -1
  313. package/src/documents/user.js +0 -3
  314. package/src/documents/user.js.map +0 -1
  315. package/src/enumerations/base-model-name.d.ts +0 -38
  316. package/src/enumerations/base-model-name.d.ts.map +0 -1
  317. package/src/enumerations/base-model-name.js +0 -34
  318. package/src/enumerations/base-model-name.js.map +0 -1
  319. package/src/enumerations/index.d.ts.map +0 -1
  320. package/src/enumerations/index.js +0 -8
  321. package/src/enumerations/index.js.map +0 -1
  322. package/src/enumerations/length-encoding-type.d.ts +0 -7
  323. package/src/enumerations/length-encoding-type.d.ts.map +0 -1
  324. package/src/enumerations/length-encoding-type.js +0 -11
  325. package/src/enumerations/length-encoding-type.js.map +0 -1
  326. package/src/enumerations/schema-collection.d.ts +0 -34
  327. package/src/enumerations/schema-collection.d.ts.map +0 -1
  328. package/src/enumerations/schema-collection.js +0 -38
  329. package/src/enumerations/schema-collection.js.map +0 -1
  330. package/src/enumerations/symmetric-error-type.d.ts +0 -5
  331. package/src/enumerations/symmetric-error-type.d.ts.map +0 -1
  332. package/src/enumerations/symmetric-error-type.js +0 -9
  333. package/src/enumerations/symmetric-error-type.js.map +0 -1
  334. package/src/environment.d.ts +0 -189
  335. package/src/environment.d.ts.map +0 -1
  336. package/src/environment.js +0 -641
  337. package/src/environment.js.map +0 -1
  338. package/src/errors/express-validation.d.ts +0 -9
  339. package/src/errors/express-validation.d.ts.map +0 -1
  340. package/src/errors/express-validation.js +0 -18
  341. package/src/errors/express-validation.js.map +0 -1
  342. package/src/errors/index.d.ts.map +0 -1
  343. package/src/errors/index.js +0 -16
  344. package/src/errors/index.js.map +0 -1
  345. package/src/errors/invalid-backup-code-version.d.ts +0 -6
  346. package/src/errors/invalid-backup-code-version.d.ts.map +0 -1
  347. package/src/errors/invalid-backup-code-version.js +0 -16
  348. package/src/errors/invalid-backup-code-version.js.map +0 -1
  349. package/src/errors/invalid-jwt-token.d.ts +0 -5
  350. package/src/errors/invalid-jwt-token.d.ts.map +0 -1
  351. package/src/errors/invalid-jwt-token.js +0 -12
  352. package/src/errors/invalid-jwt-token.js.map +0 -1
  353. package/src/errors/invalid-model.d.ts +0 -6
  354. package/src/errors/invalid-model.d.ts.map +0 -1
  355. package/src/errors/invalid-model.js +0 -14
  356. package/src/errors/invalid-model.js.map +0 -1
  357. package/src/errors/invalid-new-password.d.ts +0 -5
  358. package/src/errors/invalid-new-password.d.ts.map +0 -1
  359. package/src/errors/invalid-new-password.js +0 -14
  360. package/src/errors/invalid-new-password.js.map +0 -1
  361. package/src/errors/invalid-password.d.ts +0 -5
  362. package/src/errors/invalid-password.d.ts.map +0 -1
  363. package/src/errors/invalid-password.js +0 -14
  364. package/src/errors/invalid-password.js.map +0 -1
  365. package/src/errors/missing-validated-data.d.ts +0 -7
  366. package/src/errors/missing-validated-data.d.ts.map +0 -1
  367. package/src/errors/missing-validated-data.js +0 -36
  368. package/src/errors/missing-validated-data.js.map +0 -1
  369. package/src/errors/mnemonic-or-password-required.d.ts +0 -5
  370. package/src/errors/mnemonic-or-password-required.d.ts.map +0 -1
  371. package/src/errors/mnemonic-or-password-required.js +0 -14
  372. package/src/errors/mnemonic-or-password-required.js.map +0 -1
  373. package/src/errors/model-not-registered.d.ts +0 -6
  374. package/src/errors/model-not-registered.d.ts.map +0 -1
  375. package/src/errors/model-not-registered.js +0 -14
  376. package/src/errors/model-not-registered.js.map +0 -1
  377. package/src/errors/mongoose-validation.d.ts +0 -12
  378. package/src/errors/mongoose-validation.d.ts.map +0 -1
  379. package/src/errors/mongoose-validation.js +0 -17
  380. package/src/errors/mongoose-validation.js.map +0 -1
  381. package/src/errors/symmetric.d.ts +0 -8
  382. package/src/errors/symmetric.d.ts.map +0 -1
  383. package/src/errors/symmetric.js +0 -22
  384. package/src/errors/symmetric.js.map +0 -1
  385. package/src/errors/token-expired.d.ts +0 -5
  386. package/src/errors/token-expired.d.ts.map +0 -1
  387. package/src/errors/token-expired.js +0 -12
  388. package/src/errors/token-expired.js.map +0 -1
  389. package/src/get-language.d.ts +0 -2
  390. package/src/get-language.d.ts.map +0 -1
  391. package/src/get-language.js +0 -30
  392. package/src/get-language.js.map +0 -1
  393. package/src/get-timezone.d.ts +0 -2
  394. package/src/get-timezone.d.ts.map +0 -1
  395. package/src/get-timezone.js +0 -39
  396. package/src/get-timezone.js.map +0 -1
  397. package/src/index.d.ts.map +0 -1
  398. package/src/index.js +0 -80
  399. package/src/index.js.map +0 -1
  400. package/src/interfaces/api-error-response.d.ts +0 -5
  401. package/src/interfaces/api-error-response.d.ts.map +0 -1
  402. package/src/interfaces/api-error-response.js +0 -3
  403. package/src/interfaces/api-error-response.js.map +0 -1
  404. package/src/interfaces/api-express-validation-error-response.d.ts +0 -7
  405. package/src/interfaces/api-express-validation-error-response.d.ts.map +0 -1
  406. package/src/interfaces/api-express-validation-error-response.js +0 -3
  407. package/src/interfaces/api-express-validation-error-response.js.map +0 -1
  408. package/src/interfaces/api-message-response.d.ts +0 -4
  409. package/src/interfaces/api-message-response.d.ts.map +0 -1
  410. package/src/interfaces/api-message-response.js +0 -3
  411. package/src/interfaces/api-message-response.js.map +0 -1
  412. package/src/interfaces/api-mongo-validation-error-response.d.ts +0 -6
  413. package/src/interfaces/api-mongo-validation-error-response.d.ts.map +0 -1
  414. package/src/interfaces/api-mongo-validation-error-response.js +0 -3
  415. package/src/interfaces/api-mongo-validation-error-response.js.map +0 -1
  416. package/src/interfaces/api-responses/backup-codes-response.d.ts +0 -5
  417. package/src/interfaces/api-responses/backup-codes-response.d.ts.map +0 -1
  418. package/src/interfaces/api-responses/backup-codes-response.js +0 -3
  419. package/src/interfaces/api-responses/backup-codes-response.js.map +0 -1
  420. package/src/interfaces/api-responses/challenge-response.d.ts +0 -6
  421. package/src/interfaces/api-responses/challenge-response.d.ts.map +0 -1
  422. package/src/interfaces/api-responses/challenge-response.js +0 -3
  423. package/src/interfaces/api-responses/challenge-response.js.map +0 -1
  424. package/src/interfaces/api-responses/code-count-response.d.ts +0 -5
  425. package/src/interfaces/api-responses/code-count-response.d.ts.map +0 -1
  426. package/src/interfaces/api-responses/code-count-response.js +0 -3
  427. package/src/interfaces/api-responses/code-count-response.js.map +0 -1
  428. package/src/interfaces/api-responses/index.d.ts.map +0 -1
  429. package/src/interfaces/api-responses/index.js +0 -12
  430. package/src/interfaces/api-responses/index.js.map +0 -1
  431. package/src/interfaces/api-responses/login-response.d.ts +0 -8
  432. package/src/interfaces/api-responses/login-response.d.ts.map +0 -1
  433. package/src/interfaces/api-responses/login-response.js +0 -3
  434. package/src/interfaces/api-responses/login-response.js.map +0 -1
  435. package/src/interfaces/api-responses/mnemonic-response.d.ts +0 -5
  436. package/src/interfaces/api-responses/mnemonic-response.d.ts.map +0 -1
  437. package/src/interfaces/api-responses/mnemonic-response.js +0 -3
  438. package/src/interfaces/api-responses/mnemonic-response.js.map +0 -1
  439. package/src/interfaces/api-responses/registration-response.d.ts +0 -6
  440. package/src/interfaces/api-responses/registration-response.d.ts.map +0 -1
  441. package/src/interfaces/api-responses/registration-response.js +0 -3
  442. package/src/interfaces/api-responses/registration-response.js.map +0 -1
  443. package/src/interfaces/api-responses/request-user-response.d.ts +0 -6
  444. package/src/interfaces/api-responses/request-user-response.d.ts.map +0 -1
  445. package/src/interfaces/api-responses/request-user-response.js +0 -3
  446. package/src/interfaces/api-responses/request-user-response.js.map +0 -1
  447. package/src/interfaces/api-responses/user-settings-response.d.ts +0 -12
  448. package/src/interfaces/api-responses/user-settings-response.d.ts.map +0 -1
  449. package/src/interfaces/api-responses/user-settings-response.js +0 -3
  450. package/src/interfaces/api-responses/user-settings-response.js.map +0 -1
  451. package/src/interfaces/application.d.ts +0 -17
  452. package/src/interfaces/application.d.ts.map +0 -1
  453. package/src/interfaces/application.js +0 -3
  454. package/src/interfaces/application.js.map +0 -1
  455. package/src/interfaces/backend-objects/email-token.d.ts +0 -4
  456. package/src/interfaces/backend-objects/email-token.d.ts.map +0 -1
  457. package/src/interfaces/backend-objects/email-token.js +0 -3
  458. package/src/interfaces/backend-objects/email-token.js.map +0 -1
  459. package/src/interfaces/backend-objects/index.d.ts.map +0 -1
  460. package/src/interfaces/backend-objects/index.js +0 -8
  461. package/src/interfaces/backend-objects/index.js.map +0 -1
  462. package/src/interfaces/backend-objects/request-user.d.ts +0 -5
  463. package/src/interfaces/backend-objects/request-user.d.ts.map +0 -1
  464. package/src/interfaces/backend-objects/request-user.js +0 -3
  465. package/src/interfaces/backend-objects/request-user.js.map +0 -1
  466. package/src/interfaces/backend-objects/role.d.ts +0 -4
  467. package/src/interfaces/backend-objects/role.d.ts.map +0 -1
  468. package/src/interfaces/backend-objects/role.js +0 -3
  469. package/src/interfaces/backend-objects/role.js.map +0 -1
  470. package/src/interfaces/backend-objects/user.d.ts +0 -4
  471. package/src/interfaces/backend-objects/user.d.ts.map +0 -1
  472. package/src/interfaces/backend-objects/user.js +0 -3
  473. package/src/interfaces/backend-objects/user.js.map +0 -1
  474. package/src/interfaces/checksum-config.d.ts +0 -5
  475. package/src/interfaces/checksum-config.d.ts.map +0 -1
  476. package/src/interfaces/checksum-config.js +0 -3
  477. package/src/interfaces/checksum-config.js.map +0 -1
  478. package/src/interfaces/checksum-consts.d.ts +0 -11
  479. package/src/interfaces/checksum-consts.d.ts.map +0 -1
  480. package/src/interfaces/checksum-consts.js +0 -3
  481. package/src/interfaces/checksum-consts.js.map +0 -1
  482. package/src/interfaces/constants.d.ts +0 -102
  483. package/src/interfaces/constants.d.ts.map +0 -1
  484. package/src/interfaces/constants.js +0 -3
  485. package/src/interfaces/constants.js.map +0 -1
  486. package/src/interfaces/controller-config.d.ts +0 -21
  487. package/src/interfaces/controller-config.d.ts.map +0 -1
  488. package/src/interfaces/controller-config.js +0 -3
  489. package/src/interfaces/controller-config.js.map +0 -1
  490. package/src/interfaces/create-user-basics.d.ts +0 -18
  491. package/src/interfaces/create-user-basics.d.ts.map +0 -1
  492. package/src/interfaces/create-user-basics.js +0 -3
  493. package/src/interfaces/create-user-basics.js.map +0 -1
  494. package/src/interfaces/csp-config.d.ts +0 -7
  495. package/src/interfaces/csp-config.d.ts.map +0 -1
  496. package/src/interfaces/csp-config.js +0 -13
  497. package/src/interfaces/csp-config.js.map +0 -1
  498. package/src/interfaces/csp-definition.d.ts +0 -13
  499. package/src/interfaces/csp-definition.d.ts.map +0 -1
  500. package/src/interfaces/csp-definition.js +0 -22
  501. package/src/interfaces/csp-definition.js.map +0 -1
  502. package/src/interfaces/db-init-result.d.ts +0 -5
  503. package/src/interfaces/db-init-result.d.ts.map +0 -1
  504. package/src/interfaces/db-init-result.js +0 -3
  505. package/src/interfaces/db-init-result.js.map +0 -1
  506. package/src/interfaces/deep-partial.d.ts +0 -4
  507. package/src/interfaces/deep-partial.d.ts.map +0 -1
  508. package/src/interfaces/deep-partial.js +0 -3
  509. package/src/interfaces/deep-partial.js.map +0 -1
  510. package/src/interfaces/discriminator-collections.d.ts +0 -7
  511. package/src/interfaces/discriminator-collections.d.ts.map +0 -1
  512. package/src/interfaces/discriminator-collections.js +0 -3
  513. package/src/interfaces/discriminator-collections.js.map +0 -1
  514. package/src/interfaces/email-service.d.ts +0 -4
  515. package/src/interfaces/email-service.d.ts.map +0 -1
  516. package/src/interfaces/email-service.js +0 -3
  517. package/src/interfaces/email-service.js.map +0 -1
  518. package/src/interfaces/environment-mongo.d.ts +0 -76
  519. package/src/interfaces/environment-mongo.d.ts.map +0 -1
  520. package/src/interfaces/environment-mongo.js +0 -3
  521. package/src/interfaces/environment-mongo.js.map +0 -1
  522. package/src/interfaces/environment.d.ts +0 -180
  523. package/src/interfaces/environment.d.ts.map +0 -1
  524. package/src/interfaces/environment.js +0 -3
  525. package/src/interfaces/environment.js.map +0 -1
  526. package/src/interfaces/failable-result.d.ts +0 -7
  527. package/src/interfaces/failable-result.d.ts.map +0 -1
  528. package/src/interfaces/failable-result.js +0 -3
  529. package/src/interfaces/failable-result.js.map +0 -1
  530. package/src/interfaces/fec-consts.d.ts +0 -5
  531. package/src/interfaces/fec-consts.d.ts.map +0 -1
  532. package/src/interfaces/fec-consts.js +0 -3
  533. package/src/interfaces/fec-consts.js.map +0 -1
  534. package/src/interfaces/flexible-csp.d.ts +0 -8
  535. package/src/interfaces/flexible-csp.d.ts.map +0 -1
  536. package/src/interfaces/flexible-csp.js +0 -14
  537. package/src/interfaces/flexible-csp.js.map +0 -1
  538. package/src/interfaces/handleable-error-options.d.ts +0 -7
  539. package/src/interfaces/handleable-error-options.d.ts.map +0 -1
  540. package/src/interfaces/handleable-error-options.js +0 -3
  541. package/src/interfaces/handleable-error-options.js.map +0 -1
  542. package/src/interfaces/index.d.ts.map +0 -1
  543. package/src/interfaces/index.js +0 -38
  544. package/src/interfaces/index.js.map +0 -1
  545. package/src/interfaces/jwt-consts.d.ts +0 -11
  546. package/src/interfaces/jwt-consts.d.ts.map +0 -1
  547. package/src/interfaces/jwt-consts.js +0 -3
  548. package/src/interfaces/jwt-consts.js.map +0 -1
  549. package/src/interfaces/jwt-sign-response.d.ts +0 -11
  550. package/src/interfaces/jwt-sign-response.d.ts.map +0 -1
  551. package/src/interfaces/jwt-sign-response.js +0 -3
  552. package/src/interfaces/jwt-sign-response.js.map +0 -1
  553. package/src/interfaces/models/email-token.d.ts +0 -6
  554. package/src/interfaces/models/email-token.d.ts.map +0 -1
  555. package/src/interfaces/models/email-token.js +0 -3
  556. package/src/interfaces/models/email-token.js.map +0 -1
  557. package/src/interfaces/models/index.d.ts.map +0 -1
  558. package/src/interfaces/models/index.js +0 -11
  559. package/src/interfaces/models/index.js.map +0 -1
  560. package/src/interfaces/models/mnemonic.d.ts +0 -6
  561. package/src/interfaces/models/mnemonic.d.ts.map +0 -1
  562. package/src/interfaces/models/mnemonic.js +0 -3
  563. package/src/interfaces/models/mnemonic.js.map +0 -1
  564. package/src/interfaces/models/role.d.ts +0 -6
  565. package/src/interfaces/models/role.d.ts.map +0 -1
  566. package/src/interfaces/models/role.js +0 -3
  567. package/src/interfaces/models/role.js.map +0 -1
  568. package/src/interfaces/models/token-role.d.ts +0 -11
  569. package/src/interfaces/models/token-role.d.ts.map +0 -1
  570. package/src/interfaces/models/token-role.js +0 -3
  571. package/src/interfaces/models/token-role.js.map +0 -1
  572. package/src/interfaces/models/used-direct-login-token.d.ts +0 -11
  573. package/src/interfaces/models/used-direct-login-token.d.ts.map +0 -1
  574. package/src/interfaces/models/used-direct-login-token.js +0 -3
  575. package/src/interfaces/models/used-direct-login-token.js.map +0 -1
  576. package/src/interfaces/models/user-role.d.ts +0 -11
  577. package/src/interfaces/models/user-role.d.ts.map +0 -1
  578. package/src/interfaces/models/user-role.js +0 -3
  579. package/src/interfaces/models/user-role.js.map +0 -1
  580. package/src/interfaces/models/user.d.ts +0 -11
  581. package/src/interfaces/models/user.d.ts.map +0 -1
  582. package/src/interfaces/models/user.js +0 -3
  583. package/src/interfaces/models/user.js.map +0 -1
  584. package/src/interfaces/mongo-errors.d.ts +0 -5
  585. package/src/interfaces/mongo-errors.d.ts.map +0 -1
  586. package/src/interfaces/mongo-errors.js +0 -3
  587. package/src/interfaces/mongo-errors.js.map +0 -1
  588. package/src/interfaces/request-user.d.ts +0 -58
  589. package/src/interfaces/request-user.d.ts.map +0 -1
  590. package/src/interfaces/request-user.js +0 -3
  591. package/src/interfaces/request-user.js.map +0 -1
  592. package/src/interfaces/required-string-keys.d.ts +0 -22
  593. package/src/interfaces/required-string-keys.d.ts.map +0 -1
  594. package/src/interfaces/required-string-keys.js +0 -3
  595. package/src/interfaces/required-string-keys.js.map +0 -1
  596. package/src/interfaces/schema.d.ts +0 -29
  597. package/src/interfaces/schema.d.ts.map +0 -1
  598. package/src/interfaces/schema.js +0 -3
  599. package/src/interfaces/schema.js.map +0 -1
  600. package/src/interfaces/server-init-result.d.ts +0 -35
  601. package/src/interfaces/server-init-result.d.ts.map +0 -1
  602. package/src/interfaces/server-init-result.js +0 -3
  603. package/src/interfaces/server-init-result.js.map +0 -1
  604. package/src/interfaces/status-code-response.d.ts +0 -7
  605. package/src/interfaces/status-code-response.d.ts.map +0 -1
  606. package/src/interfaces/status-code-response.js +0 -3
  607. package/src/interfaces/status-code-response.js.map +0 -1
  608. package/src/interfaces/symmetric-encryption-results.d.ts +0 -5
  609. package/src/interfaces/test-environment.d.ts +0 -12
  610. package/src/interfaces/test-environment.d.ts.map +0 -1
  611. package/src/interfaces/test-environment.js +0 -3
  612. package/src/interfaces/test-environment.js.map +0 -1
  613. package/src/interfaces/token-response.d.ts +0 -5
  614. package/src/interfaces/token-response.d.ts.map +0 -1
  615. package/src/interfaces/token-response.js +0 -3
  616. package/src/interfaces/token-response.js.map +0 -1
  617. package/src/middleware-utils.d.ts +0 -8
  618. package/src/middleware-utils.d.ts.map +0 -1
  619. package/src/middleware-utils.js +0 -94
  620. package/src/middleware-utils.js.map +0 -1
  621. package/src/middlewares/authenticate-crypto.d.ts +0 -10
  622. package/src/middlewares/authenticate-crypto.d.ts.map +0 -1
  623. package/src/middlewares/authenticate-crypto.js +0 -126
  624. package/src/middlewares/authenticate-crypto.js.map +0 -1
  625. package/src/middlewares/authenticate-token.d.ts +0 -21
  626. package/src/middlewares/authenticate-token.d.ts.map +0 -1
  627. package/src/middlewares/authenticate-token.js +0 -104
  628. package/src/middlewares/authenticate-token.js.map +0 -1
  629. package/src/middlewares/cleanup-crypto.d.ts +0 -7
  630. package/src/middlewares/cleanup-crypto.d.ts.map +0 -1
  631. package/src/middlewares/cleanup-crypto.js +0 -32
  632. package/src/middlewares/cleanup-crypto.js.map +0 -1
  633. package/src/middlewares/index.d.ts.map +0 -1
  634. package/src/middlewares/index.js +0 -8
  635. package/src/middlewares/index.js.map +0 -1
  636. package/src/middlewares/set-global-context-language.d.ts +0 -3
  637. package/src/middlewares/set-global-context-language.d.ts.map +0 -1
  638. package/src/middlewares/set-global-context-language.js +0 -14
  639. package/src/middlewares/set-global-context-language.js.map +0 -1
  640. package/src/model-registry.d.ts +0 -23
  641. package/src/model-registry.d.ts.map +0 -1
  642. package/src/model-registry.js +0 -47
  643. package/src/model-registry.js.map +0 -1
  644. package/src/models/email-token.d.ts +0 -8
  645. package/src/models/email-token.d.ts.map +0 -1
  646. package/src/models/email-token.js +0 -11
  647. package/src/models/email-token.js.map +0 -1
  648. package/src/models/index.d.ts.map +0 -1
  649. package/src/models/index.js +0 -10
  650. package/src/models/index.js.map +0 -1
  651. package/src/models/mnemonic.d.ts +0 -8
  652. package/src/models/mnemonic.d.ts.map +0 -1
  653. package/src/models/mnemonic.js +0 -11
  654. package/src/models/mnemonic.js.map +0 -1
  655. package/src/models/role.d.ts +0 -8
  656. package/src/models/role.d.ts.map +0 -1
  657. package/src/models/role.js +0 -11
  658. package/src/models/role.js.map +0 -1
  659. package/src/models/used-direct-login-token.d.ts +0 -8
  660. package/src/models/used-direct-login-token.d.ts.map +0 -1
  661. package/src/models/used-direct-login-token.js +0 -11
  662. package/src/models/used-direct-login-token.js.map +0 -1
  663. package/src/models/user-role.d.ts +0 -7
  664. package/src/models/user-role.d.ts.map +0 -1
  665. package/src/models/user-role.js +0 -10
  666. package/src/models/user-role.js.map +0 -1
  667. package/src/models/user.d.ts +0 -8
  668. package/src/models/user.d.ts.map +0 -1
  669. package/src/models/user.js +0 -11
  670. package/src/models/user.js.map +0 -1
  671. package/src/pipeline/index.d.ts.map +0 -1
  672. package/src/pipeline/index.js +0 -5
  673. package/src/pipeline/index.js.map +0 -1
  674. package/src/pipeline/pipeline-builder.d.ts +0 -8
  675. package/src/pipeline/pipeline-builder.d.ts.map +0 -1
  676. package/src/pipeline/pipeline-builder.js +0 -18
  677. package/src/pipeline/pipeline-builder.js.map +0 -1
  678. package/src/plugins/index.d.ts.map +0 -1
  679. package/src/plugins/index.js +0 -6
  680. package/src/plugins/index.js.map +0 -1
  681. package/src/plugins/plugin-interface.d.ts +0 -9
  682. package/src/plugins/plugin-interface.d.ts.map +0 -1
  683. package/src/plugins/plugin-interface.js +0 -3
  684. package/src/plugins/plugin-interface.js.map +0 -1
  685. package/src/plugins/plugin-manager.d.ts +0 -13
  686. package/src/plugins/plugin-manager.d.ts.map +0 -1
  687. package/src/plugins/plugin-manager.js +0 -37
  688. package/src/plugins/plugin-manager.js.map +0 -1
  689. package/src/registry/email-service-registry.d.ts +0 -27
  690. package/src/registry/email-service-registry.d.ts.map +0 -1
  691. package/src/registry/email-service-registry.js +0 -42
  692. package/src/registry/email-service-registry.js.map +0 -1
  693. package/src/registry/index.d.ts.map +0 -1
  694. package/src/registry/index.js +0 -6
  695. package/src/registry/index.js.map +0 -1
  696. package/src/responses/index.d.ts.map +0 -1
  697. package/src/responses/index.js +0 -5
  698. package/src/responses/index.js.map +0 -1
  699. package/src/responses/response-builder.d.ts +0 -24
  700. package/src/responses/response-builder.d.ts.map +0 -1
  701. package/src/responses/response-builder.js +0 -63
  702. package/src/responses/response-builder.js.map +0 -1
  703. package/src/routers/api.d.ts +0 -28
  704. package/src/routers/api.d.ts.map +0 -1
  705. package/src/routers/api.js +0 -80
  706. package/src/routers/api.js.map +0 -1
  707. package/src/routers/app.d.ts +0 -33
  708. package/src/routers/app.d.ts.map +0 -1
  709. package/src/routers/app.js +0 -228
  710. package/src/routers/app.js.map +0 -1
  711. package/src/routers/base.d.ts +0 -9
  712. package/src/routers/base.d.ts.map +0 -1
  713. package/src/routers/base.js +0 -14
  714. package/src/routers/base.js.map +0 -1
  715. package/src/routers/index.d.ts.map +0 -1
  716. package/src/routers/index.js +0 -7
  717. package/src/routers/index.js.map +0 -1
  718. package/src/routers/router-config.d.ts +0 -18
  719. package/src/routers/router-config.d.ts.map +0 -1
  720. package/src/routers/router-config.js +0 -8
  721. package/src/routers/router-config.js.map +0 -1
  722. package/src/routing/index.d.ts +0 -2
  723. package/src/routing/index.d.ts.map +0 -1
  724. package/src/routing/index.js +0 -5
  725. package/src/routing/index.js.map +0 -1
  726. package/src/routing/route-builder.d.ts +0 -36
  727. package/src/routing/route-builder.d.ts.map +0 -1
  728. package/src/routing/route-builder.js +0 -86
  729. package/src/routing/route-builder.js.map +0 -1
  730. package/src/schemas/email-token.d.ts +0 -49
  731. package/src/schemas/email-token.d.ts.map +0 -1
  732. package/src/schemas/email-token.js +0 -55
  733. package/src/schemas/email-token.js.map +0 -1
  734. package/src/schemas/index.d.ts.map +0 -1
  735. package/src/schemas/index.js +0 -11
  736. package/src/schemas/index.js.map +0 -1
  737. package/src/schemas/mnemonic.d.ts +0 -27
  738. package/src/schemas/mnemonic.d.ts.map +0 -1
  739. package/src/schemas/mnemonic.js +0 -31
  740. package/src/schemas/mnemonic.js.map +0 -1
  741. package/src/schemas/role.d.ts +0 -42
  742. package/src/schemas/role.d.ts.map +0 -1
  743. package/src/schemas/role.js +0 -89
  744. package/src/schemas/role.js.map +0 -1
  745. package/src/schemas/schema.d.ts +0 -42
  746. package/src/schemas/schema.d.ts.map +0 -1
  747. package/src/schemas/schema.js +0 -70
  748. package/src/schemas/schema.js.map +0 -1
  749. package/src/schemas/used-direct-login-token.d.ts +0 -37
  750. package/src/schemas/used-direct-login-token.d.ts.map +0 -1
  751. package/src/schemas/used-direct-login-token.js +0 -24
  752. package/src/schemas/used-direct-login-token.js.map +0 -1
  753. package/src/schemas/user-role.d.ts +0 -39
  754. package/src/schemas/user-role.d.ts.map +0 -1
  755. package/src/schemas/user-role.js +0 -55
  756. package/src/schemas/user-role.js.map +0 -1
  757. package/src/schemas/user.d.ts +0 -24
  758. package/src/schemas/user.d.ts.map +0 -1
  759. package/src/schemas/user.js +0 -195
  760. package/src/schemas/user.js.map +0 -1
  761. package/src/services/backup-code.d.ts +0 -76
  762. package/src/services/backup-code.d.ts.map +0 -1
  763. package/src/services/backup-code.js +0 -185
  764. package/src/services/backup-code.js.map +0 -1
  765. package/src/services/base.d.ts +0 -11
  766. package/src/services/base.d.ts.map +0 -1
  767. package/src/services/base.js +0 -15
  768. package/src/services/base.js.map +0 -1
  769. package/src/services/checksum.d.ts +0 -69
  770. package/src/services/checksum.d.ts.map +0 -1
  771. package/src/services/checksum.js +0 -145
  772. package/src/services/checksum.js.map +0 -1
  773. package/src/services/crc.d.ts +0 -87
  774. package/src/services/crc.d.ts.map +0 -1
  775. package/src/services/crc.js +0 -198
  776. package/src/services/crc.js.map +0 -1
  777. package/src/services/database-initialization.d.ts +0 -111
  778. package/src/services/database-initialization.d.ts.map +0 -1
  779. package/src/services/database-initialization.js +0 -878
  780. package/src/services/database-initialization.js.map +0 -1
  781. package/src/services/db-init-cache.d.ts +0 -10
  782. package/src/services/db-init-cache.d.ts.map +0 -1
  783. package/src/services/db-init-cache.js +0 -3
  784. package/src/services/db-init-cache.js.map +0 -1
  785. package/src/services/direct-login-token.d.ts +0 -7
  786. package/src/services/direct-login-token.d.ts.map +0 -1
  787. package/src/services/direct-login-token.js +0 -41
  788. package/src/services/direct-login-token.js.map +0 -1
  789. package/src/services/dummy-email-service.d.ts +0 -11
  790. package/src/services/dummy-email-service.d.ts.map +0 -1
  791. package/src/services/dummy-email-service.js +0 -16
  792. package/src/services/dummy-email-service.js.map +0 -1
  793. package/src/services/fec-usage-example.d.ts +0 -38
  794. package/src/services/fec-usage-example.d.ts.map +0 -1
  795. package/src/services/fec-usage-example.js +0 -75
  796. package/src/services/fec-usage-example.js.map +0 -1
  797. package/src/services/fec.d.ts +0 -46
  798. package/src/services/fec.d.ts.map +0 -1
  799. package/src/services/fec.js +0 -214
  800. package/src/services/fec.js.map +0 -1
  801. package/src/services/index.d.ts.map +0 -1
  802. package/src/services/index.js +0 -23
  803. package/src/services/index.js.map +0 -1
  804. package/src/services/jwt.d.ts +0 -30
  805. package/src/services/jwt.d.ts.map +0 -1
  806. package/src/services/jwt.js +0 -90
  807. package/src/services/jwt.js.map +0 -1
  808. package/src/services/key-wrapping.d.ts +0 -61
  809. package/src/services/key-wrapping.d.ts.map +0 -1
  810. package/src/services/key-wrapping.js +0 -307
  811. package/src/services/key-wrapping.js.map +0 -1
  812. package/src/services/mnemonic.d.ts +0 -62
  813. package/src/services/mnemonic.d.ts.map +0 -1
  814. package/src/services/mnemonic.js +0 -114
  815. package/src/services/mnemonic.js.map +0 -1
  816. package/src/services/request-user.d.ts +0 -23
  817. package/src/services/request-user.d.ts.map +0 -1
  818. package/src/services/request-user.js +0 -68
  819. package/src/services/request-user.js.map +0 -1
  820. package/src/services/role.d.ts +0 -87
  821. package/src/services/role.d.ts.map +0 -1
  822. package/src/services/role.js +0 -279
  823. package/src/services/role.js.map +0 -1
  824. package/src/services/symmetric.d.ts +0 -42
  825. package/src/services/symmetric.d.ts.map +0 -1
  826. package/src/services/symmetric.js +0 -101
  827. package/src/services/symmetric.js.map +0 -1
  828. package/src/services/system-user.d.ts +0 -16
  829. package/src/services/system-user.d.ts.map +0 -1
  830. package/src/services/system-user.js +0 -46
  831. package/src/services/system-user.js.map +0 -1
  832. package/src/services/user.d.ts +0 -345
  833. package/src/services/user.d.ts.map +0 -1
  834. package/src/services/user.js +0 -1447
  835. package/src/services/user.js.map +0 -1
  836. package/src/services/xor.d.ts +0 -24
  837. package/src/services/xor.d.ts.map +0 -1
  838. package/src/services/xor.js +0 -37
  839. package/src/services/xor.js.map +0 -1
  840. package/src/testing.d.ts +0 -3
  841. package/src/testing.d.ts.map +0 -1
  842. package/src/testing.js +0 -7
  843. package/src/testing.js.map +0 -1
  844. package/src/transactions/index.d.ts.map +0 -1
  845. package/src/transactions/index.js +0 -5
  846. package/src/transactions/index.js.map +0 -1
  847. package/src/transactions/transaction-manager.d.ts +0 -12
  848. package/src/transactions/transaction-manager.d.ts.map +0 -1
  849. package/src/transactions/transaction-manager.js +0 -30
  850. package/src/transactions/transaction-manager.js.map +0 -1
  851. package/src/types/app-config.d.ts +0 -16
  852. package/src/types/app-config.d.ts.map +0 -1
  853. package/src/types/app-config.js +0 -3
  854. package/src/types/app-config.js.map +0 -1
  855. package/src/types/controller-config.d.ts +0 -14
  856. package/src/types/controller-config.d.ts.map +0 -1
  857. package/src/types/controller-config.js +0 -3
  858. package/src/types/controller-config.js.map +0 -1
  859. package/src/types/environment-variables.d.ts.map +0 -1
  860. package/src/types/environment-variables.js +0 -39
  861. package/src/types/environment-variables.js.map +0 -1
  862. package/src/types/index.d.ts.map +0 -1
  863. package/src/types/index.js +0 -6
  864. package/src/types/index.js.map +0 -1
  865. package/src/types/mongoose-helpers.d.ts.map +0 -1
  866. package/src/types/mongoose-helpers.js +0 -6
  867. package/src/types/mongoose-helpers.js.map +0 -1
  868. package/src/types.d.ts +0 -104
  869. package/src/types.d.ts.map +0 -1
  870. package/src/types.js +0 -14
  871. package/src/types.js.map +0 -1
  872. package/src/utils.d.ts +0 -211
  873. package/src/utils.d.ts.map +0 -1
  874. package/src/utils.js +0 -818
  875. package/src/utils.js.map +0 -1
  876. package/src/validation/index.d.ts.map +0 -1
  877. package/src/validation/index.js +0 -5
  878. package/src/validation/index.js.map +0 -1
  879. package/src/validation/validation-builder.d.ts +0 -32
  880. package/src/validation/validation-builder.d.ts.map +0 -1
  881. package/src/validation/validation-builder.js +0 -81
  882. package/src/validation/validation-builder.js.map +0 -1
@@ -1,919 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.UserController = void 0;
4
- const tslib_1 = require("tslib");
5
- const ecies_lib_1 = require("@digitaldefiance/ecies-lib");
6
- const i18n_lib_1 = require("@digitaldefiance/i18n-lib");
7
- const node_ecies_lib_1 = require("@digitaldefiance/node-ecies-lib");
8
- const suite_core_lib_1 = require("@digitaldefiance/suite-core-lib");
9
- const express_validator_1 = require("express-validator");
10
- const zod_1 = require("zod");
11
- const backup_code_1 = require("../backup-code");
12
- const base_controller_1 = require("../decorators/base-controller");
13
- const controller_1 = require("../decorators/controller");
14
- const base_model_name_1 = require("../enumerations/base-model-name");
15
- const mnemonic_or_password_required_1 = require("../errors/mnemonic-or-password-required");
16
- const authenticate_token_1 = require("../middlewares/authenticate-token");
17
- const backup_code_2 = require("../services/backup-code");
18
- const jwt_1 = require("../services/jwt");
19
- const request_user_1 = require("../services/request-user");
20
- const role_1 = require("../services/role");
21
- const system_user_1 = require("../services/system-user");
22
- const user_1 = require("../services/user");
23
- const utils_1 = require("../utils");
24
- const isString = (v) => typeof v === 'string';
25
- const RegisterSchema = zod_1.z.object({
26
- username: zod_1.z.string(),
27
- email: zod_1.z.string(),
28
- timezone: zod_1.z.string(),
29
- password: zod_1.z.string().min(8).optional(),
30
- });
31
- const EmailLoginChallengeSchema = zod_1.z.object({
32
- token: zod_1.z.string(),
33
- signature: zod_1.z.string(),
34
- email: zod_1.z.string().optional(),
35
- username: zod_1.z.string().optional(),
36
- });
37
- const DirectLoginChallengeSchema = zod_1.z.object({
38
- challenge: zod_1.z.string(),
39
- signature: zod_1.z.string(),
40
- email: zod_1.z.string().optional(),
41
- username: zod_1.z.string().optional(),
42
- });
43
- let UserController = class UserController extends base_controller_1.DecoratorBaseController {
44
- userService;
45
- jwtService;
46
- backupCodeService;
47
- roleService;
48
- eciesService;
49
- systemUser;
50
- constructor(application, jwtService, userService, backupCodeService, roleService, eciesService) {
51
- super(application);
52
- this.jwtService = jwtService;
53
- this.userService = userService;
54
- this.backupCodeService = backupCodeService;
55
- this.roleService = roleService;
56
- this.eciesService = eciesService;
57
- this.systemUser = system_user_1.SystemUserService.getSystemUser(application.environment, application.constants);
58
- }
59
- async tokenVerifiedResponse(req, _res, _next) {
60
- if (!req.user) {
61
- throw new i18n_lib_1.HandleableError(new Error((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_NoUserOnRequest)), {
62
- statusCode: 401,
63
- });
64
- }
65
- const user = {
66
- id: req.user.id,
67
- email: req.user.email,
68
- username: req.user.username,
69
- roles: req.user.roles || [],
70
- rolePrivileges: req.user.rolePrivileges,
71
- timezone: req.user.timezone,
72
- currency: req.user.currency,
73
- emailVerified: req.user.emailVerified,
74
- darkMode: req.user.darkMode,
75
- siteLanguage: req.user.siteLanguage,
76
- directChallenge: req.user.directChallenge,
77
- ...(req.user.lastLogin && { lastLogin: req.user.lastLogin }),
78
- };
79
- return {
80
- statusCode: 200,
81
- response: {
82
- message: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_TokenValid),
83
- user,
84
- },
85
- };
86
- }
87
- async refreshToken(req, _res, _next) {
88
- const token = (0, authenticate_token_1.findAuthToken)(req.headers);
89
- if (!token) {
90
- throw new suite_core_lib_1.GenericValidationError((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_TokenMissing));
91
- }
92
- const tokenUser = await this.jwtService.verifyToken(token);
93
- if (!tokenUser) {
94
- throw new suite_core_lib_1.GenericValidationError((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_TokenInvalid));
95
- }
96
- const UserModel = this.application.getModel(base_model_name_1.BaseModelName.User);
97
- const userDoc = await UserModel.findById(tokenUser.userId).select('-password');
98
- if (!userDoc || userDoc.accountStatus !== suite_core_lib_1.AccountStatus.Active) {
99
- throw new suite_core_lib_1.GenericValidationError((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_UserNotFound));
100
- }
101
- const { token: newToken, roles } = await this.jwtService.signToken(userDoc, this.application.environment.jwtSecret, req.user?.siteLanguage ?? i18n_lib_1.LanguageCodes.EN_US);
102
- return {
103
- statusCode: 200,
104
- response: {
105
- message: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.TokenRefreshed),
106
- user: request_user_1.RequestUserService.makeRequestUserDTO(userDoc, roles),
107
- token: newToken,
108
- serverPublicKey: this.application.environment.systemPublicKeyHex ?? '',
109
- },
110
- headers: {
111
- Authorization: `Bearer ${newToken}`,
112
- },
113
- };
114
- }
115
- async register(req, _res, _next) {
116
- return await (0, utils_1.withTransaction)(this.application.db.connection, this.application.environment.mongo.useTransactions, undefined, async (sess) => {
117
- return await (0, utils_1.requireValidatedFieldsAsync)(req, RegisterSchema, async ({ username, email, timezone, password }) => {
118
- if (!isString(username) ||
119
- !isString(email) ||
120
- !isString(timezone)) {
121
- throw new suite_core_lib_1.GenericValidationError((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_MissingValidatedData));
122
- }
123
- const { user, mnemonic, backupCodes } = await this.userService.newUser(this.systemUser, {
124
- username: username.trim(),
125
- email: email.trim(),
126
- timezone: timezone,
127
- }, undefined, undefined, sess, this.application.environment.debug, password);
128
- await this.userService.createAndSendEmailToken(user, suite_core_lib_1.EmailTokenType.AccountVerification, sess, this.application.environment.debug);
129
- return {
130
- statusCode: 201,
131
- response: {
132
- message: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Registration_Success, { MNEMONIC: mnemonic }),
133
- mnemonic,
134
- backupCodes,
135
- },
136
- };
137
- });
138
- }, {
139
- timeoutMs: this.application.environment.mongo.transactionTimeout * 30,
140
- });
141
- }
142
- async completeAccountVerification(_req, _res, _next) {
143
- const { token } = this.validatedBody;
144
- return await (0, utils_1.withTransaction)(this.application.db.connection, this.application.environment.mongo.useTransactions, undefined, async (sess) => {
145
- await this.userService.verifyAccountTokenAndComplete(token, sess);
146
- return {
147
- statusCode: 200,
148
- response: {
149
- message: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.EmailVerification_Success),
150
- },
151
- };
152
- });
153
- }
154
- async setLanguage(req, _res, _next) {
155
- return await (0, utils_1.withTransaction)(this.application.db.connection, this.application.environment.mongo.useTransactions, undefined, async (sess) => {
156
- const { language } = this.validatedBody;
157
- if (!req.user) {
158
- throw new i18n_lib_1.HandleableError(new Error((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_NoUserOnRequest)), { statusCode: 401 });
159
- }
160
- const user = await this.userService.updateSiteLanguage(req.user.id, language, sess);
161
- return {
162
- statusCode: 200,
163
- response: {
164
- message: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.LanguageUpdate_Success),
165
- user,
166
- },
167
- };
168
- });
169
- }
170
- async setDarkMode(req, _res, _next) {
171
- return await (0, utils_1.withTransaction)(this.application.db.connection, this.application.environment.mongo.useTransactions, undefined, async (sess) => {
172
- const { darkMode } = this.validatedBody;
173
- if (!req.user) {
174
- throw new i18n_lib_1.HandleableError(new Error((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_NoUserOnRequest)), { statusCode: 401 });
175
- }
176
- const user = await this.userService.updateDarkMode(req.user.id, darkMode, sess);
177
- return {
178
- statusCode: 200,
179
- response: {
180
- message: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Settings_DarkModeSuccess),
181
- user,
182
- },
183
- };
184
- });
185
- }
186
- async getSettings(req, _res, _next) {
187
- if (!req.user) {
188
- throw new i18n_lib_1.HandleableError(new Error((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_NoUserOnRequest)), { statusCode: 401 });
189
- }
190
- const UserModel = this.application.getModel(base_model_name_1.BaseModelName.User);
191
- const userDoc = await UserModel.findById(req.user.id);
192
- return {
193
- statusCode: 200,
194
- response: {
195
- message: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Settings_RetrievedSuccess),
196
- settings: {
197
- email: userDoc?.email || '',
198
- timezone: userDoc?.timezone || '',
199
- currency: userDoc?.currency || '',
200
- siteLanguage: userDoc?.siteLanguage || '',
201
- darkMode: userDoc?.darkMode || false,
202
- directChallenge: userDoc?.directChallenge || false,
203
- },
204
- },
205
- };
206
- }
207
- async updateSettings(req, _res, _next) {
208
- return await (0, utils_1.withTransaction)(this.application.db.connection, this.application.environment.mongo.useTransactions, undefined, async (sess) => {
209
- const { email, timezone, siteLanguage, currency, darkMode, directChallenge, } = this.validatedBody;
210
- if (!req.user) {
211
- throw new i18n_lib_1.HandleableError(new Error((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_NoUserOnRequest)), { statusCode: 401 });
212
- }
213
- const user = await this.userService.updateUserSettings(req.user.id, {
214
- ...(email !== undefined && { email: email }),
215
- ...(timezone !== undefined && { timezone: timezone }),
216
- ...(siteLanguage !== undefined && {
217
- siteLanguage: siteLanguage,
218
- }),
219
- ...(currency !== undefined && { currency: currency }),
220
- ...(darkMode !== undefined && { darkMode: darkMode }),
221
- ...(directChallenge !== undefined && {
222
- directChallenge: directChallenge,
223
- }),
224
- }, sess);
225
- return {
226
- statusCode: 200,
227
- response: {
228
- message: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Settings_SaveSuccess),
229
- user,
230
- },
231
- };
232
- });
233
- }
234
- async getBackupCodeCount(req, _res, _next) {
235
- if (!req.user) {
236
- throw new i18n_lib_1.HandleableError(new Error((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_NoUserOnRequest)), { statusCode: 401 });
237
- }
238
- const UserModel = this.application.getModel(base_model_name_1.BaseModelName.User);
239
- const user = await UserModel.findById(req.user.id);
240
- return {
241
- statusCode: 200,
242
- response: {
243
- message: 'Backup codes retrieved',
244
- codeCount: user?.backupCodes?.length || 0,
245
- },
246
- };
247
- }
248
- async resetBackupCodes(req, _res, _next) {
249
- if (!req.user || !req.eciesUser || !req.eciesUser.hasPrivateKey) {
250
- throw new i18n_lib_1.HandleableError(new Error((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_NoUserOnRequest)), { statusCode: 401 });
251
- }
252
- const newBackupCodes = await this.userService.resetUserBackupCodes(req.eciesUser, this.systemUser);
253
- const codes = newBackupCodes.map((c) => c.notNullValue);
254
- newBackupCodes.forEach((c) => c.dispose());
255
- return {
256
- statusCode: 200,
257
- response: {
258
- message: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.BackupCodeRecovery_YourNewCodes),
259
- backupCodes: codes,
260
- },
261
- };
262
- }
263
- async recoverMnemonic(req, _res, _next) {
264
- return await (0, utils_1.withTransaction)(this.application.db.connection, this.application.environment.mongo.useTransactions, undefined, async (sess) => {
265
- if (!req.user) {
266
- throw new i18n_lib_1.HandleableError(new Error((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_InvalidCredentials)), { statusCode: 401 });
267
- }
268
- else if (!req.eciesUser) {
269
- throw new i18n_lib_1.HandleableError(new Error((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_MnemonicOrPasswordRequired)), { statusCode: 401 });
270
- }
271
- const { password } = this.validatedBody;
272
- if (!isString(password)) {
273
- throw new suite_core_lib_1.GenericValidationError((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_MissingValidatedData));
274
- }
275
- const provider = (0, node_ecies_lib_1.getEnhancedNodeIdProvider)();
276
- const userDoc = await this.userService.findUserById(provider.idFromString(req.user.id), true, sess);
277
- const mnemonic = await this.userService.recoverMnemonic(req.eciesUser, userDoc.mnemonicRecovery);
278
- return {
279
- statusCode: 200,
280
- response: {
281
- message: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.MnemonicRecovery_Success),
282
- mnemonic: mnemonic.notNullValue,
283
- },
284
- };
285
- });
286
- }
287
- async changePassword(req, _res, _next) {
288
- return await (0, utils_1.withTransaction)(this.application.db.connection, this.application.environment.mongo.useTransactions, undefined, async (sess) => {
289
- const { currentPassword, newPassword } = this.validatedBody;
290
- if (!req.user) {
291
- throw new i18n_lib_1.HandleableError(new Error((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_NoUserOnRequest)), { statusCode: 401 });
292
- }
293
- if (!isString(currentPassword) || !isString(newPassword)) {
294
- throw new suite_core_lib_1.GenericValidationError((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_MissingValidatedData));
295
- }
296
- await this.userService.changePassword(req.user.id, currentPassword, newPassword, sess);
297
- return {
298
- statusCode: 200,
299
- response: {
300
- message: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.PasswordChange_Success),
301
- },
302
- };
303
- });
304
- }
305
- async requestDirectLogin(_req, _res, _next) {
306
- const challenge = this.userService.generateDirectLoginChallenge();
307
- return {
308
- statusCode: 200,
309
- response: {
310
- challenge: challenge,
311
- message: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Login_ChallengeGenerated),
312
- serverPublicKey: this.application.environment.systemPublicKeyHex ?? '',
313
- },
314
- };
315
- }
316
- async directLoginChallenge(req, _res, _next) {
317
- return await (0, utils_1.withTransaction)(this.application.db.connection, this.application.environment.mongo.useTransactions, undefined, async (sess) => {
318
- const { username, email, challenge, signature } = this
319
- .validatedBody;
320
- const { userDoc } = await this.userService.verifyDirectLoginChallenge(String(challenge), String(signature), username ? String(username) : undefined, email ? String(email) : undefined, sess);
321
- const { token: jwtToken, roles } = await this.jwtService.signToken(userDoc, this.application.environment.jwtSecret, req.user?.siteLanguage ?? i18n_lib_1.LanguageCodes.EN_US);
322
- return {
323
- statusCode: 200,
324
- response: {
325
- user: request_user_1.RequestUserService.makeRequestUserDTO(userDoc, roles),
326
- token: jwtToken,
327
- serverPublicKey: this.application.environment.systemPublicKeyHex ?? '',
328
- message: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.LoggedIn_Success),
329
- },
330
- };
331
- });
332
- }
333
- async requestEmailLogin(_req, _res, _next) {
334
- const { username, email } = this.validatedBody;
335
- try {
336
- await (0, utils_1.withTransaction)(this.application.db.connection, this.application.environment.mongo.useTransactions, undefined, async (sess) => {
337
- const userDoc = await this.userService.findUser(email, username, sess);
338
- await this.userService.createAndSendEmailToken(userDoc, suite_core_lib_1.EmailTokenType.LoginRequest, sess, this.application.environment.debug);
339
- });
340
- }
341
- catch {
342
- // Suppress user-related errors for security
343
- }
344
- return {
345
- statusCode: 200,
346
- response: {
347
- message: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Email_TokenSent),
348
- },
349
- };
350
- }
351
- async emailLoginChallenge(req, _res, _next) {
352
- return await (0, utils_1.withTransaction)(this.application.db.connection, this.application.environment.mongo.useTransactions, undefined, async (sess) => {
353
- const { token, signature } = this.validatedBody;
354
- const userDoc = await this.userService.validateEmailLoginTokenChallenge(String(token), String(signature), sess);
355
- const { token: jwtToken, roles } = await this.jwtService.signToken(userDoc, this.application.environment.jwtSecret, req.user?.siteLanguage ?? i18n_lib_1.LanguageCodes.EN_US);
356
- return {
357
- statusCode: 200,
358
- response: {
359
- user: request_user_1.RequestUserService.makeRequestUserDTO(userDoc, roles),
360
- token: jwtToken,
361
- serverPublicKey: this.application.environment.systemPublicKeyHex ?? '',
362
- message: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.LoggedIn_Success),
363
- },
364
- };
365
- });
366
- }
367
- async resendVerification(_req, _res, _next) {
368
- return await (0, utils_1.withTransaction)(this.application.db.connection, this.application.environment.mongo.useTransactions, undefined, async (sess) => {
369
- const { username, email } = this.validatedBody;
370
- const UserModel = this.application.getModel(base_model_name_1.BaseModelName.User);
371
- const query = {};
372
- if (isString(username))
373
- query.username = username;
374
- else if (isString(email))
375
- query.email = email;
376
- else {
377
- throw new suite_core_lib_1.GenericValidationError((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_MissingValidatedData));
378
- }
379
- const user = await UserModel.findOne(query).session(sess ?? null);
380
- if (!user) {
381
- throw new suite_core_lib_1.GenericValidationError((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_UserNotFound), { statusCode: 404 });
382
- }
383
- await this.userService.resendEmailToken(user._id.toString(), suite_core_lib_1.EmailTokenType.AccountVerification, sess, this.application.environment.debug);
384
- return {
385
- statusCode: 200,
386
- response: {
387
- message: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.EmailVerification_Resent),
388
- },
389
- };
390
- });
391
- }
392
- async useBackupCodeLogin(_req, _res, _next) {
393
- return await (0, utils_1.withTransaction)(this.application.db.connection, this.application.environment.mongo.useTransactions, undefined, async (sess) => {
394
- const { code, newPassword, email, username } = this.validatedBody;
395
- if (!code) {
396
- throw new suite_core_lib_1.GenericValidationError((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_MissingValidatedData));
397
- }
398
- const recoverMnemonic = this.validatedBody?.['recoverMnemonic'] === 'true' ||
399
- this.validatedBody?.['recoverMnemonic'] === true;
400
- const userDoc = await this.userService.findUser(email, username, sess);
401
- const { user, userDoc: updatedUserDoc, codeCount, } = await this.backupCodeService.recoverKeyWithBackupCode(userDoc, code, newPassword ? new ecies_lib_1.SecureString(newPassword) : undefined, sess);
402
- let mnemonic;
403
- if (recoverMnemonic) {
404
- mnemonic = await this.userService.recoverMnemonic(user, updatedUserDoc.mnemonicRecovery);
405
- }
406
- const { token, roles } = await this.jwtService.signToken(userDoc, this.application.environment.jwtSecret, i18n_lib_1.LanguageCodes.EN_US);
407
- this.userService.updateLastLogin(updatedUserDoc._id).catch(() => { });
408
- return {
409
- statusCode: 200,
410
- response: {
411
- user: request_user_1.RequestUserService.makeRequestUserDTO(userDoc, roles),
412
- token: token,
413
- message: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.BackupCodeRecovery_Success),
414
- codeCount,
415
- ...(recoverMnemonic && mnemonic
416
- ? { mnemonic: mnemonic.value }
417
- : {}),
418
- serverPublicKey: this.application.environment.systemPublicKeyHex ?? '',
419
- },
420
- };
421
- });
422
- }
423
- async forgotPassword(_req, _res, _next) {
424
- return await (0, utils_1.withTransaction)(this.application.db.connection, this.application.environment.mongo.useTransactions, undefined, async (sess) => {
425
- const { email } = this.validatedBody;
426
- const UserModel = this.application.getModel(base_model_name_1.BaseModelName.User);
427
- if (!isString(email)) {
428
- throw new suite_core_lib_1.GenericValidationError((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_MissingValidatedData));
429
- }
430
- const user = await UserModel.findOne({
431
- email: email.toLowerCase(),
432
- }).session(sess ?? null);
433
- if (!user || !user.passwordWrappedPrivateKey) {
434
- return {
435
- statusCode: 200,
436
- response: {
437
- message: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.PasswordReset_Success),
438
- },
439
- };
440
- }
441
- // Mongoose document type doesn't exactly match IUserDocument generic signature
442
- // but the document has all required properties
443
- await this.userService.createAndSendEmailToken(user, suite_core_lib_1.EmailTokenType.PasswordReset, sess, this.application.environment.debug);
444
- return {
445
- statusCode: 200,
446
- response: {
447
- message: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.PasswordReset_Success),
448
- },
449
- };
450
- });
451
- }
452
- async verifyResetToken(req, _res, _next) {
453
- const token = req.query['token'];
454
- if (!token) {
455
- throw new suite_core_lib_1.GenericValidationError((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_TokenMissing));
456
- }
457
- return await (0, utils_1.withTransaction)(this.application.db.connection, this.application.environment.mongo.useTransactions, undefined, async (sess) => {
458
- await this.userService.verifyEmailToken(token, suite_core_lib_1.EmailTokenType.PasswordReset, sess);
459
- return {
460
- statusCode: 200,
461
- response: {
462
- message: 'Token is valid',
463
- },
464
- };
465
- });
466
- }
467
- async resetPassword(_req, _res, _next) {
468
- return await (0, utils_1.withTransaction)(this.application.db.connection, this.application.environment.mongo.useTransactions, undefined, async (sess) => {
469
- const { token, newPassword, password, currentPassword, mnemonic } = this.validatedBody;
470
- const selectedNewPassword = (newPassword ?? password);
471
- if (!isString(token) || !isString(selectedNewPassword)) {
472
- throw new suite_core_lib_1.GenericValidationError((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_MissingValidatedData));
473
- }
474
- const credential = mnemonic ??
475
- currentPassword;
476
- if (!isString(credential)) {
477
- throw new suite_core_lib_1.GenericValidationError((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_MissingValidatedData));
478
- }
479
- await this.userService.resetPasswordWithToken(token, selectedNewPassword, credential, sess);
480
- return {
481
- statusCode: 200,
482
- response: {
483
- message: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.PasswordChange_Success),
484
- },
485
- };
486
- });
487
- }
488
- };
489
- exports.UserController = UserController;
490
- tslib_1.__decorate([
491
- (0, controller_1.Get)('/verify', { auth: true }),
492
- tslib_1.__metadata("design:type", Function),
493
- tslib_1.__metadata("design:paramtypes", [Object, Object, Function]),
494
- tslib_1.__metadata("design:returntype", Promise)
495
- ], UserController.prototype, "tokenVerifiedResponse", null);
496
- tslib_1.__decorate([
497
- (0, controller_1.Get)('/refresh-token', { auth: true }),
498
- tslib_1.__metadata("design:type", Function),
499
- tslib_1.__metadata("design:paramtypes", [Object, Object, Function]),
500
- tslib_1.__metadata("design:returntype", Promise)
501
- ], UserController.prototype, "refreshToken", null);
502
- tslib_1.__decorate([
503
- (0, controller_1.Post)('/register', {
504
- schema: RegisterSchema,
505
- validation: function (validationLanguage) {
506
- const constants = this.constants;
507
- return [
508
- (0, express_validator_1.body)('username')
509
- .matches(constants.UsernameRegex)
510
- .withMessage((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_UsernameRegexErrorTemplate, undefined, validationLanguage)),
511
- (0, express_validator_1.body)('email')
512
- .isEmail()
513
- .withMessage((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_InvalidEmail, undefined, validationLanguage)),
514
- (0, express_validator_1.body)('timezone')
515
- .isString()
516
- .custom((value) => (0, i18n_lib_1.isValidTimezone)(value))
517
- .withMessage((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_TimezoneInvalid, undefined, validationLanguage)),
518
- (0, express_validator_1.body)('password')
519
- .optional()
520
- .matches(constants.PasswordRegex)
521
- .withMessage((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_PasswordRegexErrorTemplate)),
522
- ];
523
- },
524
- }),
525
- tslib_1.__metadata("design:type", Function),
526
- tslib_1.__metadata("design:paramtypes", [Object, Object, Function]),
527
- tslib_1.__metadata("design:returntype", Promise)
528
- ], UserController.prototype, "register", null);
529
- tslib_1.__decorate([
530
- (0, controller_1.Post)('/account-verification', {
531
- validation: function (validationLanguage) {
532
- const constants = this.constants;
533
- return [
534
- (0, express_validator_1.body)('token')
535
- .not()
536
- .isEmpty()
537
- .withMessage((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_TokenRequired, undefined, validationLanguage))
538
- .matches(new RegExp(`^[a-f0-9]{${constants.EmailTokenLength * 2}}$`))
539
- .withMessage((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_InvalidToken, undefined, validationLanguage)),
540
- ];
541
- },
542
- }),
543
- tslib_1.__metadata("design:type", Function),
544
- tslib_1.__metadata("design:paramtypes", [Object, Object, Function]),
545
- tslib_1.__metadata("design:returntype", Promise)
546
- ], UserController.prototype, "completeAccountVerification", null);
547
- tslib_1.__decorate([
548
- (0, controller_1.Post)('/language', {
549
- auth: true,
550
- validation: function (validationLanguage) {
551
- return [
552
- (0, express_validator_1.body)('language')
553
- .isString()
554
- .withMessage((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_InvalidLanguage, undefined, validationLanguage))
555
- .isIn(Object.values(i18n_lib_1.LanguageCodes))
556
- .withMessage((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_InvalidLanguage, undefined, validationLanguage)),
557
- ];
558
- },
559
- }),
560
- tslib_1.__metadata("design:type", Function),
561
- tslib_1.__metadata("design:paramtypes", [Object, Object, Function]),
562
- tslib_1.__metadata("design:returntype", Promise)
563
- ], UserController.prototype, "setLanguage", null);
564
- tslib_1.__decorate([
565
- (0, controller_1.Post)('/dark-mode', {
566
- auth: true,
567
- validation: function (validationLanguage) {
568
- return [
569
- (0, express_validator_1.body)('darkMode')
570
- .isBoolean()
571
- .withMessage((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_Required, undefined, validationLanguage)),
572
- ];
573
- },
574
- }),
575
- tslib_1.__metadata("design:type", Function),
576
- tslib_1.__metadata("design:paramtypes", [Object, Object, Function]),
577
- tslib_1.__metadata("design:returntype", Promise)
578
- ], UserController.prototype, "setDarkMode", null);
579
- tslib_1.__decorate([
580
- (0, controller_1.Get)('/settings', { auth: true }),
581
- tslib_1.__metadata("design:type", Function),
582
- tslib_1.__metadata("design:paramtypes", [Object, Object, Function]),
583
- tslib_1.__metadata("design:returntype", Promise)
584
- ], UserController.prototype, "getSettings", null);
585
- tslib_1.__decorate([
586
- (0, controller_1.Post)('/settings', {
587
- auth: true,
588
- validation: function (validationLanguage) {
589
- return [
590
- (0, express_validator_1.body)('email')
591
- .optional()
592
- .isEmail()
593
- .withMessage((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_InvalidEmail, undefined, validationLanguage)),
594
- (0, express_validator_1.body)('timezone')
595
- .optional()
596
- .isString()
597
- .custom((value) => (0, i18n_lib_1.isValidTimezone)(value))
598
- .withMessage((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_TimezoneInvalid, undefined, validationLanguage)),
599
- (0, express_validator_1.body)('siteLanguage')
600
- .optional()
601
- .isString()
602
- .isIn(Object.values(i18n_lib_1.LanguageCodes))
603
- .withMessage((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_InvalidLanguage, undefined, validationLanguage)),
604
- (0, express_validator_1.body)('currency')
605
- .optional()
606
- .isString()
607
- .withMessage((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_CurrencyCodeRequired, undefined, validationLanguage)),
608
- (0, express_validator_1.body)('darkMode')
609
- .optional()
610
- .isBoolean()
611
- .withMessage((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_Required, undefined, validationLanguage)),
612
- (0, express_validator_1.body)('directChallenge')
613
- .optional()
614
- .isBoolean()
615
- .withMessage((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_Required, undefined, validationLanguage)),
616
- ];
617
- },
618
- }),
619
- tslib_1.__metadata("design:type", Function),
620
- tslib_1.__metadata("design:paramtypes", [Object, Object, Function]),
621
- tslib_1.__metadata("design:returntype", Promise)
622
- ], UserController.prototype, "updateSettings", null);
623
- tslib_1.__decorate([
624
- (0, controller_1.Get)('/backup-codes', { auth: true }),
625
- tslib_1.__metadata("design:type", Function),
626
- tslib_1.__metadata("design:paramtypes", [Object, Object, Function]),
627
- tslib_1.__metadata("design:returntype", Promise)
628
- ], UserController.prototype, "getBackupCodeCount", null);
629
- tslib_1.__decorate([
630
- (0, controller_1.Post)('/backup-codes', {
631
- auth: true,
632
- cryptoAuth: true,
633
- validation: function (validationLanguage) {
634
- const constants = this.constants;
635
- return [
636
- (0, express_validator_1.body)().custom((value, { req }) => {
637
- if (!req.body?.password && !req.body?.mnemonic) {
638
- throw new mnemonic_or_password_required_1.MnemonicOrPasswordRequiredError();
639
- }
640
- return true;
641
- }),
642
- (0, express_validator_1.body)('password')
643
- .optional()
644
- .notEmpty()
645
- .withMessage((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_CurrentPasswordRequired, undefined, validationLanguage)),
646
- (0, express_validator_1.body)('mnemonic')
647
- .optional()
648
- .notEmpty()
649
- .withMessage((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_MnemonicRequired, undefined, validationLanguage))
650
- .matches(constants.MnemonicRegex)
651
- .withMessage((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_MnemonicRegex, undefined, validationLanguage)),
652
- ];
653
- },
654
- }),
655
- tslib_1.__metadata("design:type", Function),
656
- tslib_1.__metadata("design:paramtypes", [Object, Object, Function]),
657
- tslib_1.__metadata("design:returntype", Promise)
658
- ], UserController.prototype, "resetBackupCodes", null);
659
- tslib_1.__decorate([
660
- (0, controller_1.Post)('/recover-mnemonic', {
661
- auth: true,
662
- cryptoAuth: true,
663
- validation: function (validationLanguage) {
664
- return [
665
- (0, express_validator_1.body)('password')
666
- .isString()
667
- .withMessage((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_CurrentPasswordRequired, undefined, validationLanguage)),
668
- ];
669
- },
670
- }),
671
- tslib_1.__metadata("design:type", Function),
672
- tslib_1.__metadata("design:paramtypes", [Object, Object, Function]),
673
- tslib_1.__metadata("design:returntype", Promise)
674
- ], UserController.prototype, "recoverMnemonic", null);
675
- tslib_1.__decorate([
676
- (0, controller_1.Post)('/change-password', {
677
- auth: true,
678
- validation: function (validationLanguage) {
679
- const constants = this.constants;
680
- return [
681
- (0, express_validator_1.body)('currentPassword')
682
- .notEmpty()
683
- .withMessage((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_Required, undefined, validationLanguage)),
684
- (0, express_validator_1.body)('newPassword')
685
- .matches(constants.PasswordRegex)
686
- .withMessage((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_PasswordRegexErrorTemplate))
687
- .notEmpty()
688
- .withMessage((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_Required, undefined, validationLanguage)),
689
- ];
690
- },
691
- }),
692
- tslib_1.__metadata("design:type", Function),
693
- tslib_1.__metadata("design:paramtypes", [Object, Object, Function]),
694
- tslib_1.__metadata("design:returntype", Promise)
695
- ], UserController.prototype, "changePassword", null);
696
- tslib_1.__decorate([
697
- (0, controller_1.Post)('/request-direct-login'),
698
- tslib_1.__metadata("design:type", Function),
699
- tslib_1.__metadata("design:paramtypes", [Object, Object, Function]),
700
- tslib_1.__metadata("design:returntype", Promise)
701
- ], UserController.prototype, "requestDirectLogin", null);
702
- tslib_1.__decorate([
703
- (0, controller_1.Post)('/direct-challenge', {
704
- schema: DirectLoginChallengeSchema,
705
- validation: function (validationLanguage) {
706
- const constants = this.constants;
707
- return [
708
- (0, express_validator_1.body)('challenge')
709
- .not()
710
- .isEmpty()
711
- .withMessage((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_InvalidChallenge, undefined, validationLanguage))
712
- .matches(new RegExp(`^[a-f0-9]{${(ecies_lib_1.UINT64_SIZE + 32 + ecies_lib_1.ECIES.SIGNATURE_SIZE) * 2}}$`))
713
- .withMessage((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_InvalidChallenge, undefined, validationLanguage)),
714
- (0, express_validator_1.body)('signature')
715
- .not()
716
- .isEmpty()
717
- .withMessage((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_InvalidSignature))
718
- .matches(new RegExp(`^[a-f0-9]{${ecies_lib_1.ECIES.SIGNATURE_SIZE * 2}}$`))
719
- .withMessage(suite_core_lib_1.SuiteCoreStringKey.Validation_InvalidSignature),
720
- (0, express_validator_1.body)().custom((value, { req }) => {
721
- if (!req.body.username && !req.body.email) {
722
- throw new suite_core_lib_1.UsernameOrEmailRequiredError();
723
- }
724
- return true;
725
- }),
726
- (0, express_validator_1.body)('username')
727
- .optional()
728
- .matches(constants.UsernameRegex)
729
- .withMessage((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_UsernameRegexErrorTemplate, undefined, validationLanguage)),
730
- (0, express_validator_1.body)('email')
731
- .optional()
732
- .isEmail()
733
- .withMessage((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_InvalidEmail, undefined, validationLanguage)),
734
- ];
735
- },
736
- }),
737
- tslib_1.__metadata("design:type", Function),
738
- tslib_1.__metadata("design:paramtypes", [Object, Object, Function]),
739
- tslib_1.__metadata("design:returntype", Promise)
740
- ], UserController.prototype, "directLoginChallenge", null);
741
- tslib_1.__decorate([
742
- (0, controller_1.Post)('/request-email-login', {
743
- validation: function (validationLanguage) {
744
- const constants = this.constants;
745
- return [
746
- (0, express_validator_1.body)().custom((value, { req }) => {
747
- if (!req.body.username && !req.body.email) {
748
- throw new suite_core_lib_1.UsernameOrEmailRequiredError();
749
- }
750
- return true;
751
- }),
752
- (0, express_validator_1.body)('username')
753
- .optional()
754
- .matches(constants.UsernameRegex)
755
- .withMessage((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_UsernameRegexErrorTemplate, undefined, validationLanguage)),
756
- (0, express_validator_1.body)('email')
757
- .optional()
758
- .isEmail()
759
- .withMessage((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_InvalidEmail, undefined, validationLanguage)),
760
- ];
761
- },
762
- }),
763
- tslib_1.__metadata("design:type", Function),
764
- tslib_1.__metadata("design:paramtypes", [Object, Object, Function]),
765
- tslib_1.__metadata("design:returntype", Promise)
766
- ], UserController.prototype, "requestEmailLogin", null);
767
- tslib_1.__decorate([
768
- (0, controller_1.Post)('/email-challenge', {
769
- schema: EmailLoginChallengeSchema,
770
- validation: function (validationLanguage) {
771
- const constants = this.constants;
772
- return [
773
- (0, express_validator_1.body)('token')
774
- .not()
775
- .isEmpty()
776
- .withMessage((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_TokenRequired, undefined, validationLanguage))
777
- .matches(new RegExp(`^[a-f0-9]{${constants.EmailTokenLength * 2}}$`))
778
- .withMessage((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_InvalidToken, undefined, validationLanguage)),
779
- (0, express_validator_1.body)('signature')
780
- .not()
781
- .isEmpty()
782
- .withMessage((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_InvalidSignature))
783
- .matches(new RegExp(`^[a-f0-9]{${ecies_lib_1.ECIES.SIGNATURE_SIZE * 2}}$`))
784
- .withMessage(suite_core_lib_1.SuiteCoreStringKey.Validation_InvalidSignature),
785
- (0, express_validator_1.body)().custom((value, { req }) => {
786
- if (!req.body.username && !req.body.email) {
787
- throw new suite_core_lib_1.UsernameOrEmailRequiredError();
788
- }
789
- return true;
790
- }),
791
- (0, express_validator_1.body)('username')
792
- .optional()
793
- .matches(constants.UsernameRegex)
794
- .withMessage((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_UsernameRegexErrorTemplate, undefined, validationLanguage)),
795
- (0, express_validator_1.body)('email')
796
- .optional()
797
- .isEmail()
798
- .withMessage((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_InvalidEmail, undefined, validationLanguage)),
799
- ];
800
- },
801
- }),
802
- tslib_1.__metadata("design:type", Function),
803
- tslib_1.__metadata("design:paramtypes", [Object, Object, Function]),
804
- tslib_1.__metadata("design:returntype", Promise)
805
- ], UserController.prototype, "emailLoginChallenge", null);
806
- tslib_1.__decorate([
807
- (0, controller_1.Post)('/resend-verification', {
808
- validation: function (validationLanguage) {
809
- const constants = this.constants;
810
- return [
811
- (0, express_validator_1.body)().custom((value, { req }) => {
812
- if (!req.body.username && !req.body.email) {
813
- throw new suite_core_lib_1.UsernameOrEmailRequiredError();
814
- }
815
- return true;
816
- }),
817
- (0, express_validator_1.body)('username')
818
- .optional()
819
- .isString()
820
- .matches(constants.UsernameRegex)
821
- .withMessage((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_UsernameRegexErrorTemplate, undefined, validationLanguage)),
822
- (0, express_validator_1.body)('email').optional().isEmail(),
823
- ];
824
- },
825
- }),
826
- tslib_1.__metadata("design:type", Function),
827
- tslib_1.__metadata("design:paramtypes", [Object, Object, Function]),
828
- tslib_1.__metadata("design:returntype", Promise)
829
- ], UserController.prototype, "resendVerification", null);
830
- tslib_1.__decorate([
831
- (0, controller_1.Post)('/backup-code', {
832
- validation: function (validationLanguage) {
833
- const constants = this.constants;
834
- return [
835
- (0, express_validator_1.body)('email').optional().isEmail(),
836
- (0, express_validator_1.body)('username')
837
- .optional()
838
- .matches(constants.UsernameRegex)
839
- .withMessage((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_UsernameRegexErrorTemplate, undefined, validationLanguage)),
840
- (0, express_validator_1.body)('code')
841
- .custom((value) => {
842
- const normalized = backup_code_1.BackupCode.normalizeCode(value);
843
- return (constants.BACKUP_CODES.DisplayRegex.test(value) ||
844
- constants.BACKUP_CODES.NormalizedHexRegex.test(normalized));
845
- })
846
- .withMessage((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_InvalidBackupCode, undefined, validationLanguage)),
847
- (0, express_validator_1.body)('recoverMnemonic').isBoolean().optional(),
848
- (0, express_validator_1.body)('newPassword')
849
- .optional()
850
- .matches(constants.PasswordRegex)
851
- .withMessage((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_PasswordRegexErrorTemplate, undefined, validationLanguage)),
852
- ];
853
- },
854
- }),
855
- tslib_1.__metadata("design:type", Function),
856
- tslib_1.__metadata("design:paramtypes", [Object, Object, Function]),
857
- tslib_1.__metadata("design:returntype", Promise)
858
- ], UserController.prototype, "useBackupCodeLogin", null);
859
- tslib_1.__decorate([
860
- (0, controller_1.Post)('/forgot-password', {
861
- validation: function (validationLanguage) {
862
- return [
863
- (0, express_validator_1.body)('email')
864
- .isEmail()
865
- .withMessage((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_InvalidEmail, undefined, validationLanguage)),
866
- ];
867
- },
868
- }),
869
- tslib_1.__metadata("design:type", Function),
870
- tslib_1.__metadata("design:paramtypes", [Object, Object, Function]),
871
- tslib_1.__metadata("design:returntype", Promise)
872
- ], UserController.prototype, "forgotPassword", null);
873
- tslib_1.__decorate([
874
- (0, controller_1.Get)('/verify-reset-token'),
875
- tslib_1.__metadata("design:type", Function),
876
- tslib_1.__metadata("design:paramtypes", [Object, Object, Function]),
877
- tslib_1.__metadata("design:returntype", Promise)
878
- ], UserController.prototype, "verifyResetToken", null);
879
- tslib_1.__decorate([
880
- (0, controller_1.Post)('/reset-password', {
881
- validation: function (validationLanguage) {
882
- const constants = this.constants;
883
- return [
884
- (0, express_validator_1.body)('token')
885
- .not()
886
- .isEmpty()
887
- .withMessage((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_TokenRequired, undefined, validationLanguage))
888
- .matches(new RegExp(`^[a-f0-9]{${constants.EmailTokenLength * 2}}$`))
889
- .withMessage((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_InvalidToken, undefined, validationLanguage)),
890
- (0, express_validator_1.body)('newPassword')
891
- .optional()
892
- .isLength({ min: 8 })
893
- .withMessage((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_PasswordMinLengthTemplate, undefined, validationLanguage))
894
- .matches(constants.PasswordRegex)
895
- .withMessage((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_PasswordRegexErrorTemplate, undefined, validationLanguage)),
896
- (0, express_validator_1.body)('password')
897
- .optional()
898
- .isLength({ min: 8 })
899
- .withMessage((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_PasswordMinLengthTemplate, undefined, validationLanguage))
900
- .matches(constants.PasswordRegex)
901
- .withMessage((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_PasswordRegexErrorTemplate, undefined, validationLanguage)),
902
- (0, express_validator_1.body)('currentPassword').optional().isString(),
903
- (0, express_validator_1.body)('mnemonic').optional().isString(),
904
- ];
905
- },
906
- }),
907
- tslib_1.__metadata("design:type", Function),
908
- tslib_1.__metadata("design:paramtypes", [Object, Object, Function]),
909
- tslib_1.__metadata("design:returntype", Promise)
910
- ], UserController.prototype, "resetPassword", null);
911
- exports.UserController = UserController = tslib_1.__decorate([
912
- (0, controller_1.Controller)(),
913
- tslib_1.__metadata("design:paramtypes", [Object, jwt_1.JwtService,
914
- user_1.UserService,
915
- backup_code_2.BackupCodeService,
916
- role_1.RoleService,
917
- node_ecies_lib_1.ECIESService])
918
- ], UserController);
919
- //# sourceMappingURL=user.js.map