@budibase/server 1.0.95 → 1.0.96

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 (198) hide show
  1. package/builder/assets/{index.3544c466.js → index.b6091ca2.js} +1 -1
  2. package/builder/index.html +1 -1
  3. package/coverage/clover.xml +37 -37
  4. package/coverage/coverage-final.json +4 -4
  5. package/coverage/lcov-report/api/controllers/analytics.js.html +1 -1
  6. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  7. package/coverage/lcov-report/api/controllers/application.js.html +1 -1
  8. package/coverage/lcov-report/api/controllers/auth.js.html +2 -2
  9. package/coverage/lcov-report/api/controllers/automation.js.html +1 -1
  10. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  11. package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
  12. package/coverage/lcov-report/api/controllers/component.js.html +1 -1
  13. package/coverage/lcov-report/api/controllers/datasource.js.html +1 -1
  14. package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
  15. package/coverage/lcov-report/api/controllers/index.html +1 -1
  16. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  17. package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
  18. package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
  19. package/coverage/lcov-report/api/controllers/migrations.js.html +1 -1
  20. package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
  21. package/coverage/lcov-report/api/controllers/query/index.html +1 -1
  22. package/coverage/lcov-report/api/controllers/query/index.js.html +1 -1
  23. package/coverage/lcov-report/api/controllers/query/validation.js.html +1 -1
  24. package/coverage/lcov-report/api/controllers/role.js.html +1 -1
  25. package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
  26. package/coverage/lcov-report/api/controllers/row/external.js.html +1 -1
  27. package/coverage/lcov-report/api/controllers/row/index.html +1 -1
  28. package/coverage/lcov-report/api/controllers/row/index.js.html +1 -1
  29. package/coverage/lcov-report/api/controllers/row/internal.js.html +1 -1
  30. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +1 -1
  31. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +1 -1
  32. package/coverage/lcov-report/api/controllers/row/utils.js.html +1 -1
  33. package/coverage/lcov-report/api/controllers/screen.js.html +1 -1
  34. package/coverage/lcov-report/api/controllers/script.js.html +1 -1
  35. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +1 -1
  36. package/coverage/lcov-report/api/controllers/table/external.js.html +1 -1
  37. package/coverage/lcov-report/api/controllers/table/index.html +1 -1
  38. package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
  39. package/coverage/lcov-report/api/controllers/table/internal.js.html +1 -1
  40. package/coverage/lcov-report/api/controllers/table/utils.js.html +1 -1
  41. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  42. package/coverage/lcov-report/api/controllers/user.js.html +1 -1
  43. package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
  44. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  45. package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
  46. package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
  47. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
  48. package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
  49. package/coverage/lcov-report/api/index.html +15 -15
  50. package/coverage/lcov-report/api/index.js.html +15 -27
  51. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  52. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  53. package/coverage/lcov-report/api/routes/application.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  56. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/index.html +1 -1
  63. package/coverage/lcov-report/api/routes/index.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/migrations.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  70. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  71. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  72. package/coverage/lcov-report/api/routes/row.js.html +1 -1
  73. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  74. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  75. package/coverage/lcov-report/api/routes/static.js.html +3 -6
  76. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  77. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  78. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  79. package/coverage/lcov-report/api/routes/utils/index.html +1 -1
  80. package/coverage/lcov-report/api/routes/utils/validators.js.html +1 -1
  81. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  82. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  83. package/coverage/lcov-report/automations/actions.js.html +1 -1
  84. package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
  85. package/coverage/lcov-report/automations/bullboard.js.html +1 -1
  86. package/coverage/lcov-report/automations/index.html +1 -1
  87. package/coverage/lcov-report/automations/index.js.html +1 -1
  88. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  89. package/coverage/lcov-report/automations/steps/createRow.js.html +1 -1
  90. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  91. package/coverage/lcov-report/automations/steps/deleteRow.js.html +1 -1
  92. package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
  93. package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
  94. package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
  95. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  96. package/coverage/lcov-report/automations/steps/index.html +1 -1
  97. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  98. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
  99. package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
  100. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  101. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  102. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  103. package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
  104. package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
  105. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  106. package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
  107. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
  108. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  109. package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
  110. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
  111. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
  112. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
  113. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
  114. package/coverage/lcov-report/automations/triggers.js.html +1 -1
  115. package/coverage/lcov-report/automations/utils.js.html +1 -1
  116. package/coverage/lcov-report/constants/index.html +1 -1
  117. package/coverage/lcov-report/constants/index.js.html +1 -1
  118. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  119. package/coverage/lcov-report/constants/screens.js.html +1 -1
  120. package/coverage/lcov-report/db/client.js.html +1 -1
  121. package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
  122. package/coverage/lcov-report/db/index.html +1 -1
  123. package/coverage/lcov-report/db/index.js.html +1 -1
  124. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
  125. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  126. package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
  127. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
  128. package/coverage/lcov-report/db/newid.js.html +1 -1
  129. package/coverage/lcov-report/db/utils.js.html +1 -1
  130. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  131. package/coverage/lcov-report/events/index.html +1 -1
  132. package/coverage/lcov-report/events/index.js.html +1 -1
  133. package/coverage/lcov-report/events/utils.js.html +1 -1
  134. package/coverage/lcov-report/index.html +19 -19
  135. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  136. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  137. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  138. package/coverage/lcov-report/middleware/authorized.js.html +1 -1
  139. package/coverage/lcov-report/middleware/builder.js.html +1 -1
  140. package/coverage/lcov-report/middleware/currentapp.js.html +15 -12
  141. package/coverage/lcov-report/middleware/index.html +11 -11
  142. package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
  143. package/coverage/lcov-report/middleware/publicApi.js.html +3 -3
  144. package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
  145. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  146. package/coverage/lcov-report/middleware/usageQuota.js.html +1 -1
  147. package/coverage/lcov-report/middleware/utils.js.html +1 -1
  148. package/coverage/lcov-report/threads/automation.js.html +1 -1
  149. package/coverage/lcov-report/threads/index.html +1 -1
  150. package/coverage/lcov-report/threads/index.js.html +1 -1
  151. package/coverage/lcov-report/threads/query.js.html +1 -1
  152. package/coverage/lcov-report/threads/utils.js.html +1 -1
  153. package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
  154. package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
  155. package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
  156. package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
  157. package/coverage/lcov-report/utilities/global.js.html +1 -1
  158. package/coverage/lcov-report/utilities/index.html +1 -1
  159. package/coverage/lcov-report/utilities/index.js.html +1 -1
  160. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +1 -1
  161. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  162. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  163. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  164. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  165. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +1 -1
  166. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
  167. package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
  168. package/coverage/lcov-report/utilities/security.js.html +1 -1
  169. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  170. package/coverage/lcov-report/utilities/usageQuota/index.html +1 -1
  171. package/coverage/lcov-report/utilities/usageQuota/index.js.html +1 -1
  172. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +1 -1
  173. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
  174. package/coverage/lcov-report/utilities/users.js.html +1 -1
  175. package/coverage/lcov-report/utilities/workerRequests.js.html +1 -1
  176. package/coverage/lcov.info +51 -53
  177. package/dist/api/controllers/auth.js +1 -1
  178. package/dist/api/controllers/static/index.js +2 -15
  179. package/dist/api/index.js +3 -6
  180. package/dist/api/routes/static.js +1 -2
  181. package/dist/db/views/staticViews.js +2 -0
  182. package/dist/middleware/currentapp.js +7 -6
  183. package/dist/middleware/publicApi.js +2 -2
  184. package/dist/package.json +4 -8
  185. package/dist/tests/utilities/TestConfiguration.js +1 -1
  186. package/dist/tsconfig.tsbuildinfo +1 -1
  187. package/package.json +5 -9
  188. package/src/api/controllers/auth.js +1 -1
  189. package/src/api/controllers/static/index.js +2 -18
  190. package/src/api/index.js +3 -7
  191. package/src/api/routes/static.js +1 -2
  192. package/src/db/views/staticViews.js +2 -0
  193. package/src/middleware/currentapp.js +7 -6
  194. package/src/middleware/publicApi.js +2 -2
  195. package/src/middleware/tests/authorized.spec.js +1 -3
  196. package/src/middleware/tests/currentapp.spec.js +4 -4
  197. package/src/tests/utilities/TestConfiguration.js +1 -1
  198. package/.eslintrc +0 -13
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@budibase/server",
3
3
  "email": "hi@budibase.com",
4
- "version": "1.0.95",
4
+ "version": "1.0.96",
5
5
  "description": "Budibase Web Server",
6
6
  "main": "src/index.ts",
7
7
  "repository": {
@@ -21,10 +21,7 @@
21
21
  "dev:stack:down": "node scripts/dev/manage.js down",
22
22
  "dev:stack:nuke": "node scripts/dev/manage.js nuke",
23
23
  "dev:builder": "yarn run dev:stack:up && nodemon",
24
- "format": "prettier --config ../../.prettierrc.json 'src/**/*.ts' --write",
25
24
  "specs": "node specs/generate.js && openapi-typescript specs/openapi.yaml --output src/definitions/openapi.ts",
26
- "lint": "eslint --fix src/",
27
- "lint:fix": "yarn run format && yarn run lint",
28
25
  "initialise": "node scripts/initialise.js",
29
26
  "env:multi:enable": "node scripts/multiTenancy.js enable",
30
27
  "env:multi:disable": "node scripts/multiTenancy.js disable",
@@ -71,9 +68,9 @@
71
68
  "license": "GPL-3.0",
72
69
  "dependencies": {
73
70
  "@apidevtools/swagger-parser": "^10.0.3",
74
- "@budibase/backend-core": "^1.0.95",
75
- "@budibase/client": "^1.0.95",
76
- "@budibase/string-templates": "^1.0.95",
71
+ "@budibase/backend-core": "^1.0.96",
72
+ "@budibase/client": "^1.0.96",
73
+ "@budibase/string-templates": "^1.0.96",
77
74
  "@bull-board/api": "^3.7.0",
78
75
  "@bull-board/koa": "^3.7.0",
79
76
  "@elastic/elasticsearch": "7.10.0",
@@ -151,7 +148,6 @@
151
148
  "@types/node": "^15.12.4",
152
149
  "@types/oracledb": "^5.2.1",
153
150
  "@types/redis": "^4.0.11",
154
- "@typescript-eslint/parser": "4.28.0",
155
151
  "apidoc": "^0.50.2",
156
152
  "babel-jest": "^27.0.2",
157
153
  "copyfiles": "^2.4.1",
@@ -175,5 +171,5 @@
175
171
  "optionalDependencies": {
176
172
  "oracledb": "^5.3.0"
177
173
  },
178
- "gitHead": "c276c8512415296ffab3647edf16a750f2ef613f"
174
+ "gitHead": "eecd09718a3d1561324234b34faf4b8a4579d6ea"
179
175
  }
@@ -7,7 +7,7 @@ const { getAppDB, getAppId } = require("@budibase/backend-core/context")
7
7
  exports.fetchSelf = async ctx => {
8
8
  let userId = ctx.user.userId || ctx.user._id
9
9
  /* istanbul ignore next */
10
- if (!userId) {
10
+ if (!userId || !ctx.isAuthenticated) {
11
11
  ctx.body = {}
12
12
  return
13
13
  }
@@ -5,7 +5,6 @@ const { resolve, join } = require("../../../utilities/centralPath")
5
5
  const uuid = require("uuid")
6
6
  const { ObjectStoreBuckets } = require("../../../constants")
7
7
  const { processString } = require("@budibase/string-templates")
8
- const { getAllApps } = require("@budibase/backend-core/db")
9
8
  const {
10
9
  loadHandlebarsFile,
11
10
  NODE_MODULES_PATH,
@@ -16,7 +15,7 @@ const { clientLibraryPath } = require("../../../utilities")
16
15
  const { upload } = require("../../../utilities/fileSystem")
17
16
  const { attachmentsRelativeURL } = require("../../../utilities")
18
17
  const { DocumentTypes } = require("../../../db/utils")
19
- const { getAppDB, updateAppId } = require("@budibase/backend-core/context")
18
+ const { getAppDB, getAppId } = require("@budibase/backend-core/context")
20
19
  const AWS = require("aws-sdk")
21
20
  const AWS_REGION = env.AWS_REGION ? env.AWS_REGION : "eu-west-1"
22
21
 
@@ -39,21 +38,6 @@ async function prepareUpload({ s3Key, bucket, metadata, file }) {
39
38
  }
40
39
  }
41
40
 
42
- async function getAppIdFromUrl(ctx) {
43
- // the "appId" component of the URL can be the id or the custom url
44
- let possibleAppUrl = `/${encodeURI(ctx.params.appId).toLowerCase()}`
45
-
46
- // search prod apps for a url that matches, exclude dev where id is always used
47
- const apps = await getAllApps({ dev: false })
48
- const app = apps.filter(
49
- a => a.url && a.url.toLowerCase() === possibleAppUrl
50
- )[0]
51
-
52
- const appId = app && app.appId ? app.appId : ctx.params.appId
53
- updateAppId(appId)
54
- return appId
55
- }
56
-
57
41
  exports.serveBuilder = async function (ctx) {
58
42
  let builderPath = resolve(TOP_LEVEL_PATH, "builder")
59
43
  await send(ctx, ctx.file, { root: builderPath })
@@ -81,10 +65,10 @@ exports.uploadFile = async function (ctx) {
81
65
  }
82
66
 
83
67
  exports.serveApp = async function (ctx) {
84
- let appId = await getAppIdFromUrl(ctx)
85
68
  const App = require("./templates/BudibaseApp.svelte").default
86
69
  const db = getAppDB({ skip_setup: true })
87
70
  const appInfo = await db.get(DocumentTypes.APP_METADATA)
71
+ let appId = getAppId()
88
72
 
89
73
  const { head, html, css } = App.render({
90
74
  title: appInfo.name,
package/src/api/index.js CHANGED
@@ -3,7 +3,6 @@ const {
3
3
  buildAuthMiddleware,
4
4
  auditLog,
5
5
  buildTenancyMiddleware,
6
- buildAppTenancyMiddleware,
7
6
  } = require("@budibase/backend-core/auth")
8
7
  const currentApp = require("../middleware/currentapp")
9
8
  const compress = require("koa-compress")
@@ -14,6 +13,9 @@ const env = require("../environment")
14
13
 
15
14
  const router = new Router()
16
15
 
16
+ router.get("/health", ctx => (ctx.status = 200))
17
+ router.get("/version", ctx => (ctx.body = pkg.version))
18
+
17
19
  router
18
20
  .use(
19
21
  compress({
@@ -34,8 +36,6 @@ router
34
36
  }
35
37
  await next()
36
38
  })
37
- .use("/health", ctx => (ctx.status = 200))
38
- .use("/version", ctx => (ctx.body = pkg.version))
39
39
  // re-direct before any middlewares occur
40
40
  .redirect("/", "/builder")
41
41
  .use(
@@ -52,8 +52,6 @@ router
52
52
  })
53
53
  )
54
54
  .use(currentApp)
55
- // this middleware will try to use the app ID to determine the tenancy
56
- .use(buildAppTenancyMiddleware())
57
55
  .use(auditLog)
58
56
 
59
57
  // error handling middleware
@@ -74,8 +72,6 @@ router.use(async (ctx, next) => {
74
72
  }
75
73
  })
76
74
 
77
- router.get("/health", ctx => (ctx.status = 200))
78
-
79
75
  // authenticated routes
80
76
  for (let route of mainRoutes) {
81
77
  router.use(route.routes())
@@ -44,8 +44,7 @@ router
44
44
  authorized(PermissionTypes.TABLE, PermissionLevels.WRITE),
45
45
  controller.uploadFile
46
46
  )
47
- // TODO: this likely needs to be secured in some way
48
- .get("/:appId/:path*", controller.serveApp)
47
+ .get("/app/:appUrl/:path*", controller.serveApp)
49
48
  .post(
50
49
  "/api/attachments/:datasourceId/url",
51
50
  authorized(PermissionTypes.TABLE, PermissionLevels.READ),
@@ -33,6 +33,7 @@ exports.createLinkView = async () => {
33
33
  if (doc.type === "link") {
34
34
  let doc1 = doc.doc1
35
35
  let doc2 = doc.doc2
36
+ // eslint-disable-next-line no-undef
36
37
  emit([doc1.tableId, doc1.rowId], {
37
38
  id: doc2.rowId,
38
39
  thisId: doc1.rowId,
@@ -40,6 +41,7 @@ exports.createLinkView = async () => {
40
41
  })
41
42
  // if linking to same table can't emit twice
42
43
  if (doc1.tableId !== doc2.tableId) {
44
+ // eslint-disable-next-line no-undef
43
45
  emit([doc2.tableId, doc2.rowId], {
44
46
  id: doc1.rowId,
45
47
  thisId: doc2.rowId,
@@ -1,5 +1,5 @@
1
1
  const {
2
- getAppId,
2
+ getAppIdFromCtx,
3
3
  setCookie,
4
4
  getCookie,
5
5
  clearCookie,
@@ -17,7 +17,7 @@ const { doInAppContext } = require("@budibase/backend-core/context")
17
17
 
18
18
  module.exports = async (ctx, next) => {
19
19
  // try to get the appID from the request
20
- let requestAppId = getAppId(ctx)
20
+ let requestAppId = await getAppIdFromCtx(ctx)
21
21
  // get app cookie if it exists
22
22
  let appCookie = null
23
23
  try {
@@ -71,21 +71,22 @@ module.exports = async (ctx, next) => {
71
71
  }
72
72
 
73
73
  return doInAppContext(appId, async () => {
74
- let noCookieSet = false
74
+ let skipCookie = false
75
75
  // if the user not in the right tenant then make sure they have no permissions
76
76
  // need to judge this only based on the request app ID,
77
77
  if (
78
78
  env.MULTI_TENANCY &&
79
79
  ctx.user &&
80
80
  requestAppId &&
81
- !isUserInAppTenant(requestAppId)
81
+ !isUserInAppTenant(requestAppId, ctx.user)
82
82
  ) {
83
83
  // don't error, simply remove the users rights (they are a public user)
84
84
  delete ctx.user.builder
85
85
  delete ctx.user.admin
86
86
  delete ctx.user.roles
87
+ ctx.isAuthenticated = false
87
88
  roleId = BUILTIN_ROLE_IDS.PUBLIC
88
- noCookieSet = true
89
+ skipCookie = true
89
90
  }
90
91
 
91
92
  ctx.appId = appId
@@ -105,7 +106,7 @@ module.exports = async (ctx, next) => {
105
106
  (requestAppId !== appId ||
106
107
  appCookie == null ||
107
108
  appCookie.appId !== requestAppId) &&
108
- !noCookieSet
109
+ !skipCookie
109
110
  ) {
110
111
  setCookie(ctx, { appId }, Cookies.CurrentApp)
111
112
  }
@@ -1,9 +1,9 @@
1
1
  const { Headers } = require("@budibase/backend-core/constants")
2
- const { getAppId } = require("@budibase/backend-core/utils")
2
+ const { getAppIdFromCtx } = require("@budibase/backend-core/utils")
3
3
 
4
4
  module.exports = function ({ requiresAppId } = {}) {
5
5
  return async (ctx, next) => {
6
- const appId = getAppId(ctx)
6
+ const appId = await getAppIdFromCtx(ctx)
7
7
  if (requiresAppId && !appId) {
8
8
  ctx.throw(
9
9
  400,
@@ -35,9 +35,7 @@ class TestConfiguration {
35
35
  }
36
36
 
37
37
  executeMiddleware() {
38
- return doInAppContext(APP_ID, () => {
39
- return this.middleware(this.ctx, this.next)
40
- })
38
+ return this.middleware(this.ctx, this.next)
41
39
  }
42
40
 
43
41
  setUser(user) {
@@ -38,7 +38,7 @@ function mockAuthWithNoCookie() {
38
38
  },
39
39
  }))
40
40
  jest.mock("@budibase/backend-core/utils", () => ({
41
- getAppId: jest.fn(),
41
+ getAppIdFromCtx: jest.fn(),
42
42
  setCookie: jest.fn(),
43
43
  getCookie: jest.fn(),
44
44
  }))
@@ -51,7 +51,7 @@ function mockAuthWithCookie() {
51
51
  jest.resetModules()
52
52
  mockWorker()
53
53
  jest.mock("@budibase/backend-core/utils", () => ({
54
- getAppId: () => {
54
+ getAppIdFromCtx: () => {
55
55
  return "app_test"
56
56
  },
57
57
  setCookie: jest.fn(),
@@ -143,7 +143,7 @@ describe("Current app middleware", () => {
143
143
  it("should perform correct when no cookie exists", async () => {
144
144
  mockReset()
145
145
  jest.mock("@budibase/backend-core/utils", () => ({
146
- getAppId: () => {
146
+ getAppIdFromCtx: () => {
147
147
  return "app_test"
148
148
  },
149
149
  setCookie: jest.fn(),
@@ -158,7 +158,7 @@ describe("Current app middleware", () => {
158
158
  it("lastly check what occurs when cookie doesn't need updated", async () => {
159
159
  mockReset()
160
160
  jest.mock("@budibase/backend-core/utils", () => ({
161
- getAppId: () => {
161
+ getAppIdFromCtx: () => {
162
162
  return "app_test"
163
163
  },
164
164
  setCookie: jest.fn(),
@@ -80,7 +80,7 @@ class TestConfiguration {
80
80
  return request.body
81
81
  }
82
82
  // check if already in a context
83
- if (context.getAppId() == null) {
83
+ if (context.getAppId() == null && this.appId !== null) {
84
84
  return context.doInAppContext(this.appId, async () => {
85
85
  return run()
86
86
  })
package/.eslintrc DELETED
@@ -1,13 +0,0 @@
1
- {
2
- "globals": {
3
- "emit": true,
4
- "key": true
5
- },
6
- "parser": "@typescript-eslint/parser",
7
- "env": {
8
- "node": true
9
- },
10
- "extends": ["eslint:recommended"],
11
- "rules": {
12
- }
13
- }