@budibase/server 1.0.49-alpha.4 → 1.0.49-alpha.8
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.
- package/__mocks__/arangojs.ts +1 -1
- package/__mocks__/aws-sdk.ts +4 -4
- package/__mocks__/mongodb.ts +4 -5
- package/__mocks__/mssql.ts +3 -3
- package/__mocks__/node-fetch.ts +2 -1
- package/__mocks__/pg.ts +3 -5
- package/builder/assets/{index.f763d886.js → index.94a9250f.js} +1 -1
- package/builder/index.html +1 -1
- package/coverage/clover.xml +1920 -1940
- package/coverage/coverage-final.json +54 -54
- package/coverage/lcov-report/api/controllers/analytics.js.html +1 -1
- package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
- package/coverage/lcov-report/api/controllers/application.js.html +58 -37
- package/coverage/lcov-report/api/controllers/auth.js.html +11 -14
- package/coverage/lcov-report/api/controllers/automation.js.html +21 -51
- package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
- package/coverage/lcov-report/api/controllers/cloud.js.html +8 -11
- package/coverage/lcov-report/api/controllers/component.js.html +10 -13
- package/coverage/lcov-report/api/controllers/datasource.js.html +17 -23
- package/coverage/lcov-report/api/controllers/dev.js.html +6 -6
- package/coverage/lcov-report/api/controllers/index.html +52 -52
- package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
- package/coverage/lcov-report/api/controllers/layout.js.html +4 -4
- package/coverage/lcov-report/api/controllers/metadata.js.html +6 -21
- package/coverage/lcov-report/api/controllers/migrations.js.html +1 -1
- package/coverage/lcov-report/api/controllers/permission.js.html +6 -6
- package/coverage/lcov-report/api/controllers/query/index.html +10 -10
- package/coverage/lcov-report/api/controllers/query/index.js.html +21 -18
- package/coverage/lcov-report/api/controllers/query/validation.js.html +1 -1
- package/coverage/lcov-report/api/controllers/role.js.html +9 -9
- package/coverage/lcov-report/api/controllers/routing.js.html +7 -10
- package/coverage/lcov-report/api/controllers/row/external.js.html +33 -126
- package/coverage/lcov-report/api/controllers/row/index.html +28 -28
- package/coverage/lcov-report/api/controllers/row/index.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/internal.js.html +37 -82
- package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +19 -25
- package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +14 -17
- package/coverage/lcov-report/api/controllers/row/utils.js.html +15 -12
- package/coverage/lcov-report/api/controllers/screen.js.html +10 -16
- package/coverage/lcov-report/api/controllers/script.js.html +1 -1
- package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +20 -50
- package/coverage/lcov-report/api/controllers/table/external.js.html +15 -24
- package/coverage/lcov-report/api/controllers/table/index.html +37 -37
- package/coverage/lcov-report/api/controllers/table/index.js.html +7 -7
- package/coverage/lcov-report/api/controllers/table/internal.js.html +36 -45
- package/coverage/lcov-report/api/controllers/table/utils.js.html +40 -76
- package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
- package/coverage/lcov-report/api/controllers/user.js.html +26 -35
- package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
- package/coverage/lcov-report/api/controllers/view/index.html +16 -16
- package/coverage/lcov-report/api/controllers/view/index.js.html +15 -21
- package/coverage/lcov-report/api/controllers/view/utils.js.html +25 -10
- package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
- package/coverage/lcov-report/api/controllers/webhook.js.html +21 -15
- package/coverage/lcov-report/api/index.html +1 -1
- package/coverage/lcov-report/api/index.js.html +1 -1
- package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
- package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
- package/coverage/lcov-report/api/routes/application.js.html +1 -1
- package/coverage/lcov-report/api/routes/auth.js.html +1 -1
- package/coverage/lcov-report/api/routes/automation.js.html +1 -1
- package/coverage/lcov-report/api/routes/backup.js.html +1 -1
- package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
- package/coverage/lcov-report/api/routes/component.js.html +1 -1
- package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
- package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
- package/coverage/lcov-report/api/routes/dev.js.html +1 -1
- package/coverage/lcov-report/api/routes/index.html +1 -1
- package/coverage/lcov-report/api/routes/index.js.html +1 -1
- package/coverage/lcov-report/api/routes/integration.js.html +1 -1
- package/coverage/lcov-report/api/routes/layout.js.html +1 -1
- package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
- package/coverage/lcov-report/api/routes/migrations.js.html +1 -1
- package/coverage/lcov-report/api/routes/permission.js.html +1 -1
- package/coverage/lcov-report/api/routes/query.js.html +1 -1
- package/coverage/lcov-report/api/routes/role.js.html +1 -1
- package/coverage/lcov-report/api/routes/routing.js.html +1 -1
- package/coverage/lcov-report/api/routes/row.js.html +1 -1
- package/coverage/lcov-report/api/routes/screen.js.html +1 -1
- package/coverage/lcov-report/api/routes/script.js.html +1 -1
- package/coverage/lcov-report/api/routes/static.js.html +1 -1
- package/coverage/lcov-report/api/routes/table.js.html +1 -1
- package/coverage/lcov-report/api/routes/templates.js.html +1 -1
- package/coverage/lcov-report/api/routes/user.js.html +1 -1
- package/coverage/lcov-report/api/routes/view.js.html +1 -1
- package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
- package/coverage/lcov-report/automations/actions.js.html +1 -1
- package/coverage/lcov-report/automations/automationUtils.js.html +4 -7
- package/coverage/lcov-report/automations/bullboard.js.html +1 -1
- package/coverage/lcov-report/automations/index.html +18 -18
- package/coverage/lcov-report/automations/index.js.html +1 -1
- package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
- package/coverage/lcov-report/automations/steps/createRow.js.html +2 -5
- package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
- package/coverage/lcov-report/automations/steps/deleteRow.js.html +1 -1
- package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
- package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
- package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
- package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
- package/coverage/lcov-report/automations/steps/index.html +1 -1
- package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
- package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
- package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
- package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
- package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
- package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
- package/coverage/lcov-report/automations/steps/updateRow.js.html +2 -2
- package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
- package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
- package/coverage/lcov-report/automations/triggers.js.html +46 -40
- package/coverage/lcov-report/automations/utils.js.html +24 -12
- package/coverage/lcov-report/constants/index.html +1 -1
- package/coverage/lcov-report/constants/index.js.html +1 -1
- package/coverage/lcov-report/constants/layouts.js.html +1 -1
- package/coverage/lcov-report/constants/screens.js.html +1 -1
- package/coverage/lcov-report/db/client.js.html +18 -18
- package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
- package/coverage/lcov-report/db/index.html +1 -1
- package/coverage/lcov-report/db/index.js.html +3 -3
- package/coverage/lcov-report/db/linkedRows/LinkController.js.html +11 -23
- package/coverage/lcov-report/db/linkedRows/index.html +27 -27
- package/coverage/lcov-report/db/linkedRows/index.js.html +24 -66
- package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +28 -28
- package/coverage/lcov-report/db/newid.js.html +1 -1
- package/coverage/lcov-report/db/utils.js.html +5 -5
- package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
- package/coverage/lcov-report/events/index.html +1 -1
- package/coverage/lcov-report/events/index.js.html +1 -1
- package/coverage/lcov-report/events/utils.js.html +1 -1
- package/coverage/lcov-report/index.html +88 -88
- package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
- package/coverage/lcov-report/integrations/tests/index.html +1 -1
- package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
- package/coverage/lcov-report/middleware/authorized.js.html +21 -15
- package/coverage/lcov-report/middleware/builder.js.html +3 -3
- package/coverage/lcov-report/middleware/currentapp.js.html +72 -60
- package/coverage/lcov-report/middleware/index.html +28 -28
- package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
- package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
- package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
- package/coverage/lcov-report/middleware/usageQuota.js.html +29 -29
- package/coverage/lcov-report/middleware/utils.js.html +2 -2
- package/coverage/lcov-report/threads/automation.js.html +30 -24
- package/coverage/lcov-report/threads/index.html +16 -16
- package/coverage/lcov-report/threads/index.js.html +1 -1
- package/coverage/lcov-report/threads/query.js.html +17 -17
- package/coverage/lcov-report/threads/utils.js.html +1 -1
- package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
- package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
- package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
- package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
- package/coverage/lcov-report/utilities/global.js.html +44 -35
- package/coverage/lcov-report/utilities/index.html +27 -27
- package/coverage/lcov-report/utilities/index.js.html +40 -70
- package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +1 -1
- package/coverage/lcov-report/utilities/queue/index.html +1 -1
- package/coverage/lcov-report/utilities/routing/index.html +1 -1
- package/coverage/lcov-report/utilities/routing/index.js.html +7 -7
- package/coverage/lcov-report/utilities/rowProcessor/index.html +11 -11
- package/coverage/lcov-report/utilities/rowProcessor/index.js.html +16 -58
- package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
- package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
- package/coverage/lcov-report/utilities/security.js.html +1 -1
- package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
- package/coverage/lcov-report/utilities/usageQuota/index.html +1 -1
- package/coverage/lcov-report/utilities/usageQuota/index.js.html +5 -2
- package/coverage/lcov-report/utilities/usageQuota/rows.js.html +5 -2
- package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
- package/coverage/lcov-report/utilities/users.js.html +5 -5
- package/coverage/lcov-report/utilities/workerRequests.js.html +5 -5
- package/coverage/lcov.info +3192 -3209
- package/dist/api/controllers/application.js +31 -28
- package/dist/api/controllers/auth.js +4 -5
- package/dist/api/controllers/automation.js +14 -19
- package/dist/api/controllers/cloud.js +2 -3
- package/dist/api/controllers/component.js +3 -4
- package/dist/api/controllers/datasource.js +9 -10
- package/dist/api/controllers/deploy/Deployment.js +3 -6
- package/dist/api/controllers/deploy/index.js +12 -13
- package/dist/api/controllers/dev.js +5 -5
- package/dist/api/controllers/layout.js +3 -3
- package/dist/api/controllers/metadata.js +4 -4
- package/dist/api/controllers/permission.js +4 -4
- package/dist/api/controllers/query/import/index.js +4 -6
- package/dist/api/controllers/query/index.js +11 -10
- package/dist/api/controllers/role.js +5 -5
- package/dist/api/controllers/routing.js +5 -6
- package/dist/api/controllers/row/ExternalRequest.js +76 -63
- package/dist/api/controllers/row/external.js +14 -22
- package/dist/api/controllers/row/internal.js +29 -44
- package/dist/api/controllers/row/internalSearch.js +11 -13
- package/dist/api/controllers/row/staticFormula.js +11 -11
- package/dist/api/controllers/row/utils.js +7 -6
- package/dist/api/controllers/screen.js +5 -7
- package/dist/api/controllers/static/index.js +4 -4
- package/dist/api/controllers/table/bulkFormula.js +14 -15
- package/dist/api/controllers/table/external.js +7 -10
- package/dist/api/controllers/table/index.js +5 -5
- package/dist/api/controllers/table/internal.js +16 -19
- package/dist/api/controllers/table/utils.js +29 -31
- package/dist/api/controllers/user.js +16 -20
- package/dist/api/controllers/view/index.js +8 -10
- package/dist/api/controllers/view/utils.js +9 -4
- package/dist/api/controllers/webhook.js +10 -8
- package/dist/api/routes/tests/utilities/TestFunctions.js +37 -17
- package/dist/automations/automationUtils.js +2 -3
- package/dist/automations/steps/createRow.js +1 -1
- package/dist/automations/steps/updateRow.js +1 -1
- package/dist/automations/triggers.js +27 -25
- package/dist/automations/utils.js +10 -5
- package/dist/db/linkedRows/LinkController.js +3 -7
- package/dist/db/linkedRows/index.js +16 -26
- package/dist/db/linkedRows/linkUtils.js +6 -6
- package/dist/db/views/staticViews.js +9 -10
- package/dist/environment.js +2 -1
- package/dist/integrations/utils.js +3 -0
- package/dist/middleware/authorized.js +5 -3
- package/dist/middleware/builder.js +2 -2
- package/dist/middleware/currentapp.js +41 -37
- package/dist/middleware/usageQuota.js +2 -2
- package/dist/migrations/functions/usageQuotas/syncApps.js +6 -9
- package/dist/migrations/functions/usageQuotas/syncRows.js +7 -9
- package/dist/package.json +4 -4
- package/dist/tests/utilities/TestConfiguration.js +67 -44
- package/dist/threads/automation.js +13 -11
- package/dist/threads/query.js +11 -11
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utilities/fileSystem/index.js +4 -3
- package/dist/utilities/global.js +15 -12
- package/dist/utilities/index.js +7 -17
- package/dist/utilities/routing/index.js +5 -5
- package/dist/utilities/rowProcessor/index.js +9 -10
- package/dist/utilities/usageQuota/index.js +1 -0
- package/dist/utilities/usageQuota/rows.js +1 -0
- package/dist/utilities/users.js +3 -3
- package/dist/utilities/workerRequests.js +4 -4
- package/package.json +5 -5
- package/scripts/likeCypress.ts +1 -1
- package/src/api/controllers/application.js +35 -28
- package/src/api/controllers/auth.js +4 -5
- package/src/api/controllers/automation.js +13 -23
- package/src/api/controllers/cloud.js +2 -3
- package/src/api/controllers/component.js +3 -4
- package/src/api/controllers/datasource.js +9 -11
- package/src/api/controllers/deploy/Deployment.js +3 -7
- package/src/api/controllers/deploy/index.js +20 -13
- package/src/api/controllers/dev.js +5 -5
- package/src/api/controllers/layout.js +3 -3
- package/src/api/controllers/metadata.js +4 -9
- package/src/api/controllers/permission.js +4 -4
- package/src/api/controllers/query/import/index.ts +4 -6
- package/src/api/controllers/query/import/tests/index.spec.js +2 -1
- package/src/api/controllers/query/index.js +11 -10
- package/src/api/controllers/role.js +5 -5
- package/src/api/controllers/routing.js +5 -6
- package/src/api/controllers/row/ExternalRequest.ts +53 -42
- package/src/api/controllers/row/external.js +27 -58
- package/src/api/controllers/row/internal.js +29 -44
- package/src/api/controllers/row/internalSearch.js +11 -13
- package/src/api/controllers/row/staticFormula.js +10 -11
- package/src/api/controllers/row/utils.js +7 -6
- package/src/api/controllers/screen.js +5 -7
- package/src/api/controllers/static/index.js +4 -4
- package/src/api/controllers/table/bulkFormula.js +13 -23
- package/src/api/controllers/table/external.js +7 -10
- package/src/api/controllers/table/index.js +5 -5
- package/src/api/controllers/table/internal.js +18 -21
- package/src/api/controllers/table/utils.js +29 -41
- package/src/api/controllers/user.js +17 -20
- package/src/api/controllers/view/index.js +8 -10
- package/src/api/controllers/view/utils.js +9 -4
- package/src/api/controllers/webhook.js +10 -8
- package/src/api/routes/tests/automation.spec.js +1 -0
- package/src/api/routes/tests/misc.spec.js +0 -1
- package/src/api/routes/tests/routing.spec.js +21 -12
- package/src/api/routes/tests/row.spec.js +7 -4
- package/src/api/routes/tests/utilities/TestFunctions.js +39 -17
- package/src/automations/automationUtils.js +2 -3
- package/src/automations/steps/createRow.js +0 -1
- package/src/automations/steps/updateRow.js +1 -1
- package/src/automations/triggers.js +33 -31
- package/src/automations/utils.js +9 -5
- package/src/db/linkedRows/LinkController.js +3 -7
- package/src/db/linkedRows/index.js +16 -30
- package/src/db/linkedRows/linkUtils.js +6 -6
- package/src/db/tests/linkController.spec.js +0 -1
- package/src/db/tests/linkTests.spec.js +5 -6
- package/src/db/views/staticViews.js +8 -10
- package/src/environment.js +2 -1
- package/src/integrations/utils.ts +4 -1
- package/src/middleware/authorized.js +5 -3
- package/src/middleware/builder.js +2 -2
- package/src/middleware/currentapp.js +50 -46
- package/src/middleware/tests/authorized.spec.js +7 -2
- package/src/middleware/tests/currentapp.spec.js +6 -0
- package/src/middleware/usageQuota.js +2 -2
- package/src/migrations/functions/usageQuotas/syncApps.ts +4 -4
- package/src/migrations/functions/usageQuotas/syncRows.ts +5 -4
- package/src/module.d.ts +3 -0
- package/src/tests/utilities/TestConfiguration.js +69 -50
- package/src/threads/automation.js +17 -15
- package/src/threads/query.js +12 -12
- package/src/utilities/fileSystem/index.js +4 -3
- package/src/utilities/global.js +15 -12
- package/src/utilities/index.js +7 -17
- package/src/utilities/routing/index.js +5 -5
- package/src/utilities/rowProcessor/index.js +9 -23
- package/src/utilities/usageQuota/index.js +1 -0
- package/src/utilities/usageQuota/rows.js +1 -0
- package/src/utilities/users.js +3 -3
- package/src/utilities/workerRequests.js +4 -4
- package/tsconfig.json +2 -1
|
@@ -8,11 +8,11 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
|
-
const CouchDB = require("../index");
|
|
12
11
|
const Sentry = require("@sentry/node");
|
|
13
12
|
const { ViewNames, getQueryIndex } = require("../utils");
|
|
14
13
|
const { FieldTypes } = require("../../constants");
|
|
15
14
|
const { createLinkView } = require("../views/staticViews");
|
|
15
|
+
const { getAppDB } = require("@budibase/backend-core/context");
|
|
16
16
|
/**
|
|
17
17
|
* Only needed so that boolean parameters are being used for includeDocs
|
|
18
18
|
* @type {{EXCLUDE: boolean, INCLUDE: boolean}}
|
|
@@ -24,7 +24,6 @@ exports.IncludeDocs = {
|
|
|
24
24
|
exports.createLinkView = createLinkView;
|
|
25
25
|
/**
|
|
26
26
|
* Gets the linking documents, not the linked documents themselves.
|
|
27
|
-
* @param {string} args.appId The instance in which we are searching for linked rows.
|
|
28
27
|
* @param {string} args.tableId The table which we are searching for linked rows against.
|
|
29
28
|
* @param {string|null} args.fieldName The name of column/field which is being altered, only looking for
|
|
30
29
|
* linking documents that are related to it. If this is not specified then the table level will be assumed.
|
|
@@ -38,8 +37,8 @@ exports.createLinkView = createLinkView;
|
|
|
38
37
|
*/
|
|
39
38
|
exports.getLinkDocuments = function (args) {
|
|
40
39
|
return __awaiter(this, arguments, void 0, function* () {
|
|
41
|
-
const {
|
|
42
|
-
const db =
|
|
40
|
+
const { tableId, rowId, includeDocs } = args;
|
|
41
|
+
const db = getAppDB();
|
|
43
42
|
let params;
|
|
44
43
|
if (rowId != null) {
|
|
45
44
|
params = { key: [tableId, rowId] };
|
|
@@ -75,7 +74,7 @@ exports.getLinkDocuments = function (args) {
|
|
|
75
74
|
catch (err) {
|
|
76
75
|
// check if the view doesn't exist, it should for all new instances
|
|
77
76
|
if (err != null && err.name === "not_found") {
|
|
78
|
-
yield exports.createLinkView(
|
|
77
|
+
yield exports.createLinkView();
|
|
79
78
|
return exports.getLinkDocuments(arguments[0]);
|
|
80
79
|
}
|
|
81
80
|
else {
|
|
@@ -95,7 +94,8 @@ exports.getLinkedTableIDs = table => {
|
|
|
95
94
|
.filter(column => column.type === FieldTypes.LINK)
|
|
96
95
|
.map(column => column.tableId);
|
|
97
96
|
};
|
|
98
|
-
exports.getLinkedTable = (
|
|
97
|
+
exports.getLinkedTable = (id, tables) => __awaiter(void 0, void 0, void 0, function* () {
|
|
98
|
+
const db = getAppDB();
|
|
99
99
|
let linkedTable = tables.find(table => table._id === id);
|
|
100
100
|
if (linkedTable) {
|
|
101
101
|
return linkedTable;
|
|
@@ -8,7 +8,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
|
-
const
|
|
11
|
+
const { getAppDB } = require("@budibase/backend-core/context");
|
|
12
12
|
const { DocumentTypes, SEPARATOR, ViewNames, SearchIndexes, } = require("../utils");
|
|
13
13
|
const SCREEN_PREFIX = DocumentTypes.SCREEN + SEPARATOR;
|
|
14
14
|
/**************************************************
|
|
@@ -24,12 +24,11 @@ const SCREEN_PREFIX = DocumentTypes.SCREEN + SEPARATOR;
|
|
|
24
24
|
/**
|
|
25
25
|
* Creates the link view for the instance, this will overwrite the existing one, but this should only
|
|
26
26
|
* be called if it is found that the view does not exist.
|
|
27
|
-
* @param {string} appId The instance to which the view should be added.
|
|
28
27
|
* @returns {Promise<void>} The view now exists, please note that the next view of this query will actually build it,
|
|
29
28
|
* so it may be slow.
|
|
30
29
|
*/
|
|
31
|
-
exports.createLinkView = (
|
|
32
|
-
const db =
|
|
30
|
+
exports.createLinkView = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
31
|
+
const db = getAppDB();
|
|
33
32
|
const designDoc = yield db.get("_design/database");
|
|
34
33
|
const view = {
|
|
35
34
|
map: function (doc) {
|
|
@@ -56,8 +55,8 @@ exports.createLinkView = (appId) => __awaiter(void 0, void 0, void 0, function*
|
|
|
56
55
|
designDoc.views = Object.assign(Object.assign({}, designDoc.views), { [ViewNames.LINK]: view });
|
|
57
56
|
yield db.put(designDoc);
|
|
58
57
|
});
|
|
59
|
-
exports.createRoutingView = (
|
|
60
|
-
const db =
|
|
58
|
+
exports.createRoutingView = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
59
|
+
const db = getAppDB();
|
|
61
60
|
const designDoc = yield db.get("_design/database");
|
|
62
61
|
const view = {
|
|
63
62
|
// if using variables in a map function need to inject them before use
|
|
@@ -73,9 +72,9 @@ exports.createRoutingView = (appId) => __awaiter(void 0, void 0, void 0, functio
|
|
|
73
72
|
designDoc.views = Object.assign(Object.assign({}, designDoc.views), { [ViewNames.ROUTING]: view });
|
|
74
73
|
yield db.put(designDoc);
|
|
75
74
|
});
|
|
76
|
-
function searchIndex(
|
|
75
|
+
function searchIndex(indexName, fnString) {
|
|
77
76
|
return __awaiter(this, void 0, void 0, function* () {
|
|
78
|
-
const db =
|
|
77
|
+
const db = getAppDB();
|
|
79
78
|
const designDoc = yield db.get("_design/database");
|
|
80
79
|
designDoc.indexes = {
|
|
81
80
|
[indexName]: {
|
|
@@ -86,8 +85,8 @@ function searchIndex(appId, indexName, fnString) {
|
|
|
86
85
|
yield db.put(designDoc);
|
|
87
86
|
});
|
|
88
87
|
}
|
|
89
|
-
exports.createAllSearchIndex = (
|
|
90
|
-
yield searchIndex(
|
|
88
|
+
exports.createAllSearchIndex = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
89
|
+
yield searchIndex(SearchIndexes.ROWS, function (doc) {
|
|
91
90
|
function idx(input, prev) {
|
|
92
91
|
for (let key of Object.keys(input)) {
|
|
93
92
|
let idxKey = prev != null ? `${prev}.${key}` : key;
|
package/dist/environment.js
CHANGED
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
function isTest() {
|
|
3
3
|
return (process.env.NODE_ENV === "jest" ||
|
|
4
4
|
process.env.NODE_ENV === "cypress" ||
|
|
5
|
-
process.env.JEST_WORKER_ID != null
|
|
5
|
+
(process.env.JEST_WORKER_ID != null &&
|
|
6
|
+
process.env.JEST_WORKER_ID !== "null"));
|
|
6
7
|
}
|
|
7
8
|
function isDev() {
|
|
8
9
|
return (process.env.NODE_ENV !== "production" &&
|
|
@@ -52,6 +52,9 @@ function buildExternalTableId(datasourceId, tableName) {
|
|
|
52
52
|
}
|
|
53
53
|
exports.buildExternalTableId = buildExternalTableId;
|
|
54
54
|
function breakExternalTableId(tableId) {
|
|
55
|
+
if (!tableId) {
|
|
56
|
+
return {};
|
|
57
|
+
}
|
|
55
58
|
const parts = tableId.split(DOUBLE_SEPARATOR);
|
|
56
59
|
let tableName = parts.pop();
|
|
57
60
|
// if they need joined
|
|
@@ -13,6 +13,7 @@ const { PermissionTypes, doesHaveBasePermission, } = require("@budibase/backend-
|
|
|
13
13
|
const builderMiddleware = require("./builder");
|
|
14
14
|
const { isWebhookEndpoint } = require("./utils");
|
|
15
15
|
const { buildCsrfMiddleware } = require("@budibase/backend-core/auth");
|
|
16
|
+
const { getAppId } = require("@budibase/backend-core/context");
|
|
16
17
|
function hasResource(ctx) {
|
|
17
18
|
return ctx.resourceId != null;
|
|
18
19
|
}
|
|
@@ -38,7 +39,7 @@ const checkAuthorized = (ctx, resourceRoles, permType, permLevel) => __awaiter(v
|
|
|
38
39
|
const checkAuthorizedResource = (ctx, resourceRoles, permType, permLevel) => __awaiter(void 0, void 0, void 0, function* () {
|
|
39
40
|
// get the user's roles
|
|
40
41
|
const roleId = ctx.roleId || BUILTIN_ROLE_IDS.PUBLIC;
|
|
41
|
-
const userRoles = yield getUserRoleHierarchy(
|
|
42
|
+
const userRoles = yield getUserRoleHierarchy(roleId, {
|
|
42
43
|
idOnly: false,
|
|
43
44
|
});
|
|
44
45
|
const permError = "User does not have permission";
|
|
@@ -70,8 +71,9 @@ module.exports =
|
|
|
70
71
|
yield builderMiddleware(ctx, permType);
|
|
71
72
|
// get the resource roles
|
|
72
73
|
let resourceRoles = [];
|
|
73
|
-
|
|
74
|
-
|
|
74
|
+
const appId = getAppId();
|
|
75
|
+
if (appId && hasResource(ctx)) {
|
|
76
|
+
resourceRoles = yield getRequiredResourceRole(permLevel, ctx);
|
|
75
77
|
}
|
|
76
78
|
// if the resource is public, proceed
|
|
77
79
|
const isPublicResource = resourceRoles.includes(BUILTIN_ROLE_IDS.PUBLIC);
|
|
@@ -10,7 +10,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
};
|
|
11
11
|
const { APP_DEV_PREFIX } = require("../db/utils");
|
|
12
12
|
const { doesUserHaveLock, updateLock, checkDebounce, setDebounce, } = require("../utilities/redis");
|
|
13
|
-
const
|
|
13
|
+
const { getDB } = require("@budibase/backend-core/db");
|
|
14
14
|
const { DocumentTypes } = require("../db/utils");
|
|
15
15
|
const { PermissionTypes } = require("@budibase/backend-core/permissions");
|
|
16
16
|
const { app: appCache } = require("@budibase/backend-core/cache");
|
|
@@ -49,7 +49,7 @@ function updateAppUpdatedAt(ctx) {
|
|
|
49
49
|
if (ctx.method === "GET" || (yield checkDebounce(appId))) {
|
|
50
50
|
return;
|
|
51
51
|
}
|
|
52
|
-
const db =
|
|
52
|
+
const db = getDB(appId);
|
|
53
53
|
const metadata = yield db.get(DocumentTypes.APP_METADATA);
|
|
54
54
|
metadata.updatedAt = new Date().toISOString();
|
|
55
55
|
const response = yield db.put(metadata);
|
|
@@ -16,9 +16,9 @@ const { generateUserMetadataID, isDevAppID } = require("../db/utils");
|
|
|
16
16
|
const { dbExists } = require("@budibase/backend-core/db");
|
|
17
17
|
const { isUserInAppTenant } = require("@budibase/backend-core/tenancy");
|
|
18
18
|
const { getCachedSelf } = require("../utilities/global");
|
|
19
|
-
const CouchDB = require("../db");
|
|
20
19
|
const env = require("../environment");
|
|
21
20
|
const { isWebhookEndpoint } = require("./utils");
|
|
21
|
+
const { doInAppContext } = require("@budibase/backend-core/context");
|
|
22
22
|
module.exports = (ctx, next) => __awaiter(void 0, void 0, void 0, function* () {
|
|
23
23
|
// try to get the appID from the request
|
|
24
24
|
let requestAppId = getAppId(ctx);
|
|
@@ -36,7 +36,7 @@ module.exports = (ctx, next) => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
36
36
|
// check the app exists referenced in cookie
|
|
37
37
|
if (appCookie) {
|
|
38
38
|
const appId = appCookie.appId;
|
|
39
|
-
const exists = yield dbExists(
|
|
39
|
+
const exists = yield dbExists(appId);
|
|
40
40
|
if (!exists) {
|
|
41
41
|
clearCookie(ctx, Cookies.CurrentApp);
|
|
42
42
|
return next();
|
|
@@ -45,11 +45,13 @@ module.exports = (ctx, next) => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
45
45
|
requestAppId = requestAppId || appId;
|
|
46
46
|
}
|
|
47
47
|
// deny access to application preview
|
|
48
|
-
if (
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
48
|
+
if (!env.isTest()) {
|
|
49
|
+
if (isDevAppID(requestAppId) &&
|
|
50
|
+
!isWebhookEndpoint(ctx) &&
|
|
51
|
+
(!ctx.user || !ctx.user.builder || !ctx.user.builder.global)) {
|
|
52
|
+
clearCookie(ctx, Cookies.CurrentApp);
|
|
53
|
+
return ctx.redirect("/");
|
|
54
|
+
}
|
|
53
55
|
}
|
|
54
56
|
let appId, roleId = BUILTIN_ROLE_IDS.PUBLIC;
|
|
55
57
|
if (!ctx.user) {
|
|
@@ -67,34 +69,36 @@ module.exports = (ctx, next) => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
67
69
|
if (!appId) {
|
|
68
70
|
return next();
|
|
69
71
|
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
72
|
+
return doInAppContext(appId, () => __awaiter(void 0, void 0, void 0, function* () {
|
|
73
|
+
let noCookieSet = false;
|
|
74
|
+
// if the user not in the right tenant then make sure they have no permissions
|
|
75
|
+
// need to judge this only based on the request app ID,
|
|
76
|
+
if (env.MULTI_TENANCY &&
|
|
77
|
+
ctx.user &&
|
|
78
|
+
requestAppId &&
|
|
79
|
+
!isUserInAppTenant(requestAppId)) {
|
|
80
|
+
// don't error, simply remove the users rights (they are a public user)
|
|
81
|
+
delete ctx.user.builder;
|
|
82
|
+
delete ctx.user.admin;
|
|
83
|
+
delete ctx.user.roles;
|
|
84
|
+
roleId = BUILTIN_ROLE_IDS.PUBLIC;
|
|
85
|
+
noCookieSet = true;
|
|
86
|
+
}
|
|
87
|
+
ctx.appId = appId;
|
|
88
|
+
if (roleId) {
|
|
89
|
+
ctx.roleId = roleId;
|
|
90
|
+
const userId = ctx.user ? generateUserMetadataID(ctx.user._id) : null;
|
|
91
|
+
ctx.user = Object.assign(Object.assign({}, ctx.user), {
|
|
92
|
+
// override userID with metadata one
|
|
93
|
+
_id: userId, userId,
|
|
94
|
+
roleId, role: yield getRole(roleId) });
|
|
95
|
+
}
|
|
96
|
+
if ((requestAppId !== appId ||
|
|
97
|
+
appCookie == null ||
|
|
98
|
+
appCookie.appId !== requestAppId) &&
|
|
99
|
+
!noCookieSet) {
|
|
100
|
+
setCookie(ctx, { appId }, Cookies.CurrentApp);
|
|
101
|
+
}
|
|
102
|
+
return next();
|
|
103
|
+
}));
|
|
100
104
|
});
|
|
@@ -8,10 +8,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
|
-
const CouchDB = require("../db");
|
|
12
11
|
const usageQuota = require("../utilities/usageQuota");
|
|
13
12
|
const { getUniqueRows } = require("../utilities/usageQuota/rows");
|
|
14
13
|
const { isExternalTable, isRowId: isExternalRowId, } = require("../integrations/utils");
|
|
14
|
+
const { getAppDB } = require("@budibase/backend-core/context");
|
|
15
15
|
// currently only counting new writes and deletes
|
|
16
16
|
const METHOD_MAP = {
|
|
17
17
|
POST: 1,
|
|
@@ -48,7 +48,7 @@ module.exports = (ctx, next) => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
48
48
|
const usageId = ctx.request.body._id;
|
|
49
49
|
try {
|
|
50
50
|
if (ctx.appId) {
|
|
51
|
-
const db =
|
|
51
|
+
const db = getAppDB();
|
|
52
52
|
yield db.get(usageId);
|
|
53
53
|
}
|
|
54
54
|
return next();
|
|
@@ -8,22 +8,19 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
12
|
exports.run = void 0;
|
|
16
|
-
const
|
|
17
|
-
const
|
|
18
|
-
const db_1 = __importDefault(require("../../../db"));
|
|
13
|
+
const tenancy_1 = require("@budibase/backend-core/tenancy");
|
|
14
|
+
const db_1 = require("@budibase/backend-core/db");
|
|
19
15
|
const usageQuota_1 = require("../../../utilities/usageQuota");
|
|
20
16
|
const run = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
21
|
-
const db = getGlobalDB();
|
|
17
|
+
const db = tenancy_1.getGlobalDB();
|
|
22
18
|
// get app count
|
|
23
|
-
|
|
19
|
+
// @ts-ignore
|
|
20
|
+
const devApps = yield db_1.getAllApps({ dev: true });
|
|
24
21
|
const appCount = devApps ? devApps.length : 0;
|
|
25
22
|
// sync app count
|
|
26
|
-
const tenantId = getTenantId();
|
|
23
|
+
const tenantId = tenancy_1.getTenantId();
|
|
27
24
|
console.log(`[Tenant: ${tenantId}] Syncing app count: ${appCount}`);
|
|
28
25
|
const usageDoc = yield usageQuota_1.getUsageQuotaDoc(db);
|
|
29
26
|
usageDoc.usageQuota.apps = appCount;
|
|
@@ -8,25 +8,23 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
12
|
exports.run = void 0;
|
|
16
|
-
const
|
|
17
|
-
const
|
|
18
|
-
const db_1 = __importDefault(require("../../../db"));
|
|
13
|
+
const tenancy_1 = require("@budibase/backend-core/tenancy");
|
|
14
|
+
const db_1 = require("@budibase/backend-core/db");
|
|
19
15
|
const usageQuota_1 = require("../../../utilities/usageQuota");
|
|
20
16
|
const rows_1 = require("../../../utilities/usageQuota/rows");
|
|
21
17
|
const run = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
22
|
-
const db = getGlobalDB();
|
|
18
|
+
const db = tenancy_1.getGlobalDB();
|
|
23
19
|
// get all rows in all apps
|
|
24
|
-
|
|
20
|
+
// @ts-ignore
|
|
21
|
+
const allApps = yield db_1.getAllApps({ all: true });
|
|
22
|
+
// @ts-ignore
|
|
25
23
|
const appIds = allApps ? allApps.map((app) => app.appId) : [];
|
|
26
24
|
const rows = yield rows_1.getUniqueRows(appIds);
|
|
27
25
|
const rowCount = rows ? rows.length : 0;
|
|
28
26
|
// sync row count
|
|
29
|
-
const tenantId = getTenantId();
|
|
27
|
+
const tenantId = tenancy_1.getTenantId();
|
|
30
28
|
console.log(`[Tenant: ${tenantId}] Syncing row count: ${rowCount}`);
|
|
31
29
|
const usageDoc = yield usageQuota_1.getUsageQuotaDoc(db);
|
|
32
30
|
usageDoc.usageQuota.rows = rowCount;
|
package/dist/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@budibase/server",
|
|
3
3
|
"email": "hi@budibase.com",
|
|
4
|
-
"version": "1.0.49-alpha.
|
|
4
|
+
"version": "1.0.49-alpha.7",
|
|
5
5
|
"description": "Budibase Web Server",
|
|
6
6
|
"main": "src/index.ts",
|
|
7
7
|
"repository": {
|
|
@@ -70,9 +70,9 @@
|
|
|
70
70
|
"license": "GPL-3.0",
|
|
71
71
|
"dependencies": {
|
|
72
72
|
"@apidevtools/swagger-parser": "^10.0.3",
|
|
73
|
-
"@budibase/backend-core": "^1.0.49-alpha.
|
|
74
|
-
"@budibase/client": "^1.0.49-alpha.
|
|
75
|
-
"@budibase/string-templates": "^1.0.49-alpha.
|
|
73
|
+
"@budibase/backend-core": "^1.0.49-alpha.7",
|
|
74
|
+
"@budibase/client": "^1.0.49-alpha.7",
|
|
75
|
+
"@budibase/string-templates": "^1.0.49-alpha.7",
|
|
76
76
|
"@bull-board/api": "^3.7.0",
|
|
77
77
|
"@bull-board/koa": "^3.7.0",
|
|
78
78
|
"@elastic/elasticsearch": "7.10.0",
|
|
@@ -8,6 +8,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
|
+
const core = require("@budibase/backend-core");
|
|
12
|
+
const CouchDB = require("../../db");
|
|
13
|
+
core.init(CouchDB);
|
|
11
14
|
const { BUILTIN_ROLE_IDS } = require("@budibase/backend-core/roles");
|
|
12
15
|
const env = require("../../environment");
|
|
13
16
|
const { basicTable, basicRow, basicRole, basicAutomation, basicDatasource, basicQuery, basicScreen, basicLayout, basicWebhook, TENANT_ID, } = require("./structures");
|
|
@@ -16,13 +19,11 @@ const supertest = require("supertest");
|
|
|
16
19
|
const { cleanup } = require("../../utilities/fileSystem");
|
|
17
20
|
const { Cookies, Headers } = require("@budibase/backend-core/constants");
|
|
18
21
|
const { jwt } = require("@budibase/backend-core/auth");
|
|
19
|
-
const core = require("@budibase/backend-core");
|
|
20
22
|
const { getGlobalDB } = require("@budibase/backend-core/tenancy");
|
|
21
23
|
const { createASession } = require("@budibase/backend-core/sessions");
|
|
22
24
|
const { user: userCache } = require("@budibase/backend-core/cache");
|
|
23
|
-
const CouchDB = require("../../db");
|
|
24
25
|
const newid = require("../../db/newid");
|
|
25
|
-
core
|
|
26
|
+
const context = require("@budibase/backend-core/context");
|
|
26
27
|
const GLOBAL_USER_ID = "us_uuid1";
|
|
27
28
|
const EMAIL = "babs@babs.com";
|
|
28
29
|
const CSRF_TOKEN = "e3727778-7af0-4226-b5eb-f43cbe60a306";
|
|
@@ -59,11 +60,24 @@ class TestConfiguration {
|
|
|
59
60
|
request.request = {
|
|
60
61
|
body: config,
|
|
61
62
|
};
|
|
62
|
-
|
|
63
|
-
|
|
63
|
+
function run() {
|
|
64
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
65
|
+
if (params) {
|
|
66
|
+
request.params = params;
|
|
67
|
+
}
|
|
68
|
+
yield controlFunc(request);
|
|
69
|
+
return request.body;
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
// check if already in a context
|
|
73
|
+
if (context.getAppId() == null) {
|
|
74
|
+
return context.doInAppContext(this.appId, () => __awaiter(this, void 0, void 0, function* () {
|
|
75
|
+
return run();
|
|
76
|
+
}));
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
return run();
|
|
64
80
|
}
|
|
65
|
-
yield controlFunc(request);
|
|
66
|
-
return request.body;
|
|
67
81
|
});
|
|
68
82
|
}
|
|
69
83
|
globalUser({ id = GLOBAL_USER_ID, builder = true, email = EMAIL, roles, } = {}) {
|
|
@@ -153,6 +167,7 @@ class TestConfiguration {
|
|
|
153
167
|
// create dev app
|
|
154
168
|
this.app = yield this._req({ name: appName }, null, controllers.app.create);
|
|
155
169
|
this.appId = this.app.appId;
|
|
170
|
+
context.updateAppId(this.appId);
|
|
156
171
|
// create production app
|
|
157
172
|
this.prodApp = yield this.deploy();
|
|
158
173
|
this.prodAppId = this.prodApp.appId;
|
|
@@ -163,10 +178,12 @@ class TestConfiguration {
|
|
|
163
178
|
}
|
|
164
179
|
deploy() {
|
|
165
180
|
return __awaiter(this, void 0, void 0, function* () {
|
|
166
|
-
|
|
167
|
-
const prodAppId =
|
|
168
|
-
|
|
169
|
-
|
|
181
|
+
yield this._req(null, null, controllers.deploy.deployApp);
|
|
182
|
+
const prodAppId = this.getAppId().replace("_dev", "");
|
|
183
|
+
return context.doInAppContext(prodAppId, () => __awaiter(this, void 0, void 0, function* () {
|
|
184
|
+
const appPackage = yield this._req(null, { appId: prodAppId }, controllers.app.fetchAppPackage);
|
|
185
|
+
return appPackage.application;
|
|
186
|
+
}));
|
|
170
187
|
});
|
|
171
188
|
}
|
|
172
189
|
updateTable(config = null) {
|
|
@@ -393,40 +410,46 @@ class TestConfiguration {
|
|
|
393
410
|
login({ roleId, userId, builder, prodApp = false } = {}) {
|
|
394
411
|
return __awaiter(this, void 0, void 0, function* () {
|
|
395
412
|
const appId = prodApp ? this.prodAppId : this.appId;
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
413
|
+
return context.doInAppContext(appId, () => __awaiter(this, void 0, void 0, function* () {
|
|
414
|
+
userId = !userId ? `us_uuid1` : userId;
|
|
415
|
+
if (!this.request) {
|
|
416
|
+
throw "Server has not been opened, cannot login.";
|
|
417
|
+
}
|
|
418
|
+
// make sure the user exists in the global DB
|
|
419
|
+
if (roleId !== BUILTIN_ROLE_IDS.PUBLIC) {
|
|
420
|
+
yield this.globalUser({
|
|
421
|
+
id: userId,
|
|
422
|
+
builder,
|
|
423
|
+
roles: { [this.prodAppId]: roleId },
|
|
424
|
+
});
|
|
425
|
+
}
|
|
426
|
+
yield createASession(userId, {
|
|
427
|
+
sessionId: "sessionid",
|
|
428
|
+
tenantId: TENANT_ID,
|
|
406
429
|
});
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
};
|
|
430
|
+
// have to fake this
|
|
431
|
+
const auth = {
|
|
432
|
+
userId,
|
|
433
|
+
sessionId: "sessionid",
|
|
434
|
+
tenantId: TENANT_ID,
|
|
435
|
+
};
|
|
436
|
+
const app = {
|
|
437
|
+
roleId: roleId,
|
|
438
|
+
appId,
|
|
439
|
+
};
|
|
440
|
+
const authToken = jwt.sign(auth, env.JWT_SECRET);
|
|
441
|
+
const appToken = jwt.sign(app, env.JWT_SECRET);
|
|
442
|
+
// returning necessary request headers
|
|
443
|
+
yield userCache.invalidateUser(userId);
|
|
444
|
+
return {
|
|
445
|
+
Accept: "application/json",
|
|
446
|
+
Cookie: [
|
|
447
|
+
`${Cookies.Auth}=${authToken}`,
|
|
448
|
+
`${Cookies.CurrentApp}=${appToken}`,
|
|
449
|
+
],
|
|
450
|
+
[Headers.APP_ID]: appId,
|
|
451
|
+
};
|
|
452
|
+
}));
|
|
430
453
|
});
|
|
431
454
|
}
|
|
432
455
|
}
|
|
@@ -15,11 +15,11 @@ const automationUtils = require("../automations/automationUtils");
|
|
|
15
15
|
const AutomationEmitter = require("../events/AutomationEmitter");
|
|
16
16
|
const { processObject } = require("@budibase/string-templates");
|
|
17
17
|
const { DEFAULT_TENANT_ID } = require("@budibase/backend-core/constants");
|
|
18
|
-
const CouchDB = require("../db");
|
|
19
18
|
const { DocumentTypes, isDevAppID } = require("../db/utils");
|
|
20
19
|
const { doInTenant } = require("@budibase/backend-core/tenancy");
|
|
21
20
|
const usage = require("../utilities/usageQuota");
|
|
22
21
|
const { definitions: triggerDefs } = require("../automations/triggerInfo");
|
|
22
|
+
const { doInAppContext, getAppDB } = require("@budibase/backend-core/context");
|
|
23
23
|
const FILTER_STEP_ID = actions.ACTION_DEFINITIONS.FILTER.stepId;
|
|
24
24
|
const CRON_STEP_ID = triggerDefs.CRON.stepId;
|
|
25
25
|
const STOPPED_STATUS = { success: false, status: "STOPPED" };
|
|
@@ -67,11 +67,10 @@ class Orchestrator {
|
|
|
67
67
|
}
|
|
68
68
|
getApp() {
|
|
69
69
|
return __awaiter(this, void 0, void 0, function* () {
|
|
70
|
-
const appId = this._appId;
|
|
71
70
|
if (this._app) {
|
|
72
71
|
return this._app;
|
|
73
72
|
}
|
|
74
|
-
const db =
|
|
73
|
+
const db = getAppDB();
|
|
75
74
|
this._app = yield db.get(DocumentTypes.APP_METADATA);
|
|
76
75
|
return this._app;
|
|
77
76
|
});
|
|
@@ -133,13 +132,16 @@ class Orchestrator {
|
|
|
133
132
|
}
|
|
134
133
|
}
|
|
135
134
|
module.exports = (input, callback) => {
|
|
136
|
-
const
|
|
137
|
-
|
|
138
|
-
.
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
135
|
+
const appId = input.data.event.appId;
|
|
136
|
+
doInAppContext(appId, () => {
|
|
137
|
+
const automationOrchestrator = new Orchestrator(input.data.automation, input.data.event);
|
|
138
|
+
automationOrchestrator
|
|
139
|
+
.execute()
|
|
140
|
+
.then(response => {
|
|
141
|
+
callback(null, response);
|
|
142
|
+
})
|
|
143
|
+
.catch(err => {
|
|
144
|
+
callback(err);
|
|
145
|
+
});
|
|
144
146
|
});
|
|
145
147
|
};
|