@resolveio/server-lib 22.3.22 → 22.3.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (674) hide show
  1. package/.nodemon.json +5 -0
  2. package/.vscode/settings.json +21 -0
  3. package/AGENTS.md +189 -0
  4. package/README.md +22 -0
  5. package/build_package.sh +5 -0
  6. package/compileDTS.pl +64 -0
  7. package/docs/ai-assistant-nightly-eval.md +65 -0
  8. package/docs/ai-assistant-preflight-checklist.md +23 -0
  9. package/docs/ai-assistant-report-builder-bridge-playbook.md +115 -0
  10. package/eslint-plugin-custom/index.js +7 -0
  11. package/eslint-plugin-custom/rules/no-filter-zero-index.js +44 -0
  12. package/eslint.config.js +103 -0
  13. package/gulpfile.js +216 -0
  14. package/methodAndPublicationListGenerator.py +344 -0
  15. package/mongodbensurers.js +2 -0
  16. package/mongostop.js +3 -0
  17. package/package.json +1 -1
  18. package/scripts/cleanup-bypassed-callmethod-logs.js +616 -0
  19. package/settings.development.json +25 -0
  20. package/settings.development.redacted.json +25 -0
  21. package/src/.env +12 -0
  22. package/src/ai/assistant-core-heuristics.ts +379 -0
  23. package/src/ai/resolveio-platform-intelligence-memory-corpus.ts +185 -0
  24. package/src/ai/resolveio-platform-intelligence-memory.ts +325 -0
  25. package/{ai/resolveio-platform-intelligence-types.d.ts → src/ai/resolveio-platform-intelligence-types.ts} +20 -15
  26. package/src/ai/resolveio-platform-intelligence.ts +462 -0
  27. package/src/client-server-app.ts +12 -0
  28. package/src/collections/ai-terminal-conversation.collection.ts +91 -0
  29. package/src/collections/ai-terminal-issue-report.collection.ts +99 -0
  30. package/src/collections/ai-terminal-message.collection.ts +77 -0
  31. package/src/collections/app-setting.collection.ts +104 -0
  32. package/src/collections/app-status.collection.ts +58 -0
  33. package/src/collections/communication-metric.collection.ts +84 -0
  34. package/src/collections/counter.collection.ts +56 -0
  35. package/src/collections/cron-job-history.collection.ts +94 -0
  36. package/src/collections/cron-job.collection.ts +92 -0
  37. package/src/collections/customer-notification.collection.ts +131 -0
  38. package/src/collections/customer-portal-password.collection.ts +76 -0
  39. package/src/collections/email-history.collection.ts +127 -0
  40. package/src/collections/email-verified.collection.ts +62 -0
  41. package/src/collections/file.collection.ts +74 -0
  42. package/src/collections/flag-update.collection.ts +57 -0
  43. package/src/collections/flag.collection.ts +57 -0
  44. package/src/collections/log-method-latency.collection.ts +77 -0
  45. package/src/collections/log-subscription.collection.ts +80 -0
  46. package/src/collections/log.collection.ts +93 -0
  47. package/src/collections/logged-in-users.collection.ts +67 -0
  48. package/src/collections/monitor-cpu.collection.ts +65 -0
  49. package/src/collections/monitor-function.collection.ts +74 -0
  50. package/src/collections/monitor-memory.collection.ts +77 -0
  51. package/src/collections/monitor-mongo.collection.ts +71 -0
  52. package/src/collections/notification.collection.ts +57 -0
  53. package/src/collections/openai-usage-ledger.collection.ts +77 -0
  54. package/src/collections/report-builder-dashboard-builder.collection.ts +109 -0
  55. package/src/collections/report-builder-library.collection.ts +89 -0
  56. package/src/collections/report-builder-report.collection.ts +184 -0
  57. package/src/collections/user-group.collection.ts +89 -0
  58. package/src/collections/user-guide.collection.ts +57 -0
  59. package/src/collections/user.collection.ts +181 -0
  60. package/src/cron/cron.ts +117 -0
  61. package/src/fixtures/cron-jobs.ts +95 -0
  62. package/src/fixtures/init.ts +35 -0
  63. package/src/http/auth.ts +764 -0
  64. package/src/http/health.ts +7 -0
  65. package/src/http/home.ts +90 -0
  66. package/src/http/slow-query-publication.ts +49 -0
  67. package/src/index.ts +1 -0
  68. package/src/managers/ai-assistant-codex-manager.manager.ts +1131 -0
  69. package/src/managers/communication-metric.manager.ts +82 -0
  70. package/src/managers/cron.manager.ts +333 -0
  71. package/src/managers/customer-notification-content.manager.ts +236 -0
  72. package/src/managers/diagnostic-manager-bootstrap.ts +165 -0
  73. package/src/managers/error-auto-fix.manager.ts +2767 -0
  74. package/src/managers/local-log.manager.ts +113 -0
  75. package/src/managers/method.manager.ts +1827 -0
  76. package/src/managers/mongo.manager.ts +4575 -0
  77. package/src/managers/monitor.manager.ts +507 -0
  78. package/src/managers/openai-usage-ledger.manager.ts +116 -0
  79. package/src/managers/slow-query-verifier.manager.ts +3590 -0
  80. package/src/managers/slow-query.manager.ts +519 -0
  81. package/src/managers/subscription.manager.ts +3128 -0
  82. package/src/managers/websocket.manager.ts +746 -0
  83. package/src/managers/worker-dispatcher.manager.ts +1360 -0
  84. package/src/managers/worker-server.manager.ts +536 -0
  85. package/src/methods/accounts.ts +532 -0
  86. package/src/methods/ai-terminal.ts +22943 -0
  87. package/src/methods/app-settings.ts +114 -0
  88. package/src/methods/aws.ts +649 -0
  89. package/src/methods/collections.ts +641 -0
  90. package/src/methods/counters.ts +69 -0
  91. package/src/methods/cron-jobs.ts +2614 -0
  92. package/src/methods/customer-notifications.ts +458 -0
  93. package/src/methods/diagnostics.ts +616 -0
  94. package/src/methods/flag-updates.ts +7 -0
  95. package/src/methods/flags.ts +7 -0
  96. package/src/methods/logs.ts +657 -0
  97. package/src/methods/mongo-explorer.ts +1880 -0
  98. package/src/methods/monitor.ts +540 -0
  99. package/src/methods/pdf.ts +1236 -0
  100. package/src/methods/publications.ts +129 -0
  101. package/src/methods/report-builder.ts +3300 -0
  102. package/src/methods/support.ts +335 -0
  103. package/src/models/ai-terminal-conversation.model.ts +19 -0
  104. package/src/models/ai-terminal-issue-report.model.ts +21 -0
  105. package/src/models/ai-terminal-message.model.ts +24 -0
  106. package/src/models/app-setting.model.ts +17 -0
  107. package/{models/app-status.model.d.ts → src/models/app-status.model.ts} +3 -2
  108. package/{models/billing-logged-in-users.model.d.ts → src/models/billing-logged-in-users.model.ts} +5 -4
  109. package/src/models/collection-document.model.ts +24 -0
  110. package/src/models/communication-metric.model.ts +23 -0
  111. package/{models/counter.model.d.ts → src/models/counter.model.ts} +4 -3
  112. package/src/models/cron-job-history.model.ts +16 -0
  113. package/src/models/cron-job.model.ts +15 -0
  114. package/src/models/customer-notification.model.ts +28 -0
  115. package/src/models/customer-portal-password.model.ts +12 -0
  116. package/src/models/dialog.model.ts +25 -0
  117. package/{models/email-history.model.js → src/models/email-history.model.ts} +35 -4
  118. package/{models/email-verified.model.d.ts → src/models/email-verified.model.ts} +6 -5
  119. package/{models/file.model.d.ts → src/models/file.model.ts} +8 -7
  120. package/{models/flag-update.model.d.ts → src/models/flag-update.model.ts} +4 -3
  121. package/{models/flag.model.d.ts → src/models/flag.model.ts} +4 -3
  122. package/src/models/log-method-latency.model.ts +11 -0
  123. package/{models/log-subscription.model.d.ts → src/models/log-subscription.model.ts} +11 -9
  124. package/src/models/log.model.ts +19 -0
  125. package/{models/logged-in-users.model.d.ts → src/models/logged-in-users.model.ts} +6 -5
  126. package/{models/method-response.model.d.ts → src/models/method-response.model.ts} +7 -6
  127. package/src/models/method.model.ts +25 -0
  128. package/{models/monitor-cpu.model.d.ts → src/models/monitor-cpu.model.ts} +9 -7
  129. package/src/models/monitor-function.model.ts +16 -0
  130. package/src/models/monitor-memory.model.ts +17 -0
  131. package/src/models/monitor-mongo.model.ts +15 -0
  132. package/{models/notification.model.d.ts → src/models/notification.model.ts} +6 -4
  133. package/src/models/openai-usage-ledger.model.ts +16 -0
  134. package/src/models/pagination.model.ts +35 -0
  135. package/src/models/permission.model.ts +14 -0
  136. package/src/models/report-builder-dashboard-builder.model.ts +29 -0
  137. package/src/models/report-builder-library.model.ts +20 -0
  138. package/src/models/report-builder-report.model.ts +136 -0
  139. package/src/models/report-builder.model.ts +68 -0
  140. package/src/models/select-data-label.model.ts +9 -0
  141. package/src/models/server-message.model.ts +31 -0
  142. package/src/models/slow-query-report.model.ts +23 -0
  143. package/src/models/subscription.model.ts +73 -0
  144. package/src/models/support-ticket.model.ts +104 -0
  145. package/src/models/user-group.model.ts +24 -0
  146. package/{models/user-guide.model.d.ts → src/models/user-guide.model.ts} +5 -4
  147. package/src/models/user.model.ts +96 -0
  148. package/src/private/images/ResolveIO.png +0 -0
  149. package/src/publications/ai-terminal.ts +73 -0
  150. package/src/publications/app-settings.ts +25 -0
  151. package/src/publications/app-status.ts +13 -0
  152. package/src/publications/cron-jobs.ts +40 -0
  153. package/src/publications/customer-notifications.ts +101 -0
  154. package/src/publications/files.ts +33 -0
  155. package/src/publications/flags-update.ts +19 -0
  156. package/src/publications/flags.ts +19 -0
  157. package/src/publications/logs.ts +163 -0
  158. package/src/publications/notifications.ts +13 -0
  159. package/src/publications/report-builder-dashboard-builders.ts +39 -0
  160. package/src/publications/report-builder-libraries.ts +41 -0
  161. package/src/publications/report-builder-reports.ts +47 -0
  162. package/src/publications/super-admin.ts +13 -0
  163. package/src/publications/user-groups.ts +12 -0
  164. package/src/publications/user-guides.ts +12 -0
  165. package/src/resolveio-server-app.ts +617 -0
  166. package/src/server-app.ts +3354 -0
  167. package/src/services/codex-client.ts +1223 -0
  168. package/src/services/openai-client.ts +265 -0
  169. package/src/types/error-report.ts +26 -0
  170. package/src/types/js-tiktoken.d.ts +11 -0
  171. package/src/types/slow-query-report.ts +28 -0
  172. package/src/util/ai-qa-policy.ts +799 -0
  173. package/src/util/common.ts +649 -0
  174. package/src/util/customer-portal-password.ts +183 -0
  175. package/src/util/error-reporter.ts +332 -0
  176. package/src/util/error-tracking.ts +79 -0
  177. package/src/util/report-builder-unwinds.ts +180 -0
  178. package/src/util/schema-report-builder.ts +448 -0
  179. package/src/util/slow-query-reporter.ts +216 -0
  180. package/src/util/subscription-dependency-context.ts +1096 -0
  181. package/src/util/tokenizer.ts +38 -0
  182. package/src/workers/codex-runner.worker.ts +142 -0
  183. package/start_server.sh +5 -0
  184. package/tests/ai-assistant-corpus-build.ts +484 -0
  185. package/tests/ai-assistant-corpus-replay-e2e.ts +774 -0
  186. package/tests/ai-assistant-data-parity-e2e.ts +1989 -0
  187. package/tests/ai-assistant-eval-triage.ts +831 -0
  188. package/tests/ai-assistant-openai-e2e.ts +1061 -0
  189. package/tests/ai-assistant-openai-git-e2e.ts +155 -0
  190. package/tests/ai-assistant-preflight-matrix.ts +215 -0
  191. package/tests/ai-assistant-routing-eval.test.ts +560 -0
  192. package/tests/ai-assistant-snf-live-eval.ts +975 -0
  193. package/tests/ai-assistant-utils.test.ts +2860 -0
  194. package/tests/ai-runner-contract.test.ts +119 -0
  195. package/tests/error-reporter.test.ts +145 -0
  196. package/tests/report-builder-linking.test.ts +79 -0
  197. package/tests/resolveio-platform-intelligence.test.ts +352 -0
  198. package/tests/server-app-cron-owner.test.ts +127 -0
  199. package/tests/subscription-connect-race.test.ts +158 -0
  200. package/tests/subscription-dependency-context.test.ts +324 -0
  201. package/tests/subscription-manager-collection-tracking.test.ts +86 -0
  202. package/tests/subscription-manager-invalidation.test.ts +86 -0
  203. package/tsconfig.json +34 -0
  204. package/ai/assistant-core-heuristics.d.ts +0 -11
  205. package/ai/assistant-core-heuristics.js +0 -356
  206. package/ai/assistant-core-heuristics.js.map +0 -1
  207. package/ai/resolveio-platform-intelligence-memory-corpus.d.ts +0 -3
  208. package/ai/resolveio-platform-intelligence-memory-corpus.js +0 -214
  209. package/ai/resolveio-platform-intelligence-memory-corpus.js.map +0 -1
  210. package/ai/resolveio-platform-intelligence-memory.d.ts +0 -20
  211. package/ai/resolveio-platform-intelligence-memory.js +0 -341
  212. package/ai/resolveio-platform-intelligence-memory.js.map +0 -1
  213. package/ai/resolveio-platform-intelligence-types.js +0 -4
  214. package/ai/resolveio-platform-intelligence-types.js.map +0 -1
  215. package/ai/resolveio-platform-intelligence.d.ts +0 -6
  216. package/ai/resolveio-platform-intelligence.js +0 -463
  217. package/ai/resolveio-platform-intelligence.js.map +0 -1
  218. package/client-server-app.d.ts +0 -1
  219. package/client-server-app.js +0 -68
  220. package/client-server-app.js.map +0 -1
  221. package/collections/ai-terminal-conversation.collection.d.ts +0 -2
  222. package/collections/ai-terminal-conversation.collection.js +0 -140
  223. package/collections/ai-terminal-conversation.collection.js.map +0 -1
  224. package/collections/ai-terminal-issue-report.collection.d.ts +0 -2
  225. package/collections/ai-terminal-issue-report.collection.js +0 -148
  226. package/collections/ai-terminal-issue-report.collection.js.map +0 -1
  227. package/collections/ai-terminal-message.collection.d.ts +0 -2
  228. package/collections/ai-terminal-message.collection.js +0 -121
  229. package/collections/ai-terminal-message.collection.js.map +0 -1
  230. package/collections/app-setting.collection.d.ts +0 -3
  231. package/collections/app-setting.collection.js +0 -103
  232. package/collections/app-setting.collection.js.map +0 -1
  233. package/collections/app-status.collection.d.ts +0 -3
  234. package/collections/app-status.collection.js +0 -57
  235. package/collections/app-status.collection.js.map +0 -1
  236. package/collections/communication-metric.collection.d.ts +0 -2
  237. package/collections/communication-metric.collection.js +0 -133
  238. package/collections/communication-metric.collection.js.map +0 -1
  239. package/collections/counter.collection.d.ts +0 -3
  240. package/collections/counter.collection.js +0 -56
  241. package/collections/counter.collection.js.map +0 -1
  242. package/collections/cron-job-history.collection.d.ts +0 -3
  243. package/collections/cron-job-history.collection.js +0 -137
  244. package/collections/cron-job-history.collection.js.map +0 -1
  245. package/collections/cron-job.collection.d.ts +0 -3
  246. package/collections/cron-job.collection.js +0 -92
  247. package/collections/cron-job.collection.js.map +0 -1
  248. package/collections/customer-notification.collection.d.ts +0 -3
  249. package/collections/customer-notification.collection.js +0 -130
  250. package/collections/customer-notification.collection.js.map +0 -1
  251. package/collections/customer-portal-password.collection.d.ts +0 -3
  252. package/collections/customer-portal-password.collection.js +0 -75
  253. package/collections/customer-portal-password.collection.js.map +0 -1
  254. package/collections/email-history.collection.d.ts +0 -3
  255. package/collections/email-history.collection.js +0 -127
  256. package/collections/email-history.collection.js.map +0 -1
  257. package/collections/email-verified.collection.d.ts +0 -3
  258. package/collections/email-verified.collection.js +0 -62
  259. package/collections/email-verified.collection.js.map +0 -1
  260. package/collections/file.collection.d.ts +0 -3
  261. package/collections/file.collection.js +0 -74
  262. package/collections/file.collection.js.map +0 -1
  263. package/collections/flag-update.collection.d.ts +0 -3
  264. package/collections/flag-update.collection.js +0 -57
  265. package/collections/flag-update.collection.js.map +0 -1
  266. package/collections/flag.collection.d.ts +0 -3
  267. package/collections/flag.collection.js +0 -57
  268. package/collections/flag.collection.js.map +0 -1
  269. package/collections/log-method-latency.collection.d.ts +0 -3
  270. package/collections/log-method-latency.collection.js +0 -77
  271. package/collections/log-method-latency.collection.js.map +0 -1
  272. package/collections/log-subscription.collection.d.ts +0 -3
  273. package/collections/log-subscription.collection.js +0 -80
  274. package/collections/log-subscription.collection.js.map +0 -1
  275. package/collections/log.collection.d.ts +0 -3
  276. package/collections/log.collection.js +0 -93
  277. package/collections/log.collection.js.map +0 -1
  278. package/collections/logged-in-users.collection.d.ts +0 -3
  279. package/collections/logged-in-users.collection.js +0 -67
  280. package/collections/logged-in-users.collection.js.map +0 -1
  281. package/collections/monitor-cpu.collection.d.ts +0 -3
  282. package/collections/monitor-cpu.collection.js +0 -65
  283. package/collections/monitor-cpu.collection.js.map +0 -1
  284. package/collections/monitor-function.collection.d.ts +0 -3
  285. package/collections/monitor-function.collection.js +0 -74
  286. package/collections/monitor-function.collection.js.map +0 -1
  287. package/collections/monitor-memory.collection.d.ts +0 -3
  288. package/collections/monitor-memory.collection.js +0 -77
  289. package/collections/monitor-memory.collection.js.map +0 -1
  290. package/collections/monitor-mongo.collection.d.ts +0 -3
  291. package/collections/monitor-mongo.collection.js +0 -71
  292. package/collections/monitor-mongo.collection.js.map +0 -1
  293. package/collections/notification.collection.d.ts +0 -3
  294. package/collections/notification.collection.js +0 -57
  295. package/collections/notification.collection.js.map +0 -1
  296. package/collections/openai-usage-ledger.collection.d.ts +0 -2
  297. package/collections/openai-usage-ledger.collection.js +0 -124
  298. package/collections/openai-usage-ledger.collection.js.map +0 -1
  299. package/collections/report-builder-dashboard-builder.collection.d.ts +0 -3
  300. package/collections/report-builder-dashboard-builder.collection.js +0 -109
  301. package/collections/report-builder-dashboard-builder.collection.js.map +0 -1
  302. package/collections/report-builder-library.collection.d.ts +0 -3
  303. package/collections/report-builder-library.collection.js +0 -87
  304. package/collections/report-builder-library.collection.js.map +0 -1
  305. package/collections/report-builder-report.collection.d.ts +0 -4
  306. package/collections/report-builder-report.collection.js +0 -184
  307. package/collections/report-builder-report.collection.js.map +0 -1
  308. package/collections/user-group.collection.d.ts +0 -4
  309. package/collections/user-group.collection.js +0 -89
  310. package/collections/user-group.collection.js.map +0 -1
  311. package/collections/user-guide.collection.d.ts +0 -3
  312. package/collections/user-guide.collection.js +0 -57
  313. package/collections/user-guide.collection.js.map +0 -1
  314. package/collections/user.collection.d.ts +0 -4
  315. package/collections/user.collection.js +0 -180
  316. package/collections/user.collection.js.map +0 -1
  317. package/cron/cron.d.ts +0 -14
  318. package/cron/cron.js +0 -216
  319. package/cron/cron.js.map +0 -1
  320. package/fixtures/cron-jobs.d.ts +0 -1
  321. package/fixtures/cron-jobs.js +0 -150
  322. package/fixtures/cron-jobs.js.map +0 -1
  323. package/fixtures/init.d.ts +0 -1
  324. package/fixtures/init.js +0 -91
  325. package/fixtures/init.js.map +0 -1
  326. package/http/auth.d.ts +0 -2
  327. package/http/auth.js +0 -906
  328. package/http/auth.js.map +0 -1
  329. package/http/health.d.ts +0 -1
  330. package/http/health.js +0 -11
  331. package/http/health.js.map +0 -1
  332. package/http/home.d.ts +0 -1
  333. package/http/home.js +0 -134
  334. package/http/home.js.map +0 -1
  335. package/http/slow-query-publication.d.ts +0 -2
  336. package/http/slow-query-publication.js +0 -99
  337. package/http/slow-query-publication.js.map +0 -1
  338. package/index.d.ts +0 -1
  339. package/index.js +0 -19
  340. package/index.js.map +0 -1
  341. package/managers/ai-assistant-codex-manager.manager.d.ts +0 -67
  342. package/managers/ai-assistant-codex-manager.manager.js +0 -1113
  343. package/managers/ai-assistant-codex-manager.manager.js.map +0 -1
  344. package/managers/communication-metric.manager.d.ts +0 -16
  345. package/managers/communication-metric.manager.js +0 -134
  346. package/managers/communication-metric.manager.js.map +0 -1
  347. package/managers/cron.manager.d.ts +0 -20
  348. package/managers/cron.manager.js +0 -534
  349. package/managers/cron.manager.js.map +0 -1
  350. package/managers/customer-notification-content.manager.d.ts +0 -55
  351. package/managers/customer-notification-content.manager.js +0 -158
  352. package/managers/customer-notification-content.manager.js.map +0 -1
  353. package/managers/diagnostic-manager-bootstrap.d.ts +0 -9
  354. package/managers/diagnostic-manager-bootstrap.js +0 -260
  355. package/managers/diagnostic-manager-bootstrap.js.map +0 -1
  356. package/managers/error-auto-fix.manager.d.ts +0 -149
  357. package/managers/error-auto-fix.manager.js +0 -3064
  358. package/managers/error-auto-fix.manager.js.map +0 -1
  359. package/managers/local-log.manager.d.ts +0 -18
  360. package/managers/local-log.manager.js +0 -88
  361. package/managers/local-log.manager.js.map +0 -1
  362. package/managers/method.manager.d.ts +0 -83
  363. package/managers/method.manager.js +0 -1941
  364. package/managers/method.manager.js.map +0 -1
  365. package/managers/mongo.manager.d.ts +0 -224
  366. package/managers/mongo.manager.js +0 -5000
  367. package/managers/mongo.manager.js.map +0 -1
  368. package/managers/monitor.manager.d.ts +0 -70
  369. package/managers/monitor.manager.js +0 -550
  370. package/managers/monitor.manager.js.map +0 -1
  371. package/managers/openai-usage-ledger.manager.d.ts +0 -15
  372. package/managers/openai-usage-ledger.manager.js +0 -144
  373. package/managers/openai-usage-ledger.manager.js.map +0 -1
  374. package/managers/slow-query-verifier.manager.d.ts +0 -144
  375. package/managers/slow-query-verifier.manager.js +0 -3857
  376. package/managers/slow-query-verifier.manager.js.map +0 -1
  377. package/managers/slow-query.manager.d.ts +0 -28
  378. package/managers/slow-query.manager.js +0 -468
  379. package/managers/slow-query.manager.js.map +0 -1
  380. package/managers/subscription.manager.d.ts +0 -169
  381. package/managers/subscription.manager.js +0 -3434
  382. package/managers/subscription.manager.js.map +0 -1
  383. package/managers/websocket.manager.d.ts +0 -73
  384. package/managers/websocket.manager.js +0 -673
  385. package/managers/websocket.manager.js.map +0 -1
  386. package/managers/worker-dispatcher.manager.d.ts +0 -120
  387. package/managers/worker-dispatcher.manager.js +0 -1266
  388. package/managers/worker-dispatcher.manager.js.map +0 -1
  389. package/managers/worker-server.manager.d.ts +0 -35
  390. package/managers/worker-server.manager.js +0 -582
  391. package/managers/worker-server.manager.js.map +0 -1
  392. package/methods/accounts.d.ts +0 -2
  393. package/methods/accounts.js +0 -624
  394. package/methods/accounts.js.map +0 -1
  395. package/methods/ai-terminal.d.ts +0 -322
  396. package/methods/ai-terminal.js +0 -22699
  397. package/methods/ai-terminal.js.map +0 -1
  398. package/methods/app-settings.d.ts +0 -2
  399. package/methods/app-settings.js +0 -169
  400. package/methods/app-settings.js.map +0 -1
  401. package/methods/aws.d.ts +0 -2
  402. package/methods/aws.js +0 -877
  403. package/methods/aws.js.map +0 -1
  404. package/methods/collections.d.ts +0 -2
  405. package/methods/collections.js +0 -719
  406. package/methods/collections.js.map +0 -1
  407. package/methods/counters.d.ts +0 -2
  408. package/methods/counters.js +0 -113
  409. package/methods/counters.js.map +0 -1
  410. package/methods/cron-jobs.d.ts +0 -2
  411. package/methods/cron-jobs.js +0 -2475
  412. package/methods/cron-jobs.js.map +0 -1
  413. package/methods/customer-notifications.d.ts +0 -2
  414. package/methods/customer-notifications.js +0 -528
  415. package/methods/customer-notifications.js.map +0 -1
  416. package/methods/diagnostics.d.ts +0 -2
  417. package/methods/diagnostics.js +0 -703
  418. package/methods/diagnostics.js.map +0 -1
  419. package/methods/flag-updates.d.ts +0 -2
  420. package/methods/flag-updates.js +0 -8
  421. package/methods/flag-updates.js.map +0 -1
  422. package/methods/flags.d.ts +0 -2
  423. package/methods/flags.js +0 -8
  424. package/methods/flags.js.map +0 -1
  425. package/methods/logs.d.ts +0 -2
  426. package/methods/logs.js +0 -751
  427. package/methods/logs.js.map +0 -1
  428. package/methods/mongo-explorer.d.ts +0 -2
  429. package/methods/mongo-explorer.js +0 -1808
  430. package/methods/mongo-explorer.js.map +0 -1
  431. package/methods/monitor.d.ts +0 -2
  432. package/methods/monitor.js +0 -543
  433. package/methods/monitor.js.map +0 -1
  434. package/methods/pdf.d.ts +0 -2
  435. package/methods/pdf.js +0 -1216
  436. package/methods/pdf.js.map +0 -1
  437. package/methods/publications.d.ts +0 -1
  438. package/methods/publications.js +0 -183
  439. package/methods/publications.js.map +0 -1
  440. package/methods/report-builder.d.ts +0 -2
  441. package/methods/report-builder.js +0 -3094
  442. package/methods/report-builder.js.map +0 -1
  443. package/methods/support.d.ts +0 -2
  444. package/methods/support.js +0 -430
  445. package/methods/support.js.map +0 -1
  446. package/models/ai-terminal-conversation.model.d.ts +0 -17
  447. package/models/ai-terminal-conversation.model.js +0 -4
  448. package/models/ai-terminal-conversation.model.js.map +0 -1
  449. package/models/ai-terminal-issue-report.model.d.ts +0 -19
  450. package/models/ai-terminal-issue-report.model.js +0 -4
  451. package/models/ai-terminal-issue-report.model.js.map +0 -1
  452. package/models/ai-terminal-message.model.d.ts +0 -22
  453. package/models/ai-terminal-message.model.js +0 -4
  454. package/models/ai-terminal-message.model.js.map +0 -1
  455. package/models/app-setting.model.d.ts +0 -16
  456. package/models/app-setting.model.js +0 -4
  457. package/models/app-setting.model.js.map +0 -1
  458. package/models/app-status.model.js +0 -4
  459. package/models/app-status.model.js.map +0 -1
  460. package/models/billing-logged-in-users.model.js +0 -4
  461. package/models/billing-logged-in-users.model.js.map +0 -1
  462. package/models/collection-document.model.d.ts +0 -21
  463. package/models/collection-document.model.js +0 -4
  464. package/models/collection-document.model.js.map +0 -1
  465. package/models/communication-metric.model.d.ts +0 -20
  466. package/models/communication-metric.model.js +0 -4
  467. package/models/communication-metric.model.js.map +0 -1
  468. package/models/counter.model.js +0 -4
  469. package/models/counter.model.js.map +0 -1
  470. package/models/cron-job-history.model.d.ts +0 -15
  471. package/models/cron-job-history.model.js +0 -4
  472. package/models/cron-job-history.model.js.map +0 -1
  473. package/models/cron-job.model.d.ts +0 -14
  474. package/models/cron-job.model.js +0 -4
  475. package/models/cron-job.model.js.map +0 -1
  476. package/models/customer-notification.model.d.ts +0 -26
  477. package/models/customer-notification.model.js +0 -4
  478. package/models/customer-notification.model.js.map +0 -1
  479. package/models/customer-portal-password.model.d.ts +0 -11
  480. package/models/customer-portal-password.model.js +0 -4
  481. package/models/customer-portal-password.model.js.map +0 -1
  482. package/models/dialog.model.d.ts +0 -23
  483. package/models/dialog.model.js +0 -4
  484. package/models/dialog.model.js.map +0 -1
  485. package/models/email-history.model.d.ts +0 -31
  486. package/models/email-history.model.js.map +0 -1
  487. package/models/email-verified.model.js +0 -4
  488. package/models/email-verified.model.js.map +0 -1
  489. package/models/file.model.js +0 -4
  490. package/models/file.model.js.map +0 -1
  491. package/models/flag-update.model.js +0 -4
  492. package/models/flag-update.model.js.map +0 -1
  493. package/models/flag.model.js +0 -4
  494. package/models/flag.model.js.map +0 -1
  495. package/models/log-method-latency.model.d.ts +0 -10
  496. package/models/log-method-latency.model.js +0 -4
  497. package/models/log-method-latency.model.js.map +0 -1
  498. package/models/log-subscription.model.js +0 -4
  499. package/models/log-subscription.model.js.map +0 -1
  500. package/models/log.model.d.ts +0 -17
  501. package/models/log.model.js +0 -4
  502. package/models/log.model.js.map +0 -1
  503. package/models/logged-in-users.model.js +0 -4
  504. package/models/logged-in-users.model.js.map +0 -1
  505. package/models/method-response.model.js +0 -4
  506. package/models/method-response.model.js.map +0 -1
  507. package/models/method.model.d.ts +0 -26
  508. package/models/method.model.js +0 -4
  509. package/models/method.model.js.map +0 -1
  510. package/models/monitor-cpu.model.js +0 -4
  511. package/models/monitor-cpu.model.js.map +0 -1
  512. package/models/monitor-function.model.d.ts +0 -14
  513. package/models/monitor-function.model.js +0 -4
  514. package/models/monitor-function.model.js.map +0 -1
  515. package/models/monitor-memory.model.d.ts +0 -15
  516. package/models/monitor-memory.model.js +0 -4
  517. package/models/monitor-memory.model.js.map +0 -1
  518. package/models/monitor-mongo.model.d.ts +0 -13
  519. package/models/monitor-mongo.model.js +0 -4
  520. package/models/monitor-mongo.model.js.map +0 -1
  521. package/models/notification.model.js +0 -4
  522. package/models/notification.model.js.map +0 -1
  523. package/models/openai-usage-ledger.model.d.ts +0 -15
  524. package/models/openai-usage-ledger.model.js +0 -4
  525. package/models/openai-usage-ledger.model.js.map +0 -1
  526. package/models/pagination.model.d.ts +0 -11
  527. package/models/pagination.model.js +0 -28
  528. package/models/pagination.model.js.map +0 -1
  529. package/models/permission.model.d.ts +0 -12
  530. package/models/permission.model.js +0 -4
  531. package/models/permission.model.js.map +0 -1
  532. package/models/report-builder-dashboard-builder.model.d.ts +0 -25
  533. package/models/report-builder-dashboard-builder.model.js +0 -4
  534. package/models/report-builder-dashboard-builder.model.js.map +0 -1
  535. package/models/report-builder-library.model.d.ts +0 -17
  536. package/models/report-builder-library.model.js +0 -4
  537. package/models/report-builder-library.model.js.map +0 -1
  538. package/models/report-builder-report.model.d.ts +0 -121
  539. package/models/report-builder-report.model.js +0 -4
  540. package/models/report-builder-report.model.js.map +0 -1
  541. package/models/report-builder.model.d.ts +0 -61
  542. package/models/report-builder.model.js +0 -4
  543. package/models/report-builder.model.js.map +0 -1
  544. package/models/select-data-label.model.d.ts +0 -9
  545. package/models/select-data-label.model.js +0 -4
  546. package/models/select-data-label.model.js.map +0 -1
  547. package/models/server-message.model.d.ts +0 -32
  548. package/models/server-message.model.js +0 -4
  549. package/models/server-message.model.js.map +0 -1
  550. package/models/slow-query-report.model.d.ts +0 -23
  551. package/models/slow-query-report.model.js +0 -4
  552. package/models/slow-query-report.model.js.map +0 -1
  553. package/models/subscription.model.d.ts +0 -31
  554. package/models/subscription.model.js +0 -4
  555. package/models/subscription.model.js.map +0 -1
  556. package/models/support-ticket.model.d.ts +0 -87
  557. package/models/support-ticket.model.js +0 -4
  558. package/models/support-ticket.model.js.map +0 -1
  559. package/models/user-group.model.d.ts +0 -20
  560. package/models/user-group.model.js +0 -4
  561. package/models/user-group.model.js.map +0 -1
  562. package/models/user-guide.model.js +0 -4
  563. package/models/user-guide.model.js.map +0 -1
  564. package/models/user.model.d.ts +0 -84
  565. package/models/user.model.js +0 -4
  566. package/models/user.model.js.map +0 -1
  567. package/private/images/ResolveIO.png +0 -0
  568. package/public_api.js +0 -112
  569. package/public_api.js.map +0 -1
  570. package/publications/ai-terminal.d.ts +0 -1
  571. package/publications/ai-terminal.js +0 -122
  572. package/publications/ai-terminal.js.map +0 -1
  573. package/publications/app-settings.d.ts +0 -2
  574. package/publications/app-settings.js +0 -28
  575. package/publications/app-settings.js.map +0 -1
  576. package/publications/app-status.d.ts +0 -2
  577. package/publications/app-status.js +0 -16
  578. package/publications/app-status.js.map +0 -1
  579. package/publications/cron-jobs.d.ts +0 -2
  580. package/publications/cron-jobs.js +0 -88
  581. package/publications/cron-jobs.js.map +0 -1
  582. package/publications/customer-notifications.d.ts +0 -2
  583. package/publications/customer-notifications.js +0 -161
  584. package/publications/customer-notifications.js.map +0 -1
  585. package/publications/files.d.ts +0 -2
  586. package/publications/files.js +0 -36
  587. package/publications/files.js.map +0 -1
  588. package/publications/flags-update.d.ts +0 -2
  589. package/publications/flags-update.js +0 -22
  590. package/publications/flags-update.js.map +0 -1
  591. package/publications/flags.d.ts +0 -2
  592. package/publications/flags.js +0 -22
  593. package/publications/flags.js.map +0 -1
  594. package/publications/logs.d.ts +0 -2
  595. package/publications/logs.js +0 -164
  596. package/publications/logs.js.map +0 -1
  597. package/publications/notifications.d.ts +0 -2
  598. package/publications/notifications.js +0 -16
  599. package/publications/notifications.js.map +0 -1
  600. package/publications/report-builder-dashboard-builders.d.ts +0 -2
  601. package/publications/report-builder-dashboard-builders.js +0 -42
  602. package/publications/report-builder-dashboard-builders.js.map +0 -1
  603. package/publications/report-builder-libraries.d.ts +0 -2
  604. package/publications/report-builder-libraries.js +0 -90
  605. package/publications/report-builder-libraries.js.map +0 -1
  606. package/publications/report-builder-reports.d.ts +0 -2
  607. package/publications/report-builder-reports.js +0 -50
  608. package/publications/report-builder-reports.js.map +0 -1
  609. package/publications/super-admin.d.ts +0 -2
  610. package/publications/super-admin.js +0 -16
  611. package/publications/super-admin.js.map +0 -1
  612. package/publications/user-groups.d.ts +0 -1
  613. package/publications/user-groups.js +0 -16
  614. package/publications/user-groups.js.map +0 -1
  615. package/publications/user-guides.d.ts +0 -1
  616. package/publications/user-guides.js +0 -16
  617. package/publications/user-guides.js.map +0 -1
  618. package/resolveio-server-app.d.ts +0 -70
  619. package/resolveio-server-app.js +0 -801
  620. package/resolveio-server-app.js.map +0 -1
  621. package/server-app.d.ts +0 -228
  622. package/server-app.js +0 -3566
  623. package/server-app.js.map +0 -1
  624. package/services/codex-client.d.ts +0 -126
  625. package/services/codex-client.js +0 -1622
  626. package/services/codex-client.js.map +0 -1
  627. package/services/openai-client.d.ts +0 -46
  628. package/services/openai-client.js +0 -318
  629. package/services/openai-client.js.map +0 -1
  630. package/types/error-report.d.ts +0 -25
  631. package/types/error-report.js +0 -4
  632. package/types/error-report.js.map +0 -1
  633. package/types/slow-query-report.d.ts +0 -27
  634. package/types/slow-query-report.js +0 -6
  635. package/types/slow-query-report.js.map +0 -1
  636. package/util/ai-qa-policy.d.ts +0 -94
  637. package/util/ai-qa-policy.js +0 -534
  638. package/util/ai-qa-policy.js.map +0 -1
  639. package/util/common.d.ts +0 -31
  640. package/util/common.js +0 -683
  641. package/util/common.js.map +0 -1
  642. package/util/customer-portal-password.d.ts +0 -13
  643. package/util/customer-portal-password.js +0 -209
  644. package/util/customer-portal-password.js.map +0 -1
  645. package/util/error-reporter.d.ts +0 -52
  646. package/util/error-reporter.js +0 -326
  647. package/util/error-reporter.js.map +0 -1
  648. package/util/error-tracking.d.ts +0 -13
  649. package/util/error-tracking.js +0 -120
  650. package/util/error-tracking.js.map +0 -1
  651. package/util/report-builder-unwinds.d.ts +0 -15
  652. package/util/report-builder-unwinds.js +0 -156
  653. package/util/report-builder-unwinds.js.map +0 -1
  654. package/util/schema-report-builder.d.ts +0 -6
  655. package/util/schema-report-builder.js +0 -481
  656. package/util/schema-report-builder.js.map +0 -1
  657. package/util/slow-query-reporter.d.ts +0 -28
  658. package/util/slow-query-reporter.js +0 -226
  659. package/util/slow-query-reporter.js.map +0 -1
  660. package/util/subscription-dependency-context.d.ts +0 -34
  661. package/util/subscription-dependency-context.js +0 -1283
  662. package/util/subscription-dependency-context.js.map +0 -1
  663. package/util/tokenizer.d.ts +0 -5
  664. package/util/tokenizer.js +0 -41
  665. package/util/tokenizer.js.map +0 -1
  666. package/workers/codex-runner.worker.d.ts +0 -1
  667. package/workers/codex-runner.worker.js +0 -192
  668. package/workers/codex-runner.worker.js.map +0 -1
  669. /package/{private → src/private}/email-templates/enrollment.html +0 -0
  670. /package/{private → src/private}/email-templates/forgot-password.html +0 -0
  671. /package/{private → src/private}/email-templates/support-ticket-deleted.html +0 -0
  672. /package/{private → src/private}/email-templates/support-ticket-modified.html +0 -0
  673. /package/{private → src/private}/email-templates/support-ticket.html +0 -0
  674. /package/{public_api.d.ts → src/public_api.ts} +0 -0
@@ -0,0 +1,764 @@
1
+ import * as express from 'express';
2
+ import * as handlebars from 'handlebars';
3
+ import * as jwt from 'jsonwebtoken';
4
+ import { jwtDecode } from 'jwt-decode';
5
+ import SimpleSchema from 'simpl-schema';
6
+ import { Users } from '../collections/user.collection';
7
+ import { ResolveIOServer } from '../resolveio-server-app';
8
+ import { ResolveIOMainServer } from '../server-app';
9
+ import { isAllowedOrigin, objectIdHexString } from '../util/common';
10
+ import { ErrorReporter } from '../util/error-reporter';
11
+
12
+ async function reportHttpValidationError(route: string, body: any, errors: any) {
13
+ const correlationId = objectIdHexString();
14
+ const config = ResolveIOServer.getServerConfig();
15
+ await ErrorReporter.report({
16
+ sourceApp: 'http-auth',
17
+ message: 'HTTP Validation Error - ' + route,
18
+ environment: config?.ROOT_URL,
19
+ clientSlug: ResolveIOServer.getClientName(),
20
+ clientName: config?.CLIENT_NAME,
21
+ context: {
22
+ route,
23
+ body,
24
+ errors
25
+ },
26
+ metadata: {
27
+ context: 'http-validation',
28
+ route,
29
+ correlationId
30
+ },
31
+ correlationId
32
+ });
33
+ }
34
+
35
+ export function setupAuthRoutes(mainServer: ResolveIOMainServer, app, serverConfig) {
36
+ app.post('/login365', express.json(), async (request, response) => {
37
+ if (!isAllowedOrigin(request.headers.origin, serverConfig)) {
38
+ response.send(JSON.stringify({
39
+ error: true,
40
+ result: 'Invalid header'
41
+ }));
42
+ }
43
+ else {
44
+ let body = request.body;
45
+
46
+ let schema = new SimpleSchema({
47
+ id_token: {
48
+ type: String
49
+ }
50
+ });
51
+
52
+ try {
53
+ schema.validate(body);
54
+ }
55
+ catch (errors) {
56
+ if (errors) {
57
+ console.error(new Date(), 'Error in HTTP Check (/login)', errors);
58
+
59
+ await reportHttpValidationError('/login365', body, errors);
60
+
61
+ response.send(JSON.stringify({
62
+ error: true,
63
+ result: 'Invalid Parameters'
64
+ }));
65
+
66
+ return;
67
+ }
68
+ }
69
+
70
+ let tokenData = body.id_token.split('&');
71
+ let token = tokenData[0].split('=')[1];
72
+ let decodedJWT = jwtDecode(token);
73
+
74
+ if (decodedJWT && decodedJWT['name'] && decodedJWT['preferred_username'] && decodedJWT['oid']) {
75
+ let user = await Users.findOne({'other.ms_oid': decodedJWT['oid']});
76
+
77
+ if (!user) {
78
+ user = await Users.findOne({email: decodedJWT['preferred_username'].toLowerCase()});
79
+
80
+ if (user) {
81
+ await Users.updateOne({_id: user._id}, {$set: {'other.ms_oid': decodedJWT['oid']}});
82
+ }
83
+ }
84
+
85
+ if (!user) {
86
+ user = {
87
+ _id: objectIdHexString(),
88
+ __v: 0,
89
+ roles: {
90
+ super_admin: false,
91
+ approvals: [],
92
+ groups: [],
93
+ notifications: [],
94
+ miscs: []
95
+ },
96
+ username: decodedJWT['preferred_username'].toLowerCase(),
97
+ email: decodedJWT['preferred_username'].toLowerCase(),
98
+ fullname: decodedJWT['name'],
99
+ active: true,
100
+ phonenumber: '',
101
+ readonly: false,
102
+ other: {
103
+ ms_oid: decodedJWT['oid']
104
+ },
105
+ attempts: 0,
106
+ salt: jwt.sign({now: (Date.now() - 1000).toString()}, serverConfig['JWT_SECRET'], {
107
+ expiresIn : 90 * 24 * 60 * 60 * 1000 // 90 days
108
+ }),
109
+ hash: jwt.sign({now: (Date.now() + 1000).toString()}, serverConfig['JWT_SECRET'], {
110
+ expiresIn : 90 * 24 * 60 * 60 * 1000 // 90 days
111
+ }),
112
+ last: new Date(),
113
+ settings: null,
114
+ services: null,
115
+ is_customer: false
116
+ };
117
+
118
+ await Users.create(user);
119
+ }
120
+ else {
121
+ let update = false;
122
+
123
+ if (user.email !== decodedJWT['preferred_username'].toLowerCase()) {
124
+ user.email = decodedJWT['preferred_username'].toLowerCase();
125
+ update = true;
126
+ }
127
+
128
+ if (user.fullname !== decodedJWT['name']) {
129
+ user.fullname = decodedJWT['name'];
130
+ update = true;
131
+ }
132
+
133
+ if (update) {
134
+ await Users.updateOne({_id: user._id}, {$set: {email: user.email, fullname: user.fullname}});
135
+ }
136
+ }
137
+
138
+ response.send(JSON.stringify({
139
+ error: false,
140
+ result: {
141
+ token: jwt.sign({id_user: user._id}, serverConfig['JWT_SECRET'], {
142
+ expiresIn : 90 * 24 * 60 * 60 * 1000 // 90 days
143
+ })
144
+ }
145
+ }));
146
+ }
147
+ else {
148
+ console.log('ERROR - 1', tokenData, token, decodedJWT);
149
+
150
+ response.send(JSON.stringify({
151
+ error: true,
152
+ result: 'Invalid Azure Token'
153
+ }));
154
+ }
155
+ }
156
+ });
157
+
158
+ // Login via HTTP, return refresh token if authenticated
159
+ app.post('/login', express.json(), async (request, response) => {
160
+ if (!isAllowedOrigin(request.headers.origin, serverConfig)) {
161
+ response.send(JSON.stringify({
162
+ error: true,
163
+ result: 'Invalid header'
164
+ }));
165
+ }
166
+ else {
167
+
168
+ let body = request.body;
169
+
170
+ let schema = new SimpleSchema({
171
+ username: {
172
+ type: String
173
+ },
174
+ password: {
175
+ type: String
176
+ }
177
+ });
178
+
179
+ try {
180
+ schema.validate(body);
181
+ }
182
+ catch (errors) {
183
+ if (errors) {
184
+ console.error(new Date(), 'Error in HTTP Check (/login)', errors);
185
+
186
+ await reportHttpValidationError('/login', body, errors);
187
+
188
+ response.send(JSON.stringify({
189
+ error: true,
190
+ result: 'Invalid Parameters'
191
+ }));
192
+
193
+ return;
194
+ }
195
+ }
196
+
197
+ let user = await Users.findOne({active: true, username: body.username});
198
+
199
+ if (!user) {
200
+ user = await Users.findOne({active: true, email: body.username});
201
+ }
202
+
203
+ if (!user) {
204
+ response.send(JSON.stringify({
205
+ error: true,
206
+ result: 'Invalid Username And Password'
207
+ }));
208
+
209
+ return;
210
+ }
211
+
212
+ let resAuth = await Users.authenticate(user, body.password);
213
+
214
+ if (resAuth['error']) {
215
+ if (resAuth['error'] === 'Too Many Attempts') {
216
+ response.send(JSON.stringify({
217
+ error: true,
218
+ result: resAuth['error'] + '. A password reset link has been sent to your email, please reset your password.'
219
+ }));
220
+
221
+ if (!user.services) {
222
+ user.services = {};
223
+ }
224
+
225
+ user.services['forgot_password'] = jwt.sign({id_user: user._id}, serverConfig['JWT_SECRET']);
226
+
227
+ let emailData = {
228
+ userToChangePassword: user.fullname,
229
+ userWhoResetPassword: ResolveIOServer.getClientName() + ' System',
230
+ url: (serverConfig['ROOT_URL'] + '/forgot-password?' + encodeURIComponent(serverConfig['SERVER_URL']) + '&' + user.services['forgot_password'])
231
+ };
232
+
233
+ await Users.updateOne({_id: user._id}, {$set: {services: user.services}});
234
+ let html = mainServer.getMethodManager().readFile('email-templates/forgot-password.html');
235
+ let template = handlebars.compile(html);
236
+ handlebars.registerHelper('equals', (a, b) => {
237
+ return a === b;
238
+ });
239
+
240
+ await mainServer.getMethodManager().sendEmail(user.email, 'ResolveIO (' + ResolveIOServer.getClientName() + ') - Forgot Password', '', template(emailData), null, null, '');
241
+ }
242
+ else if (resAuth['error'] === 'No Salt Value Stored') {
243
+ response.send(JSON.stringify({
244
+ error: true,
245
+ result: 'A password reset link has been sent to your email, please reset your password.'
246
+ }));
247
+
248
+ if (!user.services) {
249
+ user.services = {};
250
+ }
251
+
252
+ user.services['forgot_password'] = jwt.sign({id_user: user._id}, serverConfig['JWT_SECRET']);
253
+
254
+ let emailData = {
255
+ userToChangePassword: user.fullname,
256
+ userWhoResetPassword: ResolveIOServer.getClientName() + ' System',
257
+ url: (serverConfig['ROOT_URL'] + '/forgot-password?' + encodeURIComponent(serverConfig['SERVER_URL']) + '&' + user.services['forgot_password'])
258
+ };
259
+
260
+ await Users.updateOne({_id: user._id}, {$set: {services: user.services}});
261
+ let html = mainServer.getMethodManager().readFile('email-templates/forgot-password.html');
262
+ let template = handlebars.compile(html);
263
+ handlebars.registerHelper('equals', (a, b) => {
264
+ return a === b;
265
+ });
266
+
267
+ await mainServer.getMethodManager().sendEmail(user.email, 'ResolveIO (' + ResolveIOServer.getClientName() + ') - Forgot Password', '', template(emailData), null, null, '');
268
+ }
269
+ else {
270
+ response.send(JSON.stringify({
271
+ error: true,
272
+ result: resAuth['error']
273
+ }));
274
+ }
275
+ }
276
+ else {
277
+ if (resAuth && resAuth['data'] && resAuth['data'].active) {
278
+ await Users.resetAttempts(resAuth['data']);
279
+ response.send(JSON.stringify({
280
+ error: false,
281
+ result: {
282
+ token: jwt.sign({id_user: resAuth['data']._id}, serverConfig['JWT_SECRET'], {
283
+ expiresIn : 90 * 24 * 60 * 60 * 1000 // 90 days
284
+ })
285
+ }
286
+ }));
287
+ }
288
+ }
289
+ }
290
+ });
291
+
292
+ app.post('/accessToken', express.json(), async (request, response) => {
293
+ if (!isAllowedOrigin(request.headers.origin, serverConfig)) {
294
+ response.send(JSON.stringify({
295
+ error: true,
296
+ result: 'Invalid header'
297
+ }));
298
+ }
299
+ else {
300
+ let body = request.body;
301
+
302
+ let schema = new SimpleSchema({
303
+ refreshToken: {
304
+ type: String
305
+ }
306
+ });
307
+
308
+ try {
309
+ schema.validate(body);
310
+ }
311
+ catch (errors) {
312
+ if (errors) {
313
+ console.error(new Date(), 'Error in HTTP Check (/accessToken)', errors);
314
+
315
+ await reportHttpValidationError('/accessToken', body, errors);
316
+
317
+ response.send(JSON.stringify({
318
+ error: true,
319
+ result: 'Invalid Parameters'
320
+ }));
321
+
322
+ return;
323
+ }
324
+ }
325
+
326
+ jwt.verify(body.refreshToken, serverConfig['JWT_SECRET'], async (err, decoded) => {
327
+ if (err) {
328
+ response.send(JSON.stringify({
329
+ error: true,
330
+ result: 'Invalid Token'
331
+ }));
332
+ }
333
+ else {
334
+ try {
335
+ let user = await Users.findById(decoded['id_user']);
336
+ if (user) {
337
+ if (user.active) {
338
+ response.send(JSON.stringify({
339
+ error: false,
340
+ result: {
341
+ token: jwt.sign({id_user: user._id}, serverConfig['JWT_SECRET'], {
342
+ expiresIn : 3 * 24 * 60 * 60 * 1000 // 3 days
343
+ }),
344
+ user: user
345
+ }
346
+ }));
347
+ }
348
+ else {
349
+ response.send(JSON.stringify({
350
+ error: true,
351
+ result: 'Account is Disabled'
352
+ }));
353
+ }
354
+ }
355
+ else {
356
+ response.send(JSON.stringify({
357
+ error: true,
358
+ result: 'Invalid User'
359
+ }));
360
+ }
361
+ }
362
+ catch {
363
+ response.send(JSON.stringify({
364
+ error: true,
365
+ result: 'Invalid Mongo Get User'
366
+ }));
367
+ }
368
+ }
369
+ });
370
+ }
371
+ });
372
+
373
+ app.post('/userWithEnrollmentToken', express.json(), async (request, response) => {
374
+ if (!isAllowedOrigin(request.headers.origin, serverConfig)) {
375
+ response.send(JSON.stringify({
376
+ error: true,
377
+ result: 'Invalid header'
378
+ }));
379
+ }
380
+ else {
381
+ let body = request.body;
382
+
383
+ let schema = new SimpleSchema({
384
+ enrollmentToken: {
385
+ type: String
386
+ }
387
+ });
388
+
389
+ try {
390
+ schema.validate(body);
391
+ }
392
+ catch (errors) {
393
+ if (errors) {
394
+ console.error(new Date(), 'Error in HTTP Check (/userWithEnrollmentToken)', errors);
395
+
396
+ await reportHttpValidationError('/userWithEnrollmentToken', body, errors);
397
+
398
+ response.send(JSON.stringify({
399
+ error: true,
400
+ result: 'Invalid Parameters'
401
+ }));
402
+
403
+ return;
404
+ }
405
+ }
406
+
407
+ jwt.verify(body.enrollmentToken, serverConfig['JWT_SECRET'], async (err, decoded) => {
408
+ if (err) {
409
+ response.send(JSON.stringify({
410
+ error: true,
411
+ result: 'Invalid Token'
412
+ }));
413
+ }
414
+ else {
415
+ try {
416
+ let user = await Users.findOne({
417
+ $and: [
418
+ {_id: decoded['id_user']},
419
+ {'services.enrollment': body.enrollmentToken}
420
+ ]
421
+ }, {projection: {_id: 1, __v: 1, username: 1, active: 1}});
422
+ if (user) {
423
+ if (user.active) {
424
+
425
+ response.send(JSON.stringify({
426
+ error: false,
427
+ result: {
428
+ user: user
429
+ }
430
+ }));
431
+ }
432
+ else {
433
+ response.send(JSON.stringify({
434
+ error: true,
435
+ result: 'Account is Disabled'
436
+ }));
437
+ }
438
+ }
439
+ else {
440
+ response.send(JSON.stringify({
441
+ error: true,
442
+ result: 'Invalid User'
443
+ }));
444
+ }
445
+ }
446
+ catch {
447
+ response.send(JSON.stringify({
448
+ error: true,
449
+ result: 'Invalid Mongo Get User'
450
+ }));
451
+ }
452
+ }
453
+ });
454
+ }
455
+ });
456
+
457
+ app.post('/setUserWithEnrollmentToken', express.json(), async (request, response) => {
458
+ if (!isAllowedOrigin(request.headers.origin, serverConfig)) {
459
+ response.send(JSON.stringify({
460
+ error: true,
461
+ result: 'Invalid header'
462
+ }));
463
+ }
464
+ else {
465
+ let body = request.body;
466
+
467
+ let schema = new SimpleSchema({
468
+ enrollmentToken: {
469
+ type: String
470
+ },
471
+ password: {
472
+ type: String
473
+ }
474
+ });
475
+
476
+ try {
477
+ schema.validate(body);
478
+ }
479
+ catch (errors) {
480
+ if (errors) {
481
+ console.error(new Date(), 'Error in HTTP Check (/setUserWithEnrollmentToken)', errors);
482
+
483
+ await reportHttpValidationError('/setUserWithEnrollmentToken', body, errors);
484
+
485
+ response.send(JSON.stringify({
486
+ error: true,
487
+ result: 'Invalid Parameters'
488
+ }));
489
+
490
+ return;
491
+ }
492
+ }
493
+
494
+ jwt.verify(body.enrollmentToken, serverConfig['JWT_SECRET'], async (err, decoded) => {
495
+ if (err) {
496
+ response.send(JSON.stringify({
497
+ error: true,
498
+ result: 'Invalid Token'
499
+ }));
500
+ }
501
+ else {
502
+ try {
503
+ let user = await Users.findOne({
504
+ $and: [
505
+ {_id: decoded['id_user']},
506
+ {'services.enrollment': body.enrollmentToken}
507
+ ]
508
+ });
509
+ if (user) {
510
+ if (user.active) {
511
+ await Users.setPassword(user, body.password);
512
+
513
+ response.send(JSON.stringify({
514
+ error: false,
515
+ result: true
516
+ }));
517
+ }
518
+ else {
519
+ response.send(JSON.stringify({
520
+ error: true,
521
+ result: 'Account is Disabled'
522
+ }));
523
+ }
524
+ }
525
+ else {
526
+ response.send(JSON.stringify({
527
+ error: true,
528
+ result: 'Invalid User'
529
+ }));
530
+ }
531
+ }
532
+ catch {
533
+ response.send(JSON.stringify({
534
+ error: true,
535
+ result: 'Invalid Mongo Get User'
536
+ }));
537
+ }
538
+ }
539
+ });
540
+ }
541
+ });
542
+
543
+ app.post('/userWithForgotPasswordToken', express.json(), async (request, response) => {
544
+ if (!isAllowedOrigin(request.headers.origin, serverConfig)) {
545
+ response.send(JSON.stringify({
546
+ error: true,
547
+ result: 'Invalid header'
548
+ }));
549
+ }
550
+ else {
551
+ let body = request.body;
552
+
553
+ let schema = new SimpleSchema({
554
+ forgotPasswordToken: {
555
+ type: String
556
+ }
557
+ });
558
+
559
+ try {
560
+ schema.validate(body);
561
+ }
562
+ catch (errors) {
563
+ if (errors) {
564
+ console.error(new Date(), 'Error in HTTP Check (/userWithForgotPasswordToken)', errors);
565
+
566
+ await reportHttpValidationError('/userWithForgotPasswordToken', body, errors);
567
+
568
+ response.send(JSON.stringify({
569
+ error: true,
570
+ result: 'Invalid Parameters'
571
+ }));
572
+
573
+ return;
574
+ }
575
+ }
576
+
577
+ jwt.verify(body.forgotPasswordToken, serverConfig['JWT_SECRET'], async (err, decoded) => {
578
+ if (err) {
579
+ response.send(JSON.stringify({
580
+ error: true,
581
+ result: 'Invalid Token'
582
+ }));
583
+ }
584
+ else {
585
+ try {
586
+ let user = await Users.findOne({
587
+ $and: [
588
+ {_id: decoded['id_user']},
589
+ {'services.forgot_password': body.forgotPasswordToken}
590
+ ]
591
+ }, {projection: {_id: 1, __v: 1, username: 1, active: 1}});
592
+
593
+ if (user) {
594
+ if (user.active) {
595
+ response.send(JSON.stringify({
596
+ error: false,
597
+ result: {
598
+ user: user
599
+ }
600
+ }));
601
+ }
602
+ else {
603
+ response.send(JSON.stringify({
604
+ error: true,
605
+ result: 'Account is Disabled'
606
+ }));
607
+ }
608
+ }
609
+ else {
610
+ response.send(JSON.stringify({
611
+ error: true,
612
+ result: 'Invalid Token'
613
+ }));
614
+ }
615
+ }
616
+ catch {
617
+ response.send(JSON.stringify({
618
+ error: true,
619
+ result: 'Invalid Mongo Get User'
620
+ }));
621
+ }
622
+ }
623
+ });
624
+ }
625
+ });
626
+
627
+ app.post('/setUserWithForgotPasswordToken', express.json(), async (request, response) => {
628
+ if (!isAllowedOrigin(request.headers.origin, serverConfig)) {
629
+ response.send(JSON.stringify({
630
+ error: true,
631
+ result: 'Invalid header'
632
+ }));
633
+ }
634
+ else {
635
+ let body = request.body;
636
+
637
+ let schema = new SimpleSchema({
638
+ forgotPasswordToken: {
639
+ type: String
640
+ },
641
+ password: {
642
+ type: String
643
+ }
644
+ });
645
+
646
+ try {
647
+ schema.validate(body);
648
+ }
649
+ catch (errors) {
650
+ if (errors) {
651
+ console.error(new Date(), 'Error in HTTP Check (/setUserWithForgotPasswordToken)', errors);
652
+
653
+ await reportHttpValidationError('/setUserWithForgotPasswordToken', body, errors);
654
+
655
+ response.send(JSON.stringify({
656
+ error: true,
657
+ result: 'Invalid Parameters'
658
+ }));
659
+
660
+ return;
661
+ }
662
+ }
663
+
664
+ jwt.verify(body.forgotPasswordToken, serverConfig['JWT_SECRET'], async (err, decoded) => {
665
+ if (err) {
666
+ response.send(JSON.stringify({
667
+ error: true,
668
+ result: 'Invalid Token'
669
+ }));
670
+ }
671
+ else {
672
+ try {
673
+ let user = await Users.findOne({
674
+ $and: [
675
+ {_id: decoded['id_user']},
676
+ {'services.forgot_password': body.forgotPasswordToken}
677
+ ]
678
+ });
679
+
680
+ if (user) {
681
+ if (user.active) {
682
+ await Users.setPassword(user, body.password);
683
+
684
+ response.send(JSON.stringify({
685
+ error: false,
686
+ result: true
687
+ }));
688
+ }
689
+ else {
690
+ response.send(JSON.stringify({
691
+ error: true,
692
+ result: 'Account is Disabled'
693
+ }));
694
+ }
695
+ }
696
+ else {
697
+ response.send(JSON.stringify({
698
+ error: true,
699
+ result: 'Invalid User'
700
+ }));
701
+ }
702
+ }
703
+ catch {
704
+ response.send(JSON.stringify({
705
+ error: true,
706
+ result: 'Invalid Mongo Get User'
707
+ }));
708
+ }
709
+ }
710
+ });
711
+ }
712
+ });
713
+
714
+ app.post('/resetPassword', express.json(), async (request, response) => {
715
+ if (!isAllowedOrigin(request.headers.origin, serverConfig)) {
716
+ response.send(JSON.stringify({
717
+ error: true,
718
+ result: 'Invalid header'
719
+ }));
720
+ }
721
+ else {
722
+ let body = request.body;
723
+
724
+ let schema = new SimpleSchema({
725
+ username: {
726
+ type: String
727
+ }
728
+ });
729
+
730
+ try {
731
+ schema.validate(body);
732
+ }
733
+ catch (errors) {
734
+ if (errors) {
735
+ console.error(new Date(), 'Error in HTTP Check (/resetPassword)', errors);
736
+
737
+ await reportHttpValidationError('/resetPassword', body, errors);
738
+
739
+ response.send(JSON.stringify({
740
+ error: true,
741
+ result: 'Invalid Parameters'
742
+ }));
743
+
744
+ return;
745
+ }
746
+ }
747
+
748
+ let user = await Users.findOne({active: true, username: body.username});
749
+
750
+ if (!user) {
751
+ user = await Users.findOne({active: true, email: body.username});
752
+ }
753
+
754
+ if (user) {
755
+ await mainServer.getMethodManager().callMethod.call(mainServer.getMethodManager(), 'resetUserPassword', user._id);
756
+ }
757
+
758
+ response.send(JSON.stringify({
759
+ error: false,
760
+ result: ''
761
+ }));
762
+ }
763
+ });
764
+ }