@budibase/worker 2.1.43-alpha.6 → 2.1.44

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 (208) hide show
  1. package/package.json +24 -14
  2. package/{src/tests/jestSetup.ts → scripts/jestSetup.js} +3 -12
  3. package/scripts/localdomain.js +7 -33
  4. package/src/api/controllers/global/auth.ts +43 -51
  5. package/src/api/controllers/global/{configs.ts → configs.js} +114 -119
  6. package/src/api/controllers/global/{email.ts → email.js} +5 -6
  7. package/src/api/controllers/global/roles.js +68 -0
  8. package/src/api/controllers/global/self.ts +2 -2
  9. package/src/api/controllers/global/users.ts +2 -4
  10. package/src/api/controllers/global/{workspaces.ts → workspaces.js} +18 -15
  11. package/src/api/controllers/system/{environment.ts → environment.js} +2 -3
  12. package/src/api/controllers/system/restore.ts +1 -1
  13. package/src/api/controllers/system/{status.ts → status.js} +3 -4
  14. package/src/api/controllers/system/tenants.ts +51 -8
  15. package/src/api/index.ts +8 -31
  16. package/src/api/routes/global/{auth.ts → auth.js} +48 -31
  17. package/src/api/routes/global/{configs.ts → configs.js} +23 -22
  18. package/src/api/routes/global/{email.ts → email.js} +10 -9
  19. package/src/api/routes/global/license.ts +1 -1
  20. package/src/api/routes/global/roles.js +12 -0
  21. package/src/api/routes/global/self.ts +2 -2
  22. package/src/api/routes/global/templates.ts +4 -4
  23. package/src/api/routes/global/tests/auth.spec.ts +64 -134
  24. package/src/api/routes/global/tests/configs.spec.ts +35 -34
  25. package/src/api/routes/global/tests/email.spec.ts +3 -4
  26. package/src/api/routes/global/tests/realEmail.spec.ts +3 -2
  27. package/src/api/routes/global/tests/self.spec.ts +4 -3
  28. package/src/api/routes/global/tests/users.spec.ts +45 -61
  29. package/src/api/routes/global/{users.ts → users.js} +26 -28
  30. package/src/api/routes/global/{workspaces.ts → workspaces.js} +10 -9
  31. package/src/api/routes/index.ts +1 -2
  32. package/src/api/routes/system/accounts.ts +1 -1
  33. package/src/api/routes/system/environment.js +8 -0
  34. package/src/api/routes/system/migrations.ts +1 -1
  35. package/src/api/routes/system/restore.ts +1 -1
  36. package/src/api/routes/system/status.js +8 -0
  37. package/src/api/routes/system/tenants.js +12 -0
  38. package/src/api/routes/system/tests/accounts.spec.ts +6 -5
  39. package/src/api/routes/validation/users.ts +3 -3
  40. package/src/constants/{index.ts → index.js} +64 -57
  41. package/src/constants/templates/{index.ts → index.js} +19 -23
  42. package/src/db/index.js +11 -0
  43. package/src/environment.ts +7 -9
  44. package/src/index.ts +16 -15
  45. package/src/middleware/{cloudRestricted.ts → cloudRestricted.js} +4 -5
  46. package/src/tests/TestConfiguration.ts +50 -99
  47. package/src/tests/api/accounts.ts +8 -5
  48. package/src/tests/api/auth.ts +6 -3
  49. package/src/tests/api/configs.ts +8 -15
  50. package/src/tests/api/email.ts +6 -3
  51. package/src/tests/api/index.ts +0 -15
  52. package/src/tests/api/self.ts +6 -11
  53. package/src/tests/api/users.ts +6 -38
  54. package/src/tests/controllers.js +7 -0
  55. package/src/tests/index.ts +1 -5
  56. package/src/tests/structures/accounts.ts +24 -0
  57. package/src/tests/structures/{configs.ts → configs.js} +11 -11
  58. package/src/tests/structures/index.ts +3 -5
  59. package/src/tests/structures/users.ts +0 -1
  60. package/src/utilities/appService.js +33 -0
  61. package/src/utilities/{email.ts → email.js} +45 -78
  62. package/src/utilities/fileSystem.js +5 -0
  63. package/src/utilities/{index.ts → index.js} +1 -1
  64. package/src/utilities/{redis.ts → redis.js} +24 -29
  65. package/src/utilities/templates.js +49 -0
  66. package/src/utilities/users.js +17 -0
  67. package/tsconfig.build.json +3 -2
  68. package/tsconfig.json +1 -3
  69. package/__mocks__/aws-sdk.ts +0 -15
  70. package/__mocks__/oauth.ts +0 -57
  71. package/coverage/clover.xml +0 -2157
  72. package/coverage/coverage-final.json +0 -78
  73. package/coverage/lcov-report/base.css +0 -224
  74. package/coverage/lcov-report/block-navigation.js +0 -87
  75. package/coverage/lcov-report/favicon.png +0 -0
  76. package/coverage/lcov-report/index.html +0 -431
  77. package/coverage/lcov-report/prettify.css +0 -1
  78. package/coverage/lcov-report/prettify.js +0 -2
  79. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  80. package/coverage/lcov-report/sorter.js +0 -196
  81. package/coverage/lcov-report/src/api/controllers/global/auth.ts.html +0 -925
  82. package/coverage/lcov-report/src/api/controllers/global/configs.ts.html +0 -1405
  83. package/coverage/lcov-report/src/api/controllers/global/email.ts.html +0 -196
  84. package/coverage/lcov-report/src/api/controllers/global/index.html +0 -236
  85. package/coverage/lcov-report/src/api/controllers/global/license.ts.html +0 -187
  86. package/coverage/lcov-report/src/api/controllers/global/roles.ts.html +0 -283
  87. package/coverage/lcov-report/src/api/controllers/global/self.ts.html +0 -577
  88. package/coverage/lcov-report/src/api/controllers/global/templates.ts.html +0 -316
  89. package/coverage/lcov-report/src/api/controllers/global/users.ts.html +0 -796
  90. package/coverage/lcov-report/src/api/controllers/global/workspaces.ts.html +0 -244
  91. package/coverage/lcov-report/src/api/controllers/system/accounts.ts.html +0 -148
  92. package/coverage/lcov-report/src/api/controllers/system/environment.ts.html +0 -124
  93. package/coverage/lcov-report/src/api/controllers/system/index.html +0 -191
  94. package/coverage/lcov-report/src/api/controllers/system/migrations.ts.html +0 -124
  95. package/coverage/lcov-report/src/api/controllers/system/restore.ts.html +0 -124
  96. package/coverage/lcov-report/src/api/controllers/system/status.ts.html +0 -133
  97. package/coverage/lcov-report/src/api/controllers/system/tenants.ts.html +0 -154
  98. package/coverage/lcov-report/src/api/index.html +0 -116
  99. package/coverage/lcov-report/src/api/index.ts.html +0 -583
  100. package/coverage/lcov-report/src/api/routes/global/auth.ts.html +0 -349
  101. package/coverage/lcov-report/src/api/routes/global/configs.ts.html +0 -457
  102. package/coverage/lcov-report/src/api/routes/global/email.ts.html +0 -193
  103. package/coverage/lcov-report/src/api/routes/global/index.html +0 -236
  104. package/coverage/lcov-report/src/api/routes/global/license.ts.html +0 -124
  105. package/coverage/lcov-report/src/api/routes/global/roles.ts.html +0 -133
  106. package/coverage/lcov-report/src/api/routes/global/self.ts.html +0 -139
  107. package/coverage/lcov-report/src/api/routes/global/templates.ts.html +0 -196
  108. package/coverage/lcov-report/src/api/routes/global/users.ts.html +0 -433
  109. package/coverage/lcov-report/src/api/routes/global/workspaces.ts.html +0 -196
  110. package/coverage/lcov-report/src/api/routes/index.html +0 -116
  111. package/coverage/lcov-report/src/api/routes/index.ts.html +0 -196
  112. package/coverage/lcov-report/src/api/routes/system/accounts.ts.html +0 -142
  113. package/coverage/lcov-report/src/api/routes/system/environment.ts.html +0 -109
  114. package/coverage/lcov-report/src/api/routes/system/index.html +0 -191
  115. package/coverage/lcov-report/src/api/routes/system/migrations.ts.html +0 -142
  116. package/coverage/lcov-report/src/api/routes/system/restore.ts.html +0 -109
  117. package/coverage/lcov-report/src/api/routes/system/status.ts.html +0 -109
  118. package/coverage/lcov-report/src/api/routes/system/tenants.ts.html +0 -124
  119. package/coverage/lcov-report/src/api/routes/validation/index.html +0 -131
  120. package/coverage/lcov-report/src/api/routes/validation/index.ts.html +0 -88
  121. package/coverage/lcov-report/src/api/routes/validation/users.ts.html +0 -235
  122. package/coverage/lcov-report/src/constants/index.html +0 -116
  123. package/coverage/lcov-report/src/constants/index.ts.html +0 -613
  124. package/coverage/lcov-report/src/constants/templates/index.html +0 -116
  125. package/coverage/lcov-report/src/constants/templates/index.ts.html +0 -316
  126. package/coverage/lcov-report/src/db/index.html +0 -116
  127. package/coverage/lcov-report/src/db/index.ts.html +0 -115
  128. package/coverage/lcov-report/src/environment.ts.html +0 -373
  129. package/coverage/lcov-report/src/index.html +0 -131
  130. package/coverage/lcov-report/src/index.ts.html +0 -394
  131. package/coverage/lcov-report/src/middleware/cloudRestricted.ts.html +0 -139
  132. package/coverage/lcov-report/src/middleware/index.html +0 -116
  133. package/coverage/lcov-report/src/migrations/functions/globalInfoSyncUsers.ts.html +0 -145
  134. package/coverage/lcov-report/src/migrations/functions/index.html +0 -116
  135. package/coverage/lcov-report/src/migrations/index.html +0 -116
  136. package/coverage/lcov-report/src/migrations/index.ts.html +0 -271
  137. package/coverage/lcov-report/src/sdk/accounts/accounts.ts.html +0 -262
  138. package/coverage/lcov-report/src/sdk/accounts/index.html +0 -131
  139. package/coverage/lcov-report/src/sdk/accounts/index.ts.html +0 -88
  140. package/coverage/lcov-report/src/sdk/index.html +0 -116
  141. package/coverage/lcov-report/src/sdk/index.ts.html +0 -106
  142. package/coverage/lcov-report/src/sdk/users/events.ts.html +0 -577
  143. package/coverage/lcov-report/src/sdk/users/index.html +0 -146
  144. package/coverage/lcov-report/src/sdk/users/index.ts.html +0 -88
  145. package/coverage/lcov-report/src/sdk/users/users.ts.html +0 -1903
  146. package/coverage/lcov-report/src/tests/TestConfiguration.ts.html +0 -1051
  147. package/coverage/lcov-report/src/tests/api/accounts.ts.html +0 -160
  148. package/coverage/lcov-report/src/tests/api/auth.ts.html +0 -220
  149. package/coverage/lcov-report/src/tests/api/base.ts.html +0 -133
  150. package/coverage/lcov-report/src/tests/api/configs.ts.html +0 -226
  151. package/coverage/lcov-report/src/tests/api/email.ts.html +0 -148
  152. package/coverage/lcov-report/src/tests/api/environment.ts.html +0 -130
  153. package/coverage/lcov-report/src/tests/api/index.html +0 -296
  154. package/coverage/lcov-report/src/tests/api/index.ts.html +0 -205
  155. package/coverage/lcov-report/src/tests/api/migrations.ts.html +0 -151
  156. package/coverage/lcov-report/src/tests/api/restore.ts.html +0 -127
  157. package/coverage/lcov-report/src/tests/api/self.ts.html +0 -163
  158. package/coverage/lcov-report/src/tests/api/status.ts.html +0 -121
  159. package/coverage/lcov-report/src/tests/api/tenants.ts.html +0 -130
  160. package/coverage/lcov-report/src/tests/api/users.ts.html +0 -511
  161. package/coverage/lcov-report/src/tests/controllers.ts.html +0 -100
  162. package/coverage/lcov-report/src/tests/index.html +0 -146
  163. package/coverage/lcov-report/src/tests/index.ts.html +0 -139
  164. package/coverage/lcov-report/src/tests/mocks/email.js.html +0 -115
  165. package/coverage/lcov-report/src/tests/mocks/index.html +0 -131
  166. package/coverage/lcov-report/src/tests/mocks/index.ts.html +0 -106
  167. package/coverage/lcov-report/src/tests/structures/configs.ts.html +0 -313
  168. package/coverage/lcov-report/src/tests/structures/groups.ts.html +0 -118
  169. package/coverage/lcov-report/src/tests/structures/index.html +0 -161
  170. package/coverage/lcov-report/src/tests/structures/index.ts.html +0 -151
  171. package/coverage/lcov-report/src/tests/structures/users.ts.html +0 -196
  172. package/coverage/lcov-report/src/utilities/appService.ts.html +0 -181
  173. package/coverage/lcov-report/src/utilities/email.ts.html +0 -850
  174. package/coverage/lcov-report/src/utilities/fileSystem.ts.html +0 -100
  175. package/coverage/lcov-report/src/utilities/index.html +0 -206
  176. package/coverage/lcov-report/src/utilities/index.ts.html +0 -112
  177. package/coverage/lcov-report/src/utilities/redis.ts.html +0 -424
  178. package/coverage/lcov-report/src/utilities/templates.ts.html +0 -232
  179. package/coverage/lcov-report/src/utilities/users.ts.html +0 -133
  180. package/coverage/lcov.info +0 -3970
  181. package/jest.config.ts +0 -29
  182. package/src/api/controllers/global/roles.ts +0 -66
  183. package/src/api/routes/global/roles.ts +0 -16
  184. package/src/api/routes/global/tests/license.spec.ts +0 -31
  185. package/src/api/routes/global/tests/roles.spec.ts +0 -27
  186. package/src/api/routes/global/tests/templates.spec.ts +0 -35
  187. package/src/api/routes/global/tests/workspaces.spec.ts +0 -29
  188. package/src/api/routes/system/environment.ts +0 -8
  189. package/src/api/routes/system/status.ts +0 -8
  190. package/src/api/routes/system/tenants.ts +0 -13
  191. package/src/api/routes/system/tests/environment.spec.ts +0 -29
  192. package/src/api/routes/system/tests/migrations.spec.ts +0 -63
  193. package/src/api/routes/system/tests/restore.spec.ts +0 -36
  194. package/src/api/routes/system/tests/status.spec.ts +0 -48
  195. package/src/api/routes/system/tests/tenants.spec.ts +0 -61
  196. package/src/db/index.ts +0 -10
  197. package/src/middleware/tests/tenancy.spec.ts +0 -73
  198. package/src/tests/api/base.ts +0 -16
  199. package/src/tests/api/environment.ts +0 -15
  200. package/src/tests/api/migrations.ts +0 -22
  201. package/src/tests/api/restore.ts +0 -14
  202. package/src/tests/api/status.ts +0 -12
  203. package/src/tests/api/tenants.ts +0 -15
  204. package/src/tests/controllers.ts +0 -5
  205. package/src/utilities/appService.ts +0 -32
  206. package/src/utilities/fileSystem.ts +0 -5
  207. package/src/utilities/templates.ts +0 -49
  208. package/src/utilities/users.ts +0 -16
@@ -6,7 +6,7 @@ export async function systemRestored(ctx: BBContext) {
6
6
  if (!env.SELF_HOSTED) {
7
7
  ctx.throw(405, "This operation is not allowed in cloud.")
8
8
  }
9
- await cache.bustCache(cache.CacheKey.CHECKLIST)
9
+ await cache.bustCache(cache.CacheKeys.CHECKLIST)
10
10
  ctx.body = {
11
11
  message: "System prepared after restore.",
12
12
  }
@@ -1,8 +1,7 @@
1
- import { accounts } from "@budibase/backend-core"
2
- import env from "../../../environment"
3
- import { BBContext } from "@budibase/types"
1
+ const accounts = require("@budibase/backend-core/accounts")
2
+ const env = require("../../../environment")
4
3
 
5
- export const fetch = async (ctx: BBContext) => {
4
+ exports.fetch = async ctx => {
6
5
  if (!env.SELF_HOSTED && !env.DISABLE_ACCOUNT_PORTAL) {
7
6
  const status = await accounts.getStatus()
8
7
  ctx.body = status
@@ -1,18 +1,61 @@
1
- import { BBContext } from "@budibase/types"
2
- import { deprovisioning } from "@budibase/backend-core"
1
+ const { StaticDatabases, doWithDB } = require("@budibase/backend-core/db")
2
+ const { getTenantId } = require("@budibase/backend-core/tenancy")
3
+ const { deleteTenant } = require("@budibase/backend-core/deprovision")
3
4
  import { quotas } from "@budibase/pro"
4
5
 
5
- const _delete = async (ctx: BBContext) => {
6
- const user = ctx.user!
7
- const tenantId = ctx.params.tenantId
6
+ export const exists = async (ctx: any) => {
7
+ const tenantId = ctx.request.params
8
+ ctx.body = {
9
+ exists: await doWithDB(
10
+ StaticDatabases.PLATFORM_INFO.name,
11
+ async (db: any) => {
12
+ let exists = false
13
+ try {
14
+ const tenantsDoc = await db.get(
15
+ StaticDatabases.PLATFORM_INFO.docs.tenants
16
+ )
17
+ if (tenantsDoc) {
18
+ exists = tenantsDoc.tenantIds.indexOf(tenantId) !== -1
19
+ }
20
+ } catch (err) {
21
+ // if error it doesn't exist
22
+ }
23
+ return exists
24
+ }
25
+ ),
26
+ }
27
+ }
28
+
29
+ export const fetch = async (ctx: any) => {
30
+ ctx.body = await doWithDB(
31
+ StaticDatabases.PLATFORM_INFO.name,
32
+ async (db: any) => {
33
+ let tenants = []
34
+ try {
35
+ const tenantsDoc = await db.get(
36
+ StaticDatabases.PLATFORM_INFO.docs.tenants
37
+ )
38
+ if (tenantsDoc) {
39
+ tenants = tenantsDoc.tenantIds
40
+ }
41
+ } catch (err) {
42
+ // if error it doesn't exist
43
+ }
44
+ return tenants
45
+ }
46
+ )
47
+ }
48
+
49
+ const _delete = async (ctx: any) => {
50
+ const tenantId = getTenantId()
8
51
 
9
- if (tenantId !== user.tenantId) {
10
- ctx.throw(403, "Tenant ID does not match current user")
52
+ if (ctx.params.tenantId !== tenantId) {
53
+ ctx.throw(403, "Unauthorized")
11
54
  }
12
55
 
13
56
  try {
57
+ await deleteTenant(tenantId)
14
58
  await quotas.bustCache()
15
- await deprovisioning.deleteTenant(tenantId)
16
59
  ctx.status = 204
17
60
  } catch (err) {
18
61
  ctx.log.error(err)
package/src/api/index.ts CHANGED
@@ -7,12 +7,11 @@ import { errors, auth, middleware } from "@budibase/backend-core"
7
7
  import { APIError } from "@budibase/types"
8
8
 
9
9
  const PUBLIC_ENDPOINTS = [
10
- // deprecated single tenant sso callback
10
+ // old deprecated endpoints kept for backwards compat
11
11
  {
12
12
  route: "/api/admin/auth/google/callback",
13
13
  method: "GET",
14
14
  },
15
- // deprecated single tenant sso callback
16
15
  {
17
16
  route: "/api/admin/auth/oidc/callback",
18
17
  method: "GET",
@@ -45,19 +44,17 @@ const PUBLIC_ENDPOINTS = [
45
44
  method: "POST",
46
45
  },
47
46
  {
48
- route: "/api/system/environment",
47
+ route: "api/system/environment",
49
48
  method: "GET",
50
49
  },
51
50
  {
52
- route: "/api/system/status",
51
+ route: "api/system/status",
53
52
  method: "GET",
54
53
  },
55
- // TODO: This should be an internal api
56
54
  {
57
55
  route: "/api/global/users/tenant/:id",
58
56
  method: "GET",
59
57
  },
60
- // TODO: This should be an internal api
61
58
  {
62
59
  route: "/api/system/restored",
63
60
  method: "POST",
@@ -65,37 +62,17 @@ const PUBLIC_ENDPOINTS = [
65
62
  ]
66
63
 
67
64
  const NO_TENANCY_ENDPOINTS = [
68
- // system endpoints are not specific to any tenant
65
+ ...PUBLIC_ENDPOINTS,
69
66
  {
70
67
  route: "/api/system",
71
68
  method: "ALL",
72
69
  },
73
- // tenant is determined in request body
74
- // used for creating the tenant
75
70
  {
76
- route: "/api/global/users/init",
77
- method: "POST",
78
- },
79
- // deprecated single tenant sso callback
80
- {
81
- route: "/api/admin/auth/google/callback",
82
- method: "GET",
83
- },
84
- // deprecated single tenant sso callback
85
- {
86
- route: "/api/admin/auth/oidc/callback",
71
+ route: "/api/global/users/self",
87
72
  method: "GET",
88
73
  },
89
- // tenant is determined from code in redis
90
74
  {
91
- route: "/api/global/users/invite/accept",
92
- method: "POST",
93
- },
94
- // global user search - no tenancy
95
- // :id is user id
96
- // TODO: this should really be `/api/system/users/:id`
97
- {
98
- route: "/api/global/users/tenant/:id",
75
+ route: "/api/global/self",
99
76
  method: "GET",
100
77
  },
101
78
  ]
@@ -104,7 +81,7 @@ const NO_TENANCY_ENDPOINTS = [
104
81
  // add them all to be safe
105
82
  const NO_CSRF_ENDPOINTS = [...PUBLIC_ENDPOINTS]
106
83
 
107
- const router: Router = new Router()
84
+ const router = new Router()
108
85
  router
109
86
  .use(
110
87
  compress({
@@ -163,4 +140,4 @@ for (let route of routes) {
163
140
  router.use(route.allowedMethods())
164
141
  }
165
142
 
166
- export default router
143
+ module.exports = router
@@ -1,13 +1,14 @@
1
- import Router from "@koa/router"
2
- import * as authController from "../../controllers/global/auth"
3
- import { auth } from "@budibase/backend-core"
4
- import Joi from "joi"
1
+ const Router = require("@koa/router")
2
+ const authController = require("../../controllers/global/auth")
3
+ const { joiValidator } = require("@budibase/backend-core/auth")
4
+ const Joi = require("joi")
5
+ const { updateTenantId } = require("@budibase/backend-core/tenancy")
5
6
 
6
- const router: Router = new Router()
7
+ const router = new Router()
7
8
 
8
9
  function buildAuthValidation() {
9
10
  // prettier-ignore
10
- return auth.joiValidator.body(Joi.object({
11
+ return joiValidator.body(Joi.object({
11
12
  username: Joi.string().required(),
12
13
  password: Joi.string().required(),
13
14
  }).required().unknown(false))
@@ -15,74 +16,90 @@ function buildAuthValidation() {
15
16
 
16
17
  function buildResetValidation() {
17
18
  // prettier-ignore
18
- return auth.joiValidator.body(Joi.object({
19
+ return joiValidator.body(Joi.object({
19
20
  email: Joi.string().required(),
20
21
  }).required().unknown(false))
21
22
  }
22
23
 
23
24
  function buildResetUpdateValidation() {
24
25
  // prettier-ignore
25
- return auth.joiValidator.body(Joi.object({
26
+ return joiValidator.body(Joi.object({
26
27
  resetCode: Joi.string().required(),
27
28
  password: Joi.string().required(),
28
29
  }).required().unknown(false))
29
30
  }
30
31
 
32
+ function updateTenant(ctx, next) {
33
+ if (ctx.params) {
34
+ updateTenantId(ctx.params.tenantId)
35
+ }
36
+ return next()
37
+ }
38
+
31
39
  router
32
- // PASSWORD
33
40
  .post(
34
41
  "/api/global/auth/:tenantId/login",
35
42
  buildAuthValidation(),
43
+ updateTenant,
36
44
  authController.authenticate
37
45
  )
38
- .post("/api/global/auth/logout", authController.logout)
39
46
  .post(
40
47
  "/api/global/auth/:tenantId/reset",
41
48
  buildResetValidation(),
49
+ updateTenant,
42
50
  authController.reset
43
51
  )
44
52
  .post(
45
53
  "/api/global/auth/:tenantId/reset/update",
46
54
  buildResetUpdateValidation(),
55
+ updateTenant,
47
56
  authController.resetUpdate
48
57
  )
49
- // INIT
58
+ .post("/api/global/auth/logout", authController.logout)
50
59
  .post("/api/global/auth/init", authController.setInitInfo)
51
60
  .get("/api/global/auth/init", authController.getInitInfo)
52
-
53
- // DATASOURCE - MULTI TENANT
61
+ .get(
62
+ "/api/global/auth/:tenantId/google",
63
+ updateTenant,
64
+ authController.googlePreAuth
65
+ )
54
66
  .get(
55
67
  "/api/global/auth/:tenantId/datasource/:provider",
68
+ updateTenant,
56
69
  authController.datasourcePreAuth
57
70
  )
71
+ // single tenancy endpoint
72
+ .get("/api/global/auth/google/callback", authController.googleAuth)
58
73
  .get(
59
- "/api/global/auth/:tenantId/datasource/:provider/callback",
74
+ "/api/global/auth/datasource/:provider/callback",
60
75
  authController.datasourceAuth
61
76
  )
62
-
63
- // DATASOURCE - SINGLE TENANT - DEPRECATED
77
+ // multi-tenancy endpoint
64
78
  .get(
65
- "/api/global/auth/datasource/:provider/callback",
79
+ "/api/global/auth/:tenantId/google/callback",
80
+ updateTenant,
81
+ authController.googleAuth
82
+ )
83
+ .get(
84
+ "/api/global/auth/:tenantId/datasource/:provider/callback",
85
+ updateTenant,
66
86
  authController.datasourceAuth
67
87
  )
68
-
69
- // GOOGLE - MULTI TENANT
70
- .get("/api/global/auth/:tenantId/google", authController.googlePreAuth)
71
- .get("/api/global/auth/:tenantId/google/callback", authController.googleAuth)
72
-
73
- // GOOGLE - SINGLE TENANT - DEPRECATED
74
- .get("/api/global/auth/google/callback", authController.googleAuth)
75
- .get("/api/admin/auth/google/callback", authController.googleAuth)
76
-
77
- // OIDC - MULTI TENANT
78
88
  .get(
79
89
  "/api/global/auth/:tenantId/oidc/configs/:configId",
90
+ updateTenant,
80
91
  authController.oidcPreAuth
81
92
  )
82
- .get("/api/global/auth/:tenantId/oidc/callback", authController.oidcAuth)
83
-
84
- // OIDC - SINGLE TENANT - DEPRECATED
93
+ // single tenancy endpoint
85
94
  .get("/api/global/auth/oidc/callback", authController.oidcAuth)
95
+ // multi-tenancy endpoint
96
+ .get(
97
+ "/api/global/auth/:tenantId/oidc/callback",
98
+ updateTenant,
99
+ authController.oidcAuth
100
+ )
101
+ // deprecated - used by the default system before tenancy
102
+ .get("/api/admin/auth/google/callback", authController.googleAuth)
86
103
  .get("/api/admin/auth/oidc/callback", authController.oidcAuth)
87
104
 
88
- export = router
105
+ module.exports = router
@@ -1,10 +1,11 @@
1
- import Router from "@koa/router"
2
- import * as controller from "../../controllers/global/configs"
3
- import { auth } from "@budibase/backend-core"
4
- import Joi from "joi"
5
- import { ConfigType } from "@budibase/types"
1
+ const Router = require("@koa/router")
2
+ const controller = require("../../controllers/global/configs")
3
+ const { joiValidator } = require("@budibase/backend-core/auth")
4
+ const { adminOnly } = require("@budibase/backend-core/auth")
5
+ const Joi = require("joi")
6
+ const { Configs } = require("../../../constants")
6
7
 
7
- const router: Router = new Router()
8
+ const router = new Router()
8
9
 
9
10
  function smtpValidation() {
10
11
  // prettier-ignore
@@ -54,27 +55,27 @@ function oidcValidation() {
54
55
  activated: Joi.boolean().required(),
55
56
  scopes: Joi.array().optional()
56
57
  })
57
- ).required()
58
+ ).required(true)
58
59
  }).unknown(true)
59
60
  }
60
61
 
61
62
  function buildConfigSaveValidation() {
62
63
  // prettier-ignore
63
- return auth.joiValidator.body(Joi.object({
64
+ return joiValidator.body(Joi.object({
64
65
  _id: Joi.string().optional(),
65
66
  _rev: Joi.string().optional(),
66
67
  workspace: Joi.string().optional(),
67
- type: Joi.string().valid(...Object.values(ConfigType)).required(),
68
+ type: Joi.string().valid(...Object.values(Configs)).required(),
68
69
  createdAt: Joi.string().optional(),
69
70
  updatedAt: Joi.string().optional(),
70
71
  config: Joi.alternatives()
71
72
  .conditional("type", {
72
73
  switch: [
73
- { is: ConfigType.SMTP, then: smtpValidation() },
74
- { is: ConfigType.SETTINGS, then: settingValidation() },
75
- { is: ConfigType.ACCOUNT, then: Joi.object().unknown(true) },
76
- { is: ConfigType.GOOGLE, then: googleValidation() },
77
- { is: ConfigType.OIDC, then: oidcValidation() }
74
+ { is: Configs.SMTP, then: smtpValidation() },
75
+ { is: Configs.SETTINGS, then: settingValidation() },
76
+ { is: Configs.ACCOUNT, then: Joi.object().unknown(true) },
77
+ { is: Configs.GOOGLE, then: googleValidation() },
78
+ { is: Configs.OIDC, then: oidcValidation() }
78
79
  ],
79
80
  }),
80
81
  }).required().unknown(true),
@@ -83,27 +84,27 @@ function buildConfigSaveValidation() {
83
84
 
84
85
  function buildUploadValidation() {
85
86
  // prettier-ignore
86
- return auth.joiValidator.params(Joi.object({
87
- type: Joi.string().valid(...Object.values(ConfigType)).required(),
87
+ return joiValidator.params(Joi.object({
88
+ type: Joi.string().valid(...Object.values(Configs)).required(),
88
89
  name: Joi.string().required(),
89
90
  }).required().unknown(true))
90
91
  }
91
92
 
92
93
  function buildConfigGetValidation() {
93
94
  // prettier-ignore
94
- return auth.joiValidator.params(Joi.object({
95
- type: Joi.string().valid(...Object.values(ConfigType)).required()
95
+ return joiValidator.params(Joi.object({
96
+ type: Joi.string().valid(...Object.values(Configs)).required()
96
97
  }).required().unknown(true))
97
98
  }
98
99
 
99
100
  router
100
101
  .post(
101
102
  "/api/global/configs",
102
- auth.adminOnly,
103
+ adminOnly,
103
104
  buildConfigSaveValidation(),
104
105
  controller.save
105
106
  )
106
- .delete("/api/global/configs/:id/:rev", auth.adminOnly, controller.destroy)
107
+ .delete("/api/global/configs/:id/:rev", adminOnly, controller.destroy)
107
108
  .get("/api/global/configs", controller.fetch)
108
109
  .get("/api/global/configs/checklist", controller.configChecklist)
109
110
  .get(
@@ -116,9 +117,9 @@ router
116
117
  .get("/api/global/configs/:type", buildConfigGetValidation(), controller.find)
117
118
  .post(
118
119
  "/api/global/configs/upload/:type/:name",
119
- auth.adminOnly,
120
+ adminOnly,
120
121
  buildUploadValidation(),
121
122
  controller.upload
122
123
  )
123
124
 
124
- export = router
125
+ module.exports = router
@@ -1,14 +1,15 @@
1
- import Router from "@koa/router"
2
- import * as controller from "../../controllers/global/email"
3
- import { EmailTemplatePurpose } from "../../../constants"
4
- import { auth } from "@budibase/backend-core"
5
- import Joi from "joi"
1
+ const Router = require("@koa/router")
2
+ const controller = require("../../controllers/global/email")
3
+ const { EmailTemplatePurpose } = require("../../../constants")
4
+ const { joiValidator } = require("@budibase/backend-core/auth")
5
+ const { adminOnly } = require("@budibase/backend-core/auth")
6
+ const Joi = require("joi")
6
7
 
7
- const router: Router = new Router()
8
+ const router = new Router()
8
9
 
9
10
  function buildEmailSendValidation() {
10
11
  // prettier-ignore
11
- return auth.joiValidator.body(Joi.object({
12
+ return joiValidator.body(Joi.object({
12
13
  email: Joi.string().email({
13
14
  multiple: true,
14
15
  }),
@@ -29,8 +30,8 @@ function buildEmailSendValidation() {
29
30
  router.post(
30
31
  "/api/global/email/send",
31
32
  buildEmailSendValidation(),
32
- auth.adminOnly,
33
+ adminOnly,
33
34
  controller.sendEmail
34
35
  )
35
36
 
36
- export = router
37
+ module.exports = router
@@ -1,7 +1,7 @@
1
1
  import Router from "@koa/router"
2
2
  import * as controller from "../../controllers/global/license"
3
3
 
4
- const router: Router = new Router()
4
+ const router = new Router()
5
5
 
6
6
  router
7
7
  .post("/api/global/license/activate", controller.activate)
@@ -0,0 +1,12 @@
1
+ const Router = require("@koa/router")
2
+ const controller = require("../../controllers/global/roles")
3
+ const { builderOrAdmin } = require("@budibase/backend-core/auth")
4
+
5
+ const router = new Router()
6
+
7
+ router
8
+ .get("/api/global/roles", builderOrAdmin, controller.fetch)
9
+ .get("/api/global/roles/:appId", builderOrAdmin, controller.find)
10
+ .delete("/api/global/roles/:appId", builderOrAdmin, controller.removeAppRole)
11
+
12
+ module.exports = router
@@ -3,7 +3,7 @@ import * as controller from "../../controllers/global/self"
3
3
  import { auth } from "@budibase/backend-core"
4
4
  import { users } from "../validation"
5
5
 
6
- const router: Router = new Router()
6
+ const router = new Router()
7
7
 
8
8
  router
9
9
  .post("/api/global/self/api_key", auth.builderOnly, controller.generateAPIKey)
@@ -15,4 +15,4 @@ router
15
15
  controller.updateSelf
16
16
  )
17
17
 
18
- export = router
18
+ export default router as any
@@ -1,11 +1,11 @@
1
1
  import Router from "@koa/router"
2
2
  import * as controller from "../../controllers/global/templates"
3
- import { TemplatePurpose, TemplateType } from "../../../constants"
3
+ import { TemplatePurpose, TemplateTypes } from "../../../constants"
4
4
  import { auth as authCore } from "@budibase/backend-core"
5
5
  import Joi from "joi"
6
6
  const { adminOnly, joiValidator } = authCore
7
7
 
8
- const router: Router = new Router()
8
+ const router = new Router()
9
9
 
10
10
  function buildTemplateSaveValidation() {
11
11
  // prettier-ignore
@@ -16,7 +16,7 @@ function buildTemplateSaveValidation() {
16
16
  name: Joi.string().allow(null, ""),
17
17
  contents: Joi.string().required(),
18
18
  purpose: Joi.string().required().valid(...Object.values(TemplatePurpose)),
19
- type: Joi.string().required().valid(...Object.values(TemplateType)),
19
+ type: Joi.string().required().valid(...Object.values(TemplateTypes)),
20
20
  }).required().unknown(true).optional())
21
21
  }
22
22
 
@@ -34,4 +34,4 @@ router
34
34
  .get("/api/global/template/:id", controller.find)
35
35
  .delete("/api/global/template/:id/:rev", adminOnly, controller.destroy)
36
36
 
37
- export = router
37
+ export default router