@budibase/backend-core 2.9.16 → 2.9.18

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 (435) hide show
  1. package/dist/index.js +12544 -0
  2. package/dist/index.js.map +7 -0
  3. package/dist/index.js.meta.json +1 -0
  4. package/dist/package.json +5 -5
  5. package/dist/plugins.js +288 -16
  6. package/dist/plugins.js.map +7 -1
  7. package/dist/plugins.js.meta.json +1 -0
  8. package/dist/tests.js +8476 -0
  9. package/dist/tests.js.map +7 -0
  10. package/dist/tests.js.meta.json +1 -0
  11. package/dist/tsconfig.build.tsbuildinfo +1 -1
  12. package/package.json +5 -5
  13. package/scripts/build.js +6 -0
  14. package/tsconfig.build.json +5 -1
  15. package/tsconfig.json +0 -8
  16. package/dist/jest.config.js +0 -25
  17. package/dist/jest.config.js.map +0 -1
  18. package/dist/plugins.d.ts +0 -1
  19. package/dist/src/accounts/accounts.js +0 -83
  20. package/dist/src/accounts/accounts.js.map +0 -1
  21. package/dist/src/accounts/api.js +0 -92
  22. package/dist/src/accounts/api.js.map +0 -1
  23. package/dist/src/accounts/index.js +0 -18
  24. package/dist/src/accounts/index.js.map +0 -1
  25. package/dist/src/auth/auth.js +0 -189
  26. package/dist/src/auth/auth.js.map +0 -1
  27. package/dist/src/auth/index.js +0 -18
  28. package/dist/src/auth/index.js.map +0 -1
  29. package/dist/src/blacklist/blacklist.js +0 -76
  30. package/dist/src/blacklist/blacklist.js.map +0 -1
  31. package/dist/src/blacklist/index.js +0 -18
  32. package/dist/src/blacklist/index.js.map +0 -1
  33. package/dist/src/cache/appMetadata.js +0 -96
  34. package/dist/src/cache/appMetadata.js.map +0 -1
  35. package/dist/src/cache/base/index.js +0 -120
  36. package/dist/src/cache/base/index.js.map +0 -1
  37. package/dist/src/cache/generic.js +0 -31
  38. package/dist/src/cache/generic.js.map +0 -1
  39. package/dist/src/cache/index.js +0 -35
  40. package/dist/src/cache/index.js.map +0 -1
  41. package/dist/src/cache/user.js +0 -108
  42. package/dist/src/cache/user.js.map +0 -1
  43. package/dist/src/cache/writethrough.js +0 -159
  44. package/dist/src/cache/writethrough.js.map +0 -1
  45. package/dist/src/configs/configs.js +0 -278
  46. package/dist/src/configs/configs.js.map +0 -1
  47. package/dist/src/configs/index.js +0 -18
  48. package/dist/src/configs/index.js.map +0 -1
  49. package/dist/src/constants/db.js +0 -67
  50. package/dist/src/constants/db.js.map +0 -1
  51. package/dist/src/constants/index.js +0 -19
  52. package/dist/src/constants/index.js.map +0 -1
  53. package/dist/src/constants/misc.js +0 -54
  54. package/dist/src/constants/misc.js.map +0 -1
  55. package/dist/src/context/Context.js +0 -14
  56. package/dist/src/context/Context.js.map +0 -1
  57. package/dist/src/context/identity.js +0 -72
  58. package/dist/src/context/identity.js.map +0 -1
  59. package/dist/src/context/index.js +0 -34
  60. package/dist/src/context/index.js.map +0 -1
  61. package/dist/src/context/mainContext.js +0 -331
  62. package/dist/src/context/mainContext.js.map +0 -1
  63. package/dist/src/context/types.js +0 -3
  64. package/dist/src/context/types.js.map +0 -1
  65. package/dist/src/db/Replication.js +0 -85
  66. package/dist/src/db/Replication.js.map +0 -1
  67. package/dist/src/db/constants.js +0 -13
  68. package/dist/src/db/constants.js.map +0 -1
  69. package/dist/src/db/couch/DatabaseImpl.js +0 -248
  70. package/dist/src/db/couch/DatabaseImpl.js.map +0 -1
  71. package/dist/src/db/couch/connections.js +0 -88
  72. package/dist/src/db/couch/connections.js.map +0 -1
  73. package/dist/src/db/couch/index.js +0 -27
  74. package/dist/src/db/couch/index.js.map +0 -1
  75. package/dist/src/db/couch/pouchDB.js +0 -108
  76. package/dist/src/db/couch/pouchDB.js.map +0 -1
  77. package/dist/src/db/couch/pouchDump.js +0 -2
  78. package/dist/src/db/couch/pouchDump.js.map +0 -1
  79. package/dist/src/db/couch/utils.js +0 -55
  80. package/dist/src/db/couch/utils.js.map +0 -1
  81. package/dist/src/db/db.js +0 -59
  82. package/dist/src/db/db.js.map +0 -1
  83. package/dist/src/db/errors.js +0 -22
  84. package/dist/src/db/errors.js.map +0 -1
  85. package/dist/src/db/index.js +0 -48
  86. package/dist/src/db/index.js.map +0 -1
  87. package/dist/src/db/lucene.js +0 -650
  88. package/dist/src/db/lucene.js.map +0 -1
  89. package/dist/src/db/searchIndexes/index.js +0 -18
  90. package/dist/src/db/searchIndexes/index.js.map +0 -1
  91. package/dist/src/db/searchIndexes/searchIndexes.js +0 -77
  92. package/dist/src/db/searchIndexes/searchIndexes.js.map +0 -1
  93. package/dist/src/db/utils.js +0 -213
  94. package/dist/src/db/utils.js.map +0 -1
  95. package/dist/src/db/views.js +0 -219
  96. package/dist/src/db/views.js.map +0 -1
  97. package/dist/src/docIds/conversions.js +0 -62
  98. package/dist/src/docIds/conversions.js.map +0 -1
  99. package/dist/src/docIds/ids.js +0 -112
  100. package/dist/src/docIds/ids.js.map +0 -1
  101. package/dist/src/docIds/index.js +0 -19
  102. package/dist/src/docIds/index.js.map +0 -1
  103. package/dist/src/docIds/newid.js +0 -9
  104. package/dist/src/docIds/newid.js.map +0 -1
  105. package/dist/src/docIds/params.js +0 -138
  106. package/dist/src/docIds/params.js.map +0 -1
  107. package/dist/src/docUpdates/index.js +0 -36
  108. package/dist/src/docUpdates/index.js.map +0 -1
  109. package/dist/src/environment.js +0 -110
  110. package/dist/src/environment.js.map +0 -1
  111. package/dist/src/errors/errors.js +0 -97
  112. package/dist/src/errors/errors.js.map +0 -1
  113. package/dist/src/errors/index.js +0 -18
  114. package/dist/src/errors/index.js.map +0 -1
  115. package/dist/src/events/analytics.js +0 -42
  116. package/dist/src/events/analytics.js.map +0 -1
  117. package/dist/src/events/asyncEvents/index.js +0 -19
  118. package/dist/src/events/asyncEvents/index.js.map +0 -1
  119. package/dist/src/events/asyncEvents/publisher.js +0 -27
  120. package/dist/src/events/asyncEvents/publisher.js.map +0 -1
  121. package/dist/src/events/asyncEvents/queue.js +0 -26
  122. package/dist/src/events/asyncEvents/queue.js.map +0 -1
  123. package/dist/src/events/backfill.js +0 -179
  124. package/dist/src/events/backfill.js.map +0 -1
  125. package/dist/src/events/documentId.js +0 -28
  126. package/dist/src/events/documentId.js.map +0 -1
  127. package/dist/src/events/events.js +0 -73
  128. package/dist/src/events/events.js.map +0 -1
  129. package/dist/src/events/identification.js +0 -300
  130. package/dist/src/events/identification.js.map +0 -1
  131. package/dist/src/events/index.js +0 -47
  132. package/dist/src/events/index.js.map +0 -1
  133. package/dist/src/events/processors/AnalyticsProcessor.js +0 -93
  134. package/dist/src/events/processors/AnalyticsProcessor.js.map +0 -1
  135. package/dist/src/events/processors/AuditLogsProcessor.js +0 -86
  136. package/dist/src/events/processors/AuditLogsProcessor.js.map +0 -1
  137. package/dist/src/events/processors/LoggingProcessor.js +0 -47
  138. package/dist/src/events/processors/LoggingProcessor.js.map +0 -1
  139. package/dist/src/events/processors/Processors.js +0 -52
  140. package/dist/src/events/processors/Processors.js.map +0 -1
  141. package/dist/src/events/processors/async/DocumentUpdateProcessor.js +0 -44
  142. package/dist/src/events/processors/async/DocumentUpdateProcessor.js.map +0 -1
  143. package/dist/src/events/processors/index.js +0 -23
  144. package/dist/src/events/processors/index.js.map +0 -1
  145. package/dist/src/events/processors/posthog/PosthogProcessor.js +0 -139
  146. package/dist/src/events/processors/posthog/PosthogProcessor.js.map +0 -1
  147. package/dist/src/events/processors/posthog/index.js +0 -8
  148. package/dist/src/events/processors/posthog/index.js.map +0 -1
  149. package/dist/src/events/processors/posthog/rateLimiting.js +0 -119
  150. package/dist/src/events/processors/posthog/rateLimiting.js.map +0 -1
  151. package/dist/src/events/processors/types.js +0 -3
  152. package/dist/src/events/processors/types.js.map +0 -1
  153. package/dist/src/events/publishers/account.js +0 -43
  154. package/dist/src/events/publishers/account.js.map +0 -1
  155. package/dist/src/events/publishers/app.js +0 -153
  156. package/dist/src/events/publishers/app.js.map +0 -1
  157. package/dist/src/events/publishers/auditLog.js +0 -34
  158. package/dist/src/events/publishers/auditLog.js.map +0 -1
  159. package/dist/src/events/publishers/auth.js +0 -80
  160. package/dist/src/events/publishers/auth.js.map +0 -1
  161. package/dist/src/events/publishers/automation.js +0 -117
  162. package/dist/src/events/publishers/automation.js.map +0 -1
  163. package/dist/src/events/publishers/backfill.js +0 -85
  164. package/dist/src/events/publishers/backfill.js.map +0 -1
  165. package/dist/src/events/publishers/backup.js +0 -41
  166. package/dist/src/events/publishers/backup.js.map +0 -1
  167. package/dist/src/events/publishers/datasource.js +0 -54
  168. package/dist/src/events/publishers/datasource.js.map +0 -1
  169. package/dist/src/events/publishers/email.js +0 -30
  170. package/dist/src/events/publishers/email.js.map +0 -1
  171. package/dist/src/events/publishers/environmentVariable.js +0 -44
  172. package/dist/src/events/publishers/environmentVariable.js.map +0 -1
  173. package/dist/src/events/publishers/group.js +0 -107
  174. package/dist/src/events/publishers/group.js.map +0 -1
  175. package/dist/src/events/publishers/index.js +0 -55
  176. package/dist/src/events/publishers/index.js.map +0 -1
  177. package/dist/src/events/publishers/installation.js +0 -52
  178. package/dist/src/events/publishers/installation.js.map +0 -1
  179. package/dist/src/events/publishers/layout.js +0 -34
  180. package/dist/src/events/publishers/layout.js.map +0 -1
  181. package/dist/src/events/publishers/license.js +0 -77
  182. package/dist/src/events/publishers/license.js.map +0 -1
  183. package/dist/src/events/publishers/org.js +0 -52
  184. package/dist/src/events/publishers/org.js.map +0 -1
  185. package/dist/src/events/publishers/plugin.js +0 -55
  186. package/dist/src/events/publishers/plugin.js.map +0 -1
  187. package/dist/src/events/publishers/query.js +0 -74
  188. package/dist/src/events/publishers/query.js.map +0 -1
  189. package/dist/src/events/publishers/role.js +0 -69
  190. package/dist/src/events/publishers/role.js.map +0 -1
  191. package/dist/src/events/publishers/rows.js +0 -32
  192. package/dist/src/events/publishers/rows.js.map +0 -1
  193. package/dist/src/events/publishers/screen.js +0 -46
  194. package/dist/src/events/publishers/screen.js.map +0 -1
  195. package/dist/src/events/publishers/serve.js +0 -47
  196. package/dist/src/events/publishers/serve.js.map +0 -1
  197. package/dist/src/events/publishers/table.js +0 -77
  198. package/dist/src/events/publishers/table.js.map +0 -1
  199. package/dist/src/events/publishers/user.js +0 -202
  200. package/dist/src/events/publishers/user.js.map +0 -1
  201. package/dist/src/events/publishers/view.js +0 -111
  202. package/dist/src/events/publishers/view.js.map +0 -1
  203. package/dist/src/featureFlags/index.js +0 -96
  204. package/dist/src/featureFlags/index.js.map +0 -1
  205. package/dist/src/helpers.js +0 -14
  206. package/dist/src/helpers.js.map +0 -1
  207. package/dist/src/index.js +0 -82
  208. package/dist/src/index.js.map +0 -1
  209. package/dist/src/installation.js +0 -138
  210. package/dist/src/installation.js.map +0 -1
  211. package/dist/src/logging/alerts.js +0 -24
  212. package/dist/src/logging/alerts.js.map +0 -1
  213. package/dist/src/logging/correlation/correlation.js +0 -17
  214. package/dist/src/logging/correlation/correlation.js.map +0 -1
  215. package/dist/src/logging/correlation/index.js +0 -18
  216. package/dist/src/logging/correlation/index.js.map +0 -1
  217. package/dist/src/logging/correlation/middleware.js +0 -17
  218. package/dist/src/logging/correlation/middleware.js.map +0 -1
  219. package/dist/src/logging/index.js +0 -35
  220. package/dist/src/logging/index.js.map +0 -1
  221. package/dist/src/logging/pino/logger.js +0 -218
  222. package/dist/src/logging/pino/logger.js.map +0 -1
  223. package/dist/src/logging/pino/middleware.js +0 -47
  224. package/dist/src/logging/pino/middleware.js.map +0 -1
  225. package/dist/src/logging/system.js +0 -101
  226. package/dist/src/logging/system.js.map +0 -1
  227. package/dist/src/middleware/adminOnly.js +0 -19
  228. package/dist/src/middleware/adminOnly.js.map +0 -1
  229. package/dist/src/middleware/auditLog.js +0 -16
  230. package/dist/src/middleware/auditLog.js.map +0 -1
  231. package/dist/src/middleware/authenticated.js +0 -204
  232. package/dist/src/middleware/authenticated.js.map +0 -1
  233. package/dist/src/middleware/builderOnly.js +0 -33
  234. package/dist/src/middleware/builderOnly.js.map +0 -1
  235. package/dist/src/middleware/builderOrAdmin.js +0 -33
  236. package/dist/src/middleware/builderOrAdmin.js.map +0 -1
  237. package/dist/src/middleware/csrf.js +0 -81
  238. package/dist/src/middleware/csrf.js.map +0 -1
  239. package/dist/src/middleware/errorHandling.js +0 -64
  240. package/dist/src/middleware/errorHandling.js.map +0 -1
  241. package/dist/src/middleware/index.js +0 -65
  242. package/dist/src/middleware/index.js.map +0 -1
  243. package/dist/src/middleware/internalApi.js +0 -30
  244. package/dist/src/middleware/internalApi.js.map +0 -1
  245. package/dist/src/middleware/joi-validator.js +0 -47
  246. package/dist/src/middleware/joi-validator.js.map +0 -1
  247. package/dist/src/middleware/matchers.js +0 -43
  248. package/dist/src/middleware/matchers.js.map +0 -1
  249. package/dist/src/middleware/passport/datasource/google.js +0 -95
  250. package/dist/src/middleware/passport/datasource/google.js.map +0 -1
  251. package/dist/src/middleware/passport/local.js +0 -81
  252. package/dist/src/middleware/passport/local.js.map +0 -1
  253. package/dist/src/middleware/passport/sso/google.js +0 -90
  254. package/dist/src/middleware/passport/sso/google.js.map +0 -1
  255. package/dist/src/middleware/passport/sso/oidc.js +0 -151
  256. package/dist/src/middleware/passport/sso/oidc.js.map +0 -1
  257. package/dist/src/middleware/passport/sso/sso.js +0 -165
  258. package/dist/src/middleware/passport/sso/sso.js.map +0 -1
  259. package/dist/src/middleware/passport/utils.js +0 -66
  260. package/dist/src/middleware/passport/utils.js.map +0 -1
  261. package/dist/src/middleware/querystringToBody.js +0 -29
  262. package/dist/src/middleware/querystringToBody.js.map +0 -1
  263. package/dist/src/middleware/tenancy.js +0 -37
  264. package/dist/src/middleware/tenancy.js.map +0 -1
  265. package/dist/src/migrations/definitions.js +0 -39
  266. package/dist/src/migrations/definitions.js.map +0 -1
  267. package/dist/src/migrations/index.js +0 -19
  268. package/dist/src/migrations/index.js.map +0 -1
  269. package/dist/src/migrations/migrations.js +0 -198
  270. package/dist/src/migrations/migrations.js.map +0 -1
  271. package/dist/src/objectStore/buckets/app.js +0 -73
  272. package/dist/src/objectStore/buckets/app.js.map +0 -1
  273. package/dist/src/objectStore/buckets/global.js +0 -58
  274. package/dist/src/objectStore/buckets/global.js.map +0 -1
  275. package/dist/src/objectStore/buckets/index.js +0 -20
  276. package/dist/src/objectStore/buckets/index.js.map +0 -1
  277. package/dist/src/objectStore/buckets/plugins.js +0 -95
  278. package/dist/src/objectStore/buckets/plugins.js.map +0 -1
  279. package/dist/src/objectStore/cloudfront.js +0 -40
  280. package/dist/src/objectStore/cloudfront.js.map +0 -1
  281. package/dist/src/objectStore/index.js +0 -20
  282. package/dist/src/objectStore/index.js.map +0 -1
  283. package/dist/src/objectStore/objectStore.js +0 -382
  284. package/dist/src/objectStore/objectStore.js.map +0 -1
  285. package/dist/src/objectStore/utils.js +0 -32
  286. package/dist/src/objectStore/utils.js.map +0 -1
  287. package/dist/src/platform/index.js +0 -33
  288. package/dist/src/platform/index.js.map +0 -1
  289. package/dist/src/platform/platformDb.js +0 -10
  290. package/dist/src/platform/platformDb.js.map +0 -1
  291. package/dist/src/platform/tenants.js +0 -139
  292. package/dist/src/platform/tenants.js.map +0 -1
  293. package/dist/src/platform/users.js +0 -96
  294. package/dist/src/platform/users.js.map +0 -1
  295. package/dist/src/plugin/index.js +0 -18
  296. package/dist/src/plugin/index.js.map +0 -1
  297. package/dist/src/plugin/utils.js +0 -145
  298. package/dist/src/plugin/utils.js.map +0 -1
  299. package/dist/src/queue/constants.js +0 -11
  300. package/dist/src/queue/constants.js.map +0 -1
  301. package/dist/src/queue/inMemoryQueue.js +0 -145
  302. package/dist/src/queue/inMemoryQueue.js.map +0 -1
  303. package/dist/src/queue/index.js +0 -19
  304. package/dist/src/queue/index.js.map +0 -1
  305. package/dist/src/queue/listeners.js +0 -186
  306. package/dist/src/queue/listeners.js.map +0 -1
  307. package/dist/src/queue/queue.js +0 -92
  308. package/dist/src/queue/queue.js.map +0 -1
  309. package/dist/src/redis/index.js +0 -37
  310. package/dist/src/redis/index.js.map +0 -1
  311. package/dist/src/redis/init.js +0 -138
  312. package/dist/src/redis/init.js.map +0 -1
  313. package/dist/src/redis/redis.js +0 -335
  314. package/dist/src/redis/redis.js.map +0 -1
  315. package/dist/src/redis/redlockImpl.js +0 -162
  316. package/dist/src/redis/redlockImpl.js.map +0 -1
  317. package/dist/src/redis/utils.js +0 -123
  318. package/dist/src/redis/utils.js.map +0 -1
  319. package/dist/src/security/encryption.js +0 -163
  320. package/dist/src/security/encryption.js.map +0 -1
  321. package/dist/src/security/permissions.js +0 -151
  322. package/dist/src/security/permissions.js.map +0 -1
  323. package/dist/src/security/roles.js +0 -388
  324. package/dist/src/security/roles.js.map +0 -1
  325. package/dist/src/security/sessions.js +0 -121
  326. package/dist/src/security/sessions.js.map +0 -1
  327. package/dist/src/tenancy/db.js +0 -10
  328. package/dist/src/tenancy/db.js.map +0 -1
  329. package/dist/src/tenancy/index.js +0 -19
  330. package/dist/src/tenancy/index.js.map +0 -1
  331. package/dist/src/tenancy/tenancy.js +0 -116
  332. package/dist/src/tenancy/tenancy.js.map +0 -1
  333. package/dist/src/timers/index.js +0 -18
  334. package/dist/src/timers/index.js.map +0 -1
  335. package/dist/src/timers/timers.js +0 -26
  336. package/dist/src/timers/timers.js.map +0 -1
  337. package/dist/src/users/db.js +0 -407
  338. package/dist/src/users/db.js.map +0 -1
  339. package/dist/src/users/events.js +0 -169
  340. package/dist/src/users/events.js.map +0 -1
  341. package/dist/src/users/index.js +0 -23
  342. package/dist/src/users/index.js.map +0 -1
  343. package/dist/src/users/lookup.js +0 -112
  344. package/dist/src/users/lookup.js.map +0 -1
  345. package/dist/src/users/users.js +0 -261
  346. package/dist/src/users/users.js.map +0 -1
  347. package/dist/src/users/utils.js +0 -92
  348. package/dist/src/users/utils.js.map +0 -1
  349. package/dist/src/utils/hashing.js +0 -47
  350. package/dist/src/utils/hashing.js.map +0 -1
  351. package/dist/src/utils/index.js +0 -20
  352. package/dist/src/utils/index.js.map +0 -1
  353. package/dist/src/utils/stringUtils.js +0 -9
  354. package/dist/src/utils/stringUtils.js.map +0 -1
  355. package/dist/src/utils/utils.js +0 -247
  356. package/dist/src/utils/utils.js.map +0 -1
  357. package/dist/tests/core/logging.js +0 -33
  358. package/dist/tests/core/logging.js.map +0 -1
  359. package/dist/tests/core/utilities/index.js +0 -37
  360. package/dist/tests/core/utilities/index.js.map +0 -1
  361. package/dist/tests/core/utilities/jestUtils.js +0 -21
  362. package/dist/tests/core/utilities/jestUtils.js.map +0 -1
  363. package/dist/tests/core/utilities/mocks/alerts.js +0 -30
  364. package/dist/tests/core/utilities/mocks/alerts.js.map +0 -1
  365. package/dist/tests/core/utilities/mocks/date.js +0 -6
  366. package/dist/tests/core/utilities/mocks/date.js.map +0 -1
  367. package/dist/tests/core/utilities/mocks/events.js +0 -143
  368. package/dist/tests/core/utilities/mocks/events.js.map +0 -1
  369. package/dist/tests/core/utilities/mocks/fetch.js +0 -15
  370. package/dist/tests/core/utilities/mocks/fetch.js.map +0 -1
  371. package/dist/tests/core/utilities/mocks/index.js +0 -43
  372. package/dist/tests/core/utilities/mocks/index.js.map +0 -1
  373. package/dist/tests/core/utilities/mocks/licenses.js +0 -97
  374. package/dist/tests/core/utilities/mocks/licenses.js.map +0 -1
  375. package/dist/tests/core/utilities/mocks/posthog.js +0 -9
  376. package/dist/tests/core/utilities/mocks/posthog.js.map +0 -1
  377. package/dist/tests/core/utilities/structures/Chance.js +0 -21
  378. package/dist/tests/core/utilities/structures/Chance.js.map +0 -1
  379. package/dist/tests/core/utilities/structures/accounts.js +0 -78
  380. package/dist/tests/core/utilities/structures/accounts.js.map +0 -1
  381. package/dist/tests/core/utilities/structures/apps.js +0 -24
  382. package/dist/tests/core/utilities/structures/apps.js.map +0 -1
  383. package/dist/tests/core/utilities/structures/common.js +0 -11
  384. package/dist/tests/core/utilities/structures/common.js.map +0 -1
  385. package/dist/tests/core/utilities/structures/db.js +0 -16
  386. package/dist/tests/core/utilities/structures/db.js.map +0 -1
  387. package/dist/tests/core/utilities/structures/documents/index.js +0 -18
  388. package/dist/tests/core/utilities/structures/documents/index.js.map +0 -1
  389. package/dist/tests/core/utilities/structures/documents/platform/index.js +0 -28
  390. package/dist/tests/core/utilities/structures/documents/platform/index.js.map +0 -1
  391. package/dist/tests/core/utilities/structures/documents/platform/installation.js +0 -38
  392. package/dist/tests/core/utilities/structures/documents/platform/installation.js.map +0 -1
  393. package/dist/tests/core/utilities/structures/generator.js +0 -9
  394. package/dist/tests/core/utilities/structures/generator.js.map +0 -1
  395. package/dist/tests/core/utilities/structures/index.js +0 -46
  396. package/dist/tests/core/utilities/structures/index.js.map +0 -1
  397. package/dist/tests/core/utilities/structures/koa.js +0 -10
  398. package/dist/tests/core/utilities/structures/koa.js.map +0 -1
  399. package/dist/tests/core/utilities/structures/licenses.js +0 -140
  400. package/dist/tests/core/utilities/structures/licenses.js.map +0 -1
  401. package/dist/tests/core/utilities/structures/plugins.js +0 -23
  402. package/dist/tests/core/utilities/structures/plugins.js.map +0 -1
  403. package/dist/tests/core/utilities/structures/quotas.js +0 -71
  404. package/dist/tests/core/utilities/structures/quotas.js.map +0 -1
  405. package/dist/tests/core/utilities/structures/scim.js +0 -63
  406. package/dist/tests/core/utilities/structures/scim.js.map +0 -1
  407. package/dist/tests/core/utilities/structures/shared.js +0 -14
  408. package/dist/tests/core/utilities/structures/shared.js.map +0 -1
  409. package/dist/tests/core/utilities/structures/sso.js +0 -132
  410. package/dist/tests/core/utilities/structures/sso.js.map +0 -1
  411. package/dist/tests/core/utilities/structures/tenants.js +0 -9
  412. package/dist/tests/core/utilities/structures/tenants.js.map +0 -1
  413. package/dist/tests/core/utilities/structures/userGroups.js +0 -13
  414. package/dist/tests/core/utilities/structures/userGroups.js.map +0 -1
  415. package/dist/tests/core/utilities/structures/users.js +0 -48
  416. package/dist/tests/core/utilities/structures/users.js.map +0 -1
  417. package/dist/tests/core/utilities/testContainerUtils.js +0 -84
  418. package/dist/tests/core/utilities/testContainerUtils.js.map +0 -1
  419. package/dist/tests/core/utilities/utils/index.js +0 -28
  420. package/dist/tests/core/utilities/utils/index.js.map +0 -1
  421. package/dist/tests/core/utilities/utils/time.js +0 -8
  422. package/dist/tests/core/utilities/utils/time.js.map +0 -1
  423. package/dist/tests/extra/DBTestConfiguration.js +0 -55
  424. package/dist/tests/extra/DBTestConfiguration.js.map +0 -1
  425. package/dist/tests/extra/index.js +0 -33
  426. package/dist/tests/extra/index.js.map +0 -1
  427. package/dist/tests/extra/testEnv.js +0 -127
  428. package/dist/tests/extra/testEnv.js.map +0 -1
  429. package/dist/tests/index.js +0 -18
  430. package/dist/tests/index.js.map +0 -1
  431. package/dist/tests/jestEnv.js +0 -8
  432. package/dist/tests/jestEnv.js.map +0 -1
  433. package/dist/tests/jestSetup.js +0 -28
  434. package/dist/tests/jestSetup.js.map +0 -1
  435. package/plugins.ts +0 -1
@@ -1,116 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getTenantIDFromCtx = exports.isUserInAppTenant = exports.addTenantToUrl = void 0;
4
- const context_1 = require("../context");
5
- const types_1 = require("@budibase/types");
6
- const constants_1 = require("../constants");
7
- function addTenantToUrl(url) {
8
- const tenantId = (0, context_1.getTenantId)();
9
- if ((0, context_1.isMultiTenant)()) {
10
- const char = url.indexOf("?") === -1 ? "?" : "&";
11
- url += `${char}tenantId=${tenantId}`;
12
- }
13
- return url;
14
- }
15
- exports.addTenantToUrl = addTenantToUrl;
16
- const isUserInAppTenant = (appId, user) => {
17
- let userTenantId;
18
- if (user) {
19
- userTenantId = user.tenantId || context_1.DEFAULT_TENANT_ID;
20
- }
21
- else {
22
- userTenantId = (0, context_1.getTenantId)();
23
- }
24
- const tenantId = (0, context_1.getTenantIDFromAppID)(appId) || context_1.DEFAULT_TENANT_ID;
25
- return tenantId === userTenantId;
26
- };
27
- exports.isUserInAppTenant = isUserInAppTenant;
28
- const ALL_STRATEGIES = Object.values(types_1.TenantResolutionStrategy);
29
- const getTenantIDFromCtx = (ctx, opts) => {
30
- var _a;
31
- // exit early if not multi-tenant
32
- if (!(0, context_1.isMultiTenant)()) {
33
- return context_1.DEFAULT_TENANT_ID;
34
- }
35
- // opt defaults
36
- if (opts.allowNoTenant === undefined) {
37
- opts.allowNoTenant = false;
38
- }
39
- if (!opts.includeStrategies) {
40
- opts.includeStrategies = ALL_STRATEGIES;
41
- }
42
- if (!opts.excludeStrategies) {
43
- opts.excludeStrategies = [];
44
- }
45
- const isAllowed = (strategy) => {
46
- var _a, _b;
47
- // excluded takes precedence
48
- if ((_a = opts.excludeStrategies) === null || _a === void 0 ? void 0 : _a.includes(strategy)) {
49
- return false;
50
- }
51
- if ((_b = opts.includeStrategies) === null || _b === void 0 ? void 0 : _b.includes(strategy)) {
52
- return true;
53
- }
54
- };
55
- // always use user first
56
- if (isAllowed(types_1.TenantResolutionStrategy.USER)) {
57
- const userTenantId = (_a = ctx.user) === null || _a === void 0 ? void 0 : _a.tenantId;
58
- if (userTenantId) {
59
- return userTenantId;
60
- }
61
- }
62
- // header
63
- if (isAllowed(types_1.TenantResolutionStrategy.HEADER)) {
64
- const headerTenantId = ctx.request.headers[constants_1.Header.TENANT_ID];
65
- if (headerTenantId) {
66
- return headerTenantId;
67
- }
68
- }
69
- // query param
70
- if (isAllowed(types_1.TenantResolutionStrategy.QUERY)) {
71
- const queryTenantId = ctx.request.query.tenantId;
72
- if (queryTenantId) {
73
- return queryTenantId;
74
- }
75
- }
76
- // subdomain
77
- if (isAllowed(types_1.TenantResolutionStrategy.SUBDOMAIN)) {
78
- // e.g. budibase.app or local.com:10000
79
- const platformHost = new URL((0, context_1.getPlatformURL)()).host.split(":")[0];
80
- // e.g. tenant.budibase.app or tenant.local.com
81
- const requestHost = ctx.host;
82
- // parse the tenant id from the difference
83
- if (requestHost.includes(platformHost)) {
84
- const tenantId = requestHost.substring(0, requestHost.indexOf(`.${platformHost}`));
85
- if (tenantId) {
86
- return tenantId;
87
- }
88
- }
89
- }
90
- // path
91
- if (isAllowed(types_1.TenantResolutionStrategy.PATH)) {
92
- // params - have to parse manually due to koa-router not run yet
93
- const match = ctx.matched.find((m) => !!m.paramNames.find((p) => p.name === "tenantId"));
94
- // get the raw path url - without any query params
95
- const ctxUrl = ctx.originalUrl;
96
- let url;
97
- if (ctxUrl.includes("?")) {
98
- url = ctxUrl.split("?")[0];
99
- }
100
- else {
101
- url = ctxUrl;
102
- }
103
- if (match) {
104
- const params = match.params(url, match.captures(url), {});
105
- if (params.tenantId) {
106
- return params.tenantId;
107
- }
108
- }
109
- }
110
- if (!opts.allowNoTenant) {
111
- ctx.throw(403, "Tenant id not set");
112
- }
113
- return null;
114
- };
115
- exports.getTenantIDFromCtx = getTenantIDFromCtx;
116
- //# sourceMappingURL=tenancy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tenancy.js","sourceRoot":"","sources":["../../../src/tenancy/tenancy.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./timers"), exports);
18
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/timers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAwB"}
@@ -1,26 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.cleanup = exports.clear = exports.set = void 0;
4
- let intervals = [];
5
- function set(callback, period) {
6
- const interval = setInterval(callback, period);
7
- intervals.push(interval);
8
- return interval;
9
- }
10
- exports.set = set;
11
- function clear(interval) {
12
- const idx = intervals.indexOf(interval);
13
- if (idx !== -1) {
14
- intervals.splice(idx, 1);
15
- }
16
- clearInterval(interval);
17
- }
18
- exports.clear = clear;
19
- function cleanup() {
20
- for (let interval of intervals) {
21
- clearInterval(interval);
22
- }
23
- intervals = [];
24
- }
25
- exports.cleanup = cleanup;
26
- //# sourceMappingURL=timers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"timers.js","sourceRoot":"","sources":["../../../src/timers/timers.ts"],"names":[],"mappings":";;;AAAA,IAAI,SAAS,GAAqB,EAAE,CAAA;AAEpC,SAAgB,GAAG,CAAC,QAAmB,EAAE,MAAc;IACrD,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IAC9C,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACxB,OAAO,QAAQ,CAAA;AACjB,CAAC;AAJD,kBAIC;AAED,SAAgB,KAAK,CAAC,QAAwB;IAC5C,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IACvC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE;QACd,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;KACzB;IACD,aAAa,CAAC,QAAQ,CAAC,CAAA;AACzB,CAAC;AAND,sBAMC;AAED,SAAgB,OAAO;IACrB,KAAK,IAAI,QAAQ,IAAI,SAAS,EAAE;QAC9B,aAAa,CAAC,QAAQ,CAAC,CAAA;KACxB;IACD,SAAS,GAAG,EAAE,CAAA;AAChB,CAAC;AALD,0BAKC"}
@@ -1,407 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
- return new (P || (P = Promise))(function (resolve, reject) {
28
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
- step((generator = generator.apply(thisArg, _arguments || [])).next());
32
- });
33
- };
34
- var __importDefault = (this && this.__importDefault) || function (mod) {
35
- return (mod && mod.__esModule) ? mod : { "default": mod };
36
- };
37
- Object.defineProperty(exports, "__esModule", { value: true });
38
- exports.UserDB = void 0;
39
- const environment_1 = __importDefault(require("../environment"));
40
- const eventHelpers = __importStar(require("./events"));
41
- const accounts = __importStar(require("../accounts"));
42
- const cache = __importStar(require("../cache"));
43
- const context_1 = require("../context");
44
- const dbUtils = __importStar(require("../db"));
45
- const errors_1 = require("../errors");
46
- const platform = __importStar(require("../platform"));
47
- const sessions = __importStar(require("../security/sessions"));
48
- const usersCore = __importStar(require("./users"));
49
- const types_1 = require("@budibase/types");
50
- const accountSdk = __importStar(require("../accounts"));
51
- const utils_1 = require("./utils");
52
- const lookup_1 = require("./lookup");
53
- const utils_2 = require("../utils");
54
- const bulkDeleteProcessing = (dbUser) => __awaiter(void 0, void 0, void 0, function* () {
55
- const userId = dbUser._id;
56
- yield platform.users.removeUser(dbUser);
57
- yield eventHelpers.handleDeleteEvents(dbUser);
58
- yield cache.user.invalidateUser(userId);
59
- yield sessions.invalidateSessions(userId, { reason: "bulk-deletion" });
60
- });
61
- class UserDB {
62
- static init(quotaFns, groupFns, featureFns) {
63
- UserDB.quotas = quotaFns;
64
- UserDB.groups = groupFns;
65
- UserDB.features = featureFns;
66
- }
67
- static isPreventPasswordActions(user, account) {
68
- return __awaiter(this, void 0, void 0, function* () {
69
- // when in maintenance mode we allow sso users with the admin role
70
- // to perform any password action - this prevents lockout
71
- if (environment_1.default.ENABLE_SSO_MAINTENANCE_MODE && (0, utils_1.isAdmin)(user)) {
72
- return false;
73
- }
74
- // SSO is enforced for all users
75
- if (yield UserDB.features.isSSOEnforced()) {
76
- return true;
77
- }
78
- // Check local sso
79
- if ((0, types_1.isSSOUser)(user)) {
80
- return true;
81
- }
82
- // Check account sso
83
- if (!account) {
84
- account = yield accountSdk.getAccountByTenantId((0, context_1.getTenantId)());
85
- }
86
- return !!(account && account.email === user.email && (0, types_1.isSSOAccount)(account));
87
- });
88
- }
89
- static buildUser(user, opts = {
90
- hashPassword: true,
91
- requirePassword: true,
92
- }, tenantId, dbUser, account) {
93
- return __awaiter(this, void 0, void 0, function* () {
94
- let { password, _id } = user;
95
- // don't require a password if the db user doesn't already have one
96
- if (dbUser && !dbUser.password) {
97
- opts.requirePassword = false;
98
- }
99
- let hashedPassword;
100
- if (password) {
101
- if (yield UserDB.isPreventPasswordActions(user, account)) {
102
- throw new errors_1.HTTPError("Password change is disabled for this user", 400);
103
- }
104
- hashedPassword = opts.hashPassword ? yield (0, utils_2.hash)(password) : password;
105
- }
106
- else if (dbUser) {
107
- hashedPassword = dbUser.password;
108
- }
109
- // passwords are never required if sso is enforced
110
- const requirePasswords = opts.requirePassword && !(yield UserDB.features.isSSOEnforced());
111
- if (!hashedPassword && requirePasswords) {
112
- throw "Password must be specified.";
113
- }
114
- _id = _id || dbUtils.generateGlobalUserID();
115
- const fullUser = Object.assign(Object.assign(Object.assign({ createdAt: Date.now() }, dbUser), user), { _id, password: hashedPassword, tenantId });
116
- // make sure the roles object is always present
117
- if (!fullUser.roles) {
118
- fullUser.roles = {};
119
- }
120
- // add the active status to a user if its not provided
121
- if (fullUser.status == null) {
122
- fullUser.status = types_1.UserStatus.ACTIVE;
123
- }
124
- return fullUser;
125
- });
126
- }
127
- static allUsers() {
128
- return __awaiter(this, void 0, void 0, function* () {
129
- const db = (0, context_1.getGlobalDB)();
130
- const response = yield db.allDocs(dbUtils.getGlobalUserParams(null, {
131
- include_docs: true,
132
- }));
133
- return response.rows.map((row) => row.doc);
134
- });
135
- }
136
- static countUsersByApp(appId) {
137
- return __awaiter(this, void 0, void 0, function* () {
138
- let response = yield usersCore.searchGlobalUsersByApp(appId, {});
139
- return {
140
- userCount: response.length,
141
- };
142
- });
143
- }
144
- static getUsersByAppAccess(appId) {
145
- return __awaiter(this, void 0, void 0, function* () {
146
- const opts = {
147
- include_docs: true,
148
- limit: 50,
149
- };
150
- let response = yield usersCore.searchGlobalUsersByAppAccess(appId, opts);
151
- return response;
152
- });
153
- }
154
- static getUserByEmail(email) {
155
- return __awaiter(this, void 0, void 0, function* () {
156
- return usersCore.getGlobalUserByEmail(email);
157
- });
158
- }
159
- /**
160
- * Gets a user by ID from the global database, based on the current tenancy.
161
- */
162
- static getUser(userId) {
163
- return __awaiter(this, void 0, void 0, function* () {
164
- const user = yield usersCore.getById(userId);
165
- if (user) {
166
- delete user.password;
167
- }
168
- return user;
169
- });
170
- }
171
- static save(user, opts = {}) {
172
- var _a, _b;
173
- return __awaiter(this, void 0, void 0, function* () {
174
- // default booleans to true
175
- if (opts.hashPassword == null) {
176
- opts.hashPassword = true;
177
- }
178
- if (opts.requirePassword == null) {
179
- opts.requirePassword = true;
180
- }
181
- const tenantId = (0, context_1.getTenantId)();
182
- const db = (0, context_1.getGlobalDB)();
183
- let { email, _id, userGroups = [], roles } = user;
184
- if (!email && !_id) {
185
- throw new Error("_id or email is required");
186
- }
187
- if (((_b = (_a = user.builder) === null || _a === void 0 ? void 0 : _a.apps) === null || _b === void 0 ? void 0 : _b.length) &&
188
- !(yield UserDB.features.isAppBuildersEnabled())) {
189
- throw new Error("Unable to update app builders, please check license");
190
- }
191
- let dbUser;
192
- if (_id) {
193
- // try to get existing user from db
194
- try {
195
- dbUser = (yield db.get(_id));
196
- if (email && dbUser.email !== email) {
197
- throw "Email address cannot be changed";
198
- }
199
- email = dbUser.email;
200
- }
201
- catch (e) {
202
- if (e.status === 404) {
203
- // do nothing, save this new user with the id specified - required for SSO auth
204
- }
205
- else {
206
- throw e;
207
- }
208
- }
209
- }
210
- if (!dbUser && email) {
211
- // no id was specified - load from email instead
212
- dbUser = yield usersCore.getGlobalUserByEmail(email);
213
- if (dbUser && dbUser._id !== _id) {
214
- throw new errors_1.EmailUnavailableError(email);
215
- }
216
- }
217
- const change = dbUser ? 0 : 1; // no change if there is existing user
218
- return UserDB.quotas.addUsers(change, () => __awaiter(this, void 0, void 0, function* () {
219
- yield (0, utils_1.validateUniqueUser)(email, tenantId);
220
- let builtUser = yield UserDB.buildUser(user, opts, tenantId, dbUser);
221
- // don't allow a user to update its own roles/perms
222
- if (opts.currentUserId && opts.currentUserId === (dbUser === null || dbUser === void 0 ? void 0 : dbUser._id)) {
223
- builtUser = usersCore.cleanseUserObject(builtUser, dbUser);
224
- }
225
- if (!dbUser && (roles === null || roles === void 0 ? void 0 : roles.length)) {
226
- builtUser.roles = Object.assign({}, roles);
227
- }
228
- // make sure we set the _id field for a new user
229
- // Also if this is a new user, associate groups with them
230
- let groupPromises = [];
231
- if (!_id) {
232
- _id = builtUser._id;
233
- if (userGroups.length > 0) {
234
- for (let groupId of userGroups) {
235
- groupPromises.push(UserDB.groups.addUsers(groupId, [_id]));
236
- }
237
- }
238
- }
239
- try {
240
- // save the user to db
241
- let response = yield db.put(builtUser);
242
- builtUser._rev = response.rev;
243
- yield eventHelpers.handleSaveEvents(builtUser, dbUser);
244
- yield platform.users.addUser(tenantId, builtUser._id, builtUser.email);
245
- yield cache.user.invalidateUser(response.id);
246
- yield Promise.all(groupPromises);
247
- // finally returned the saved user from the db
248
- return db.get(builtUser._id);
249
- }
250
- catch (err) {
251
- if (err.status === 409) {
252
- throw "User exists already";
253
- }
254
- else {
255
- throw err;
256
- }
257
- }
258
- }));
259
- });
260
- }
261
- static bulkCreate(newUsersRequested, groups) {
262
- return __awaiter(this, void 0, void 0, function* () {
263
- const tenantId = (0, context_1.getTenantId)();
264
- let usersToSave = [];
265
- let newUsers = [];
266
- const emails = newUsersRequested.map((user) => user.email);
267
- const existingEmails = yield (0, lookup_1.searchExistingEmails)(emails);
268
- const unsuccessful = [];
269
- for (const newUser of newUsersRequested) {
270
- if (newUsers.find((x) => x.email.toLowerCase() === newUser.email.toLowerCase()) ||
271
- existingEmails.includes(newUser.email.toLowerCase())) {
272
- unsuccessful.push({
273
- email: newUser.email,
274
- reason: `Unavailable`,
275
- });
276
- continue;
277
- }
278
- newUser.userGroups = groups;
279
- newUsers.push(newUser);
280
- }
281
- const account = yield accountSdk.getAccountByTenantId(tenantId);
282
- return UserDB.quotas.addUsers(newUsers.length, () => __awaiter(this, void 0, void 0, function* () {
283
- // create the promises array that will be called by bulkDocs
284
- newUsers.forEach((user) => {
285
- usersToSave.push(UserDB.buildUser(user, {
286
- hashPassword: true,
287
- requirePassword: user.requirePassword,
288
- }, tenantId, undefined, // no dbUser
289
- account));
290
- });
291
- const usersToBulkSave = yield Promise.all(usersToSave);
292
- yield usersCore.bulkUpdateGlobalUsers(usersToBulkSave);
293
- // Post-processing of bulk added users, e.g. events and cache operations
294
- for (const user of usersToBulkSave) {
295
- // TODO: Refactor to bulk insert users into the info db
296
- // instead of relying on looping tenant creation
297
- yield platform.users.addUser(tenantId, user._id, user.email);
298
- yield eventHelpers.handleSaveEvents(user, undefined);
299
- }
300
- const saved = usersToBulkSave.map(user => {
301
- return {
302
- _id: user._id,
303
- email: user.email,
304
- };
305
- });
306
- // now update the groups
307
- if (Array.isArray(saved) && groups) {
308
- const groupPromises = [];
309
- const createdUserIds = saved.map(user => user._id);
310
- for (let groupId of groups) {
311
- groupPromises.push(UserDB.groups.addUsers(groupId, createdUserIds));
312
- }
313
- yield Promise.all(groupPromises);
314
- }
315
- return {
316
- successful: saved,
317
- unsuccessful,
318
- };
319
- }));
320
- });
321
- }
322
- static bulkDelete(userIds) {
323
- return __awaiter(this, void 0, void 0, function* () {
324
- const db = (0, context_1.getGlobalDB)();
325
- const response = {
326
- successful: [],
327
- unsuccessful: [],
328
- };
329
- // remove the account holder from the delete request if present
330
- const account = yield (0, utils_1.getAccountHolderFromUserIds)(userIds);
331
- if (account) {
332
- userIds = userIds.filter(u => u !== account.budibaseUserId);
333
- // mark user as unsuccessful
334
- response.unsuccessful.push({
335
- _id: account.budibaseUserId,
336
- email: account.email,
337
- reason: "Account holder cannot be deleted",
338
- });
339
- }
340
- // Get users and delete
341
- const allDocsResponse = yield db.allDocs({
342
- include_docs: true,
343
- keys: userIds,
344
- });
345
- const usersToDelete = allDocsResponse.rows.map((user) => {
346
- return user.doc;
347
- });
348
- // Delete from DB
349
- const toDelete = usersToDelete.map(user => (Object.assign(Object.assign({}, user), { _deleted: true })));
350
- const dbResponse = yield usersCore.bulkUpdateGlobalUsers(toDelete);
351
- yield UserDB.quotas.removeUsers(toDelete.length);
352
- for (let user of usersToDelete) {
353
- yield bulkDeleteProcessing(user);
354
- }
355
- // Build Response
356
- // index users by id
357
- const userIndex = {};
358
- usersToDelete.reduce((prev, current) => {
359
- prev[current._id] = current;
360
- return prev;
361
- }, userIndex);
362
- // add the successful and unsuccessful users to response
363
- dbResponse.forEach(item => {
364
- const email = userIndex[item.id].email;
365
- if (item.ok) {
366
- response.successful.push({ _id: item.id, email });
367
- }
368
- else {
369
- response.unsuccessful.push({
370
- _id: item.id,
371
- email,
372
- reason: "Database error",
373
- });
374
- }
375
- });
376
- return response;
377
- });
378
- }
379
- static destroy(id) {
380
- return __awaiter(this, void 0, void 0, function* () {
381
- const db = (0, context_1.getGlobalDB)();
382
- const dbUser = (yield db.get(id));
383
- const userId = dbUser._id;
384
- if (!environment_1.default.SELF_HOSTED && !environment_1.default.DISABLE_ACCOUNT_PORTAL) {
385
- // root account holder can't be deleted from inside budibase
386
- const email = dbUser.email;
387
- const account = yield accounts.getAccount(email);
388
- if (account) {
389
- if (dbUser.userId === (0, context_1.getIdentity)()._id) {
390
- throw new errors_1.HTTPError('Please visit "Account" to delete this user', 400);
391
- }
392
- else {
393
- throw new errors_1.HTTPError("Account holder cannot be deleted", 400);
394
- }
395
- }
396
- }
397
- yield platform.users.removeUser(dbUser);
398
- yield db.remove(userId, dbUser._rev);
399
- yield UserDB.quotas.removeUsers(1);
400
- yield eventHelpers.handleDeleteEvents(dbUser);
401
- yield cache.user.invalidateUser(userId);
402
- yield sessions.invalidateSessions(userId, { reason: "deletion" });
403
- });
404
- }
405
- }
406
- exports.UserDB = UserDB;
407
- //# sourceMappingURL=db.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"db.js","sourceRoot":"","sources":["../../../src/users/db.ts"],"names":[],"mappings":"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"}