@budibase/worker 2.1.39 → 2.1.40-alpha.1

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