@budibase/backend-core 2.9.19-alpha.0 → 2.9.20

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 (257) hide show
  1. package/dist/index.js +324 -266
  2. package/dist/index.js.map +4 -4
  3. package/dist/index.js.meta.json +1 -1
  4. package/dist/package.json +19 -4
  5. package/dist/plugins.js +1 -1
  6. package/dist/plugins.js.map +1 -1
  7. package/dist/plugins.js.meta.json +1 -1
  8. package/dist/src/security/permissions.d.ts +1 -1
  9. package/dist/tests.js +260 -222
  10. package/dist/tests.js.map +4 -4
  11. package/dist/tests.js.meta.json +1 -1
  12. package/package.json +19 -4
  13. package/__mocks__/aws-sdk.ts +0 -18
  14. package/dist/tsconfig.build.tsbuildinfo +0 -1
  15. package/jest-testcontainers-config.js +0 -8
  16. package/jest.config.ts +0 -35
  17. package/scripts/build.js +0 -6
  18. package/scripts/test.sh +0 -13
  19. package/src/accounts/accounts.ts +0 -82
  20. package/src/accounts/api.ts +0 -59
  21. package/src/accounts/index.ts +0 -1
  22. package/src/auth/auth.ts +0 -208
  23. package/src/auth/index.ts +0 -1
  24. package/src/auth/tests/auth.spec.ts +0 -14
  25. package/src/blacklist/blacklist.ts +0 -54
  26. package/src/blacklist/index.ts +0 -1
  27. package/src/blacklist/tests/blacklist.spec.ts +0 -46
  28. package/src/cache/appMetadata.ts +0 -88
  29. package/src/cache/base/index.ts +0 -92
  30. package/src/cache/generic.ts +0 -30
  31. package/src/cache/index.ts +0 -5
  32. package/src/cache/tests/writethrough.spec.ts +0 -138
  33. package/src/cache/user.ts +0 -69
  34. package/src/cache/writethrough.ts +0 -133
  35. package/src/configs/configs.ts +0 -257
  36. package/src/configs/index.ts +0 -1
  37. package/src/configs/tests/configs.spec.ts +0 -184
  38. package/src/constants/db.ts +0 -63
  39. package/src/constants/index.ts +0 -2
  40. package/src/constants/misc.ts +0 -50
  41. package/src/context/Context.ts +0 -14
  42. package/src/context/identity.ts +0 -58
  43. package/src/context/index.ts +0 -3
  44. package/src/context/mainContext.ts +0 -310
  45. package/src/context/tests/index.spec.ts +0 -147
  46. package/src/context/types.ts +0 -11
  47. package/src/db/Replication.ts +0 -84
  48. package/src/db/constants.ts +0 -10
  49. package/src/db/couch/DatabaseImpl.ts +0 -238
  50. package/src/db/couch/connections.ts +0 -77
  51. package/src/db/couch/index.ts +0 -5
  52. package/src/db/couch/pouchDB.ts +0 -97
  53. package/src/db/couch/pouchDump.ts +0 -0
  54. package/src/db/couch/utils.ts +0 -50
  55. package/src/db/db.ts +0 -39
  56. package/src/db/errors.ts +0 -14
  57. package/src/db/index.ts +0 -12
  58. package/src/db/lucene.ts +0 -732
  59. package/src/db/searchIndexes/index.ts +0 -1
  60. package/src/db/searchIndexes/searchIndexes.ts +0 -62
  61. package/src/db/tests/index.spec.js +0 -25
  62. package/src/db/tests/lucene.spec.ts +0 -298
  63. package/src/db/tests/pouch.spec.js +0 -62
  64. package/src/db/tests/utils.spec.ts +0 -63
  65. package/src/db/utils.ts +0 -207
  66. package/src/db/views.ts +0 -241
  67. package/src/docIds/conversions.ts +0 -59
  68. package/src/docIds/ids.ts +0 -113
  69. package/src/docIds/index.ts +0 -2
  70. package/src/docIds/newid.ts +0 -5
  71. package/src/docIds/params.ts +0 -174
  72. package/src/docUpdates/index.ts +0 -29
  73. package/src/environment.ts +0 -201
  74. package/src/errors/errors.ts +0 -119
  75. package/src/errors/index.ts +0 -1
  76. package/src/events/analytics.ts +0 -6
  77. package/src/events/asyncEvents/index.ts +0 -2
  78. package/src/events/asyncEvents/publisher.ts +0 -12
  79. package/src/events/asyncEvents/queue.ts +0 -22
  80. package/src/events/backfill.ts +0 -183
  81. package/src/events/documentId.ts +0 -56
  82. package/src/events/events.ts +0 -40
  83. package/src/events/identification.ts +0 -310
  84. package/src/events/index.ts +0 -14
  85. package/src/events/processors/AnalyticsProcessor.ts +0 -64
  86. package/src/events/processors/AuditLogsProcessor.ts +0 -93
  87. package/src/events/processors/LoggingProcessor.ts +0 -37
  88. package/src/events/processors/Processors.ts +0 -52
  89. package/src/events/processors/async/DocumentUpdateProcessor.ts +0 -43
  90. package/src/events/processors/index.ts +0 -19
  91. package/src/events/processors/posthog/PosthogProcessor.ts +0 -118
  92. package/src/events/processors/posthog/index.ts +0 -2
  93. package/src/events/processors/posthog/rateLimiting.ts +0 -106
  94. package/src/events/processors/posthog/tests/PosthogProcessor.spec.ts +0 -168
  95. package/src/events/processors/types.ts +0 -1
  96. package/src/events/publishers/account.ts +0 -35
  97. package/src/events/publishers/app.ts +0 -155
  98. package/src/events/publishers/auditLog.ts +0 -26
  99. package/src/events/publishers/auth.ts +0 -73
  100. package/src/events/publishers/automation.ts +0 -110
  101. package/src/events/publishers/backfill.ts +0 -74
  102. package/src/events/publishers/backup.ts +0 -42
  103. package/src/events/publishers/datasource.ts +0 -48
  104. package/src/events/publishers/email.ts +0 -17
  105. package/src/events/publishers/environmentVariable.ts +0 -38
  106. package/src/events/publishers/group.ts +0 -99
  107. package/src/events/publishers/index.ts +0 -24
  108. package/src/events/publishers/installation.ts +0 -38
  109. package/src/events/publishers/layout.ts +0 -26
  110. package/src/events/publishers/license.ts +0 -84
  111. package/src/events/publishers/org.ts +0 -37
  112. package/src/events/publishers/plugin.ts +0 -47
  113. package/src/events/publishers/query.ts +0 -88
  114. package/src/events/publishers/role.ts +0 -62
  115. package/src/events/publishers/rows.ts +0 -29
  116. package/src/events/publishers/screen.ts +0 -36
  117. package/src/events/publishers/serve.ts +0 -43
  118. package/src/events/publishers/table.ts +0 -70
  119. package/src/events/publishers/user.ts +0 -202
  120. package/src/events/publishers/view.ts +0 -107
  121. package/src/featureFlags/index.ts +0 -77
  122. package/src/featureFlags/tests/featureFlags.spec.ts +0 -85
  123. package/src/helpers.ts +0 -9
  124. package/src/index.ts +0 -53
  125. package/src/installation.ts +0 -107
  126. package/src/logging/alerts.ts +0 -26
  127. package/src/logging/correlation/correlation.ts +0 -13
  128. package/src/logging/correlation/index.ts +0 -1
  129. package/src/logging/correlation/middleware.ts +0 -17
  130. package/src/logging/index.ts +0 -4
  131. package/src/logging/pino/logger.ts +0 -232
  132. package/src/logging/pino/middleware.ts +0 -45
  133. package/src/logging/system.ts +0 -81
  134. package/src/logging/tests/system.spec.ts +0 -61
  135. package/src/middleware/adminOnly.ts +0 -9
  136. package/src/middleware/auditLog.ts +0 -6
  137. package/src/middleware/authenticated.ts +0 -193
  138. package/src/middleware/builderOnly.ts +0 -20
  139. package/src/middleware/builderOrAdmin.ts +0 -20
  140. package/src/middleware/csrf.ts +0 -81
  141. package/src/middleware/errorHandling.ts +0 -29
  142. package/src/middleware/index.ts +0 -21
  143. package/src/middleware/internalApi.ts +0 -23
  144. package/src/middleware/joi-validator.ts +0 -45
  145. package/src/middleware/matchers.ts +0 -47
  146. package/src/middleware/passport/datasource/google.ts +0 -95
  147. package/src/middleware/passport/local.ts +0 -54
  148. package/src/middleware/passport/sso/google.ts +0 -77
  149. package/src/middleware/passport/sso/oidc.ts +0 -154
  150. package/src/middleware/passport/sso/sso.ts +0 -165
  151. package/src/middleware/passport/sso/tests/google.spec.ts +0 -67
  152. package/src/middleware/passport/sso/tests/oidc.spec.ts +0 -152
  153. package/src/middleware/passport/sso/tests/sso.spec.ts +0 -197
  154. package/src/middleware/passport/utils.ts +0 -38
  155. package/src/middleware/querystringToBody.ts +0 -28
  156. package/src/middleware/tenancy.ts +0 -36
  157. package/src/middleware/tests/builder.spec.ts +0 -180
  158. package/src/middleware/tests/matchers.spec.ts +0 -134
  159. package/src/migrations/definitions.ts +0 -40
  160. package/src/migrations/index.ts +0 -2
  161. package/src/migrations/migrations.ts +0 -191
  162. package/src/migrations/tests/__snapshots__/migrations.spec.ts.snap +0 -11
  163. package/src/migrations/tests/migrations.spec.ts +0 -64
  164. package/src/objectStore/buckets/app.ts +0 -40
  165. package/src/objectStore/buckets/global.ts +0 -29
  166. package/src/objectStore/buckets/index.ts +0 -3
  167. package/src/objectStore/buckets/plugins.ts +0 -71
  168. package/src/objectStore/buckets/tests/app.spec.ts +0 -171
  169. package/src/objectStore/buckets/tests/global.spec.ts +0 -74
  170. package/src/objectStore/buckets/tests/plugins.spec.ts +0 -111
  171. package/src/objectStore/cloudfront.ts +0 -41
  172. package/src/objectStore/index.ts +0 -3
  173. package/src/objectStore/objectStore.ts +0 -440
  174. package/src/objectStore/utils.ts +0 -27
  175. package/src/platform/index.ts +0 -3
  176. package/src/platform/platformDb.ts +0 -6
  177. package/src/platform/tenants.ts +0 -101
  178. package/src/platform/tests/tenants.spec.ts +0 -26
  179. package/src/platform/users.ts +0 -90
  180. package/src/plugin/index.ts +0 -1
  181. package/src/plugin/tests/validation.spec.ts +0 -83
  182. package/src/plugin/utils.ts +0 -156
  183. package/src/queue/constants.ts +0 -6
  184. package/src/queue/inMemoryQueue.ts +0 -141
  185. package/src/queue/index.ts +0 -2
  186. package/src/queue/listeners.ts +0 -195
  187. package/src/queue/queue.ts +0 -54
  188. package/src/redis/index.ts +0 -6
  189. package/src/redis/init.ts +0 -86
  190. package/src/redis/redis.ts +0 -308
  191. package/src/redis/redlockImpl.ts +0 -139
  192. package/src/redis/utils.ts +0 -117
  193. package/src/security/encryption.ts +0 -179
  194. package/src/security/permissions.ts +0 -159
  195. package/src/security/roles.ts +0 -420
  196. package/src/security/sessions.ts +0 -120
  197. package/src/security/tests/encryption.spec.ts +0 -31
  198. package/src/security/tests/permissions.spec.ts +0 -145
  199. package/src/security/tests/sessions.spec.ts +0 -12
  200. package/src/tenancy/db.ts +0 -6
  201. package/src/tenancy/index.ts +0 -2
  202. package/src/tenancy/tenancy.ts +0 -140
  203. package/src/tenancy/tests/tenancy.spec.ts +0 -184
  204. package/src/timers/index.ts +0 -1
  205. package/src/timers/timers.ts +0 -22
  206. package/src/users/db.ts +0 -460
  207. package/src/users/events.ts +0 -176
  208. package/src/users/index.ts +0 -4
  209. package/src/users/lookup.ts +0 -102
  210. package/src/users/users.ts +0 -276
  211. package/src/users/utils.ts +0 -55
  212. package/src/utils/hashing.ts +0 -14
  213. package/src/utils/index.ts +0 -3
  214. package/src/utils/stringUtils.ts +0 -8
  215. package/src/utils/tests/utils.spec.ts +0 -191
  216. package/src/utils/utils.ts +0 -239
  217. package/tests/core/logging.ts +0 -34
  218. package/tests/core/utilities/index.ts +0 -6
  219. package/tests/core/utilities/jestUtils.ts +0 -30
  220. package/tests/core/utilities/mocks/alerts.ts +0 -3
  221. package/tests/core/utilities/mocks/date.ts +0 -2
  222. package/tests/core/utilities/mocks/events.ts +0 -131
  223. package/tests/core/utilities/mocks/fetch.ts +0 -17
  224. package/tests/core/utilities/mocks/index.ts +0 -10
  225. package/tests/core/utilities/mocks/licenses.ts +0 -107
  226. package/tests/core/utilities/mocks/posthog.ts +0 -7
  227. package/tests/core/utilities/structures/Chance.ts +0 -20
  228. package/tests/core/utilities/structures/accounts.ts +0 -115
  229. package/tests/core/utilities/structures/apps.ts +0 -21
  230. package/tests/core/utilities/structures/common.ts +0 -7
  231. package/tests/core/utilities/structures/db.ts +0 -12
  232. package/tests/core/utilities/structures/documents/index.ts +0 -1
  233. package/tests/core/utilities/structures/documents/platform/index.ts +0 -1
  234. package/tests/core/utilities/structures/documents/platform/installation.ts +0 -12
  235. package/tests/core/utilities/structures/generator.ts +0 -2
  236. package/tests/core/utilities/structures/index.ts +0 -15
  237. package/tests/core/utilities/structures/koa.ts +0 -16
  238. package/tests/core/utilities/structures/licenses.ts +0 -167
  239. package/tests/core/utilities/structures/plugins.ts +0 -19
  240. package/tests/core/utilities/structures/quotas.ts +0 -67
  241. package/tests/core/utilities/structures/scim.ts +0 -80
  242. package/tests/core/utilities/structures/shared.ts +0 -19
  243. package/tests/core/utilities/structures/sso.ts +0 -119
  244. package/tests/core/utilities/structures/tenants.ts +0 -5
  245. package/tests/core/utilities/structures/userGroups.ts +0 -10
  246. package/tests/core/utilities/structures/users.ts +0 -73
  247. package/tests/core/utilities/testContainerUtils.ts +0 -98
  248. package/tests/core/utilities/utils/index.ts +0 -1
  249. package/tests/core/utilities/utils/time.ts +0 -3
  250. package/tests/extra/DBTestConfiguration.ts +0 -36
  251. package/tests/extra/index.ts +0 -2
  252. package/tests/extra/testEnv.ts +0 -95
  253. package/tests/index.ts +0 -1
  254. package/tests/jestEnv.ts +0 -6
  255. package/tests/jestSetup.ts +0 -28
  256. package/tsconfig.build.json +0 -29
  257. package/tsconfig.json +0 -4
@@ -1,179 +0,0 @@
1
- import crypto from "crypto"
2
- import fs from "fs"
3
- import zlib from "zlib"
4
- import env from "../environment"
5
- import { join } from "path"
6
-
7
- const ALGO = "aes-256-ctr"
8
- const SEPARATOR = "-"
9
- const ITERATIONS = 10000
10
- const STRETCH_LENGTH = 32
11
-
12
- const SALT_LENGTH = 16
13
- const IV_LENGTH = 16
14
-
15
- export enum SecretOption {
16
- API = "api",
17
- ENCRYPTION = "encryption",
18
- }
19
-
20
- export function getSecret(secretOption: SecretOption): string {
21
- let secret, secretName
22
- switch (secretOption) {
23
- case SecretOption.ENCRYPTION:
24
- secret = env.ENCRYPTION_KEY
25
- secretName = "ENCRYPTION_KEY"
26
- break
27
- case SecretOption.API:
28
- default:
29
- secret = env.API_ENCRYPTION_KEY
30
- secretName = "API_ENCRYPTION_KEY"
31
- break
32
- }
33
- if (!secret) {
34
- throw new Error(`Secret "${secretName}" has not been set in environment.`)
35
- }
36
- return secret
37
- }
38
-
39
- function stretchString(secret: string, salt: Buffer) {
40
- return crypto.pbkdf2Sync(secret, salt, ITERATIONS, STRETCH_LENGTH, "sha512")
41
- }
42
-
43
- export function encrypt(
44
- input: string,
45
- secretOption: SecretOption = SecretOption.API
46
- ) {
47
- const salt = crypto.randomBytes(SALT_LENGTH)
48
- const stretched = stretchString(getSecret(secretOption), salt)
49
- const cipher = crypto.createCipheriv(ALGO, stretched, salt)
50
- const base = cipher.update(input)
51
- const final = cipher.final()
52
- const encrypted = Buffer.concat([base, final]).toString("hex")
53
- return `${salt.toString("hex")}${SEPARATOR}${encrypted}`
54
- }
55
-
56
- export function decrypt(
57
- input: string,
58
- secretOption: SecretOption = SecretOption.API
59
- ) {
60
- const [salt, encrypted] = input.split(SEPARATOR)
61
- const saltBuffer = Buffer.from(salt, "hex")
62
- const stretched = stretchString(getSecret(secretOption), saltBuffer)
63
- const decipher = crypto.createDecipheriv(ALGO, stretched, saltBuffer)
64
- const base = decipher.update(Buffer.from(encrypted, "hex"))
65
- const final = decipher.final()
66
- return Buffer.concat([base, final]).toString()
67
- }
68
-
69
- export async function encryptFile(
70
- { dir, filename }: { dir: string; filename: string },
71
- secret: string
72
- ) {
73
- const outputFileName = `${filename}.enc`
74
-
75
- const filePath = join(dir, filename)
76
- const inputFile = fs.createReadStream(filePath)
77
- const outputFile = fs.createWriteStream(join(dir, outputFileName))
78
-
79
- const salt = crypto.randomBytes(SALT_LENGTH)
80
- const iv = crypto.randomBytes(IV_LENGTH)
81
- const stretched = stretchString(secret, salt)
82
- const cipher = crypto.createCipheriv(ALGO, stretched, iv)
83
-
84
- outputFile.write(salt)
85
- outputFile.write(iv)
86
-
87
- inputFile.pipe(zlib.createGzip()).pipe(cipher).pipe(outputFile)
88
-
89
- return new Promise<{ filename: string; dir: string }>(r => {
90
- outputFile.on("finish", () => {
91
- r({
92
- filename: outputFileName,
93
- dir,
94
- })
95
- })
96
- })
97
- }
98
-
99
- async function getSaltAndIV(path: string) {
100
- const fileStream = fs.createReadStream(path)
101
-
102
- const salt = await readBytes(fileStream, SALT_LENGTH)
103
- const iv = await readBytes(fileStream, IV_LENGTH)
104
- fileStream.close()
105
- return { salt, iv }
106
- }
107
-
108
- export async function decryptFile(
109
- inputPath: string,
110
- outputPath: string,
111
- secret: string
112
- ) {
113
- const { salt, iv } = await getSaltAndIV(inputPath)
114
- const inputFile = fs.createReadStream(inputPath, {
115
- start: SALT_LENGTH + IV_LENGTH,
116
- })
117
-
118
- const outputFile = fs.createWriteStream(outputPath)
119
-
120
- const stretched = stretchString(secret, salt)
121
- const decipher = crypto.createDecipheriv(ALGO, stretched, iv)
122
-
123
- const unzip = zlib.createGunzip()
124
-
125
- inputFile.pipe(decipher).pipe(unzip).pipe(outputFile)
126
-
127
- return new Promise<void>((res, rej) => {
128
- outputFile.on("finish", () => {
129
- outputFile.close()
130
- res()
131
- })
132
-
133
- inputFile.on("error", e => {
134
- outputFile.close()
135
- rej(e)
136
- })
137
-
138
- decipher.on("error", e => {
139
- outputFile.close()
140
- rej(e)
141
- })
142
-
143
- unzip.on("error", e => {
144
- outputFile.close()
145
- rej(e)
146
- })
147
-
148
- outputFile.on("error", e => {
149
- outputFile.close()
150
- rej(e)
151
- })
152
- })
153
- }
154
-
155
- function readBytes(stream: fs.ReadStream, length: number) {
156
- return new Promise<Buffer>((resolve, reject) => {
157
- let bytesRead = 0
158
- const data: Buffer[] = []
159
-
160
- stream.on("readable", () => {
161
- let chunk
162
-
163
- while ((chunk = stream.read(length - bytesRead)) !== null) {
164
- data.push(chunk)
165
- bytesRead += chunk.length
166
- }
167
-
168
- resolve(Buffer.concat(data))
169
- })
170
-
171
- stream.on("end", () => {
172
- reject(new Error("Insufficient data in the stream."))
173
- })
174
-
175
- stream.on("error", error => {
176
- reject(error)
177
- })
178
- })
179
- }
@@ -1,159 +0,0 @@
1
- import { PermissionType, PermissionLevel } from "@budibase/types"
2
- export { PermissionType, PermissionLevel } from "@budibase/types"
3
- import flatten from "lodash/flatten"
4
- import cloneDeep from "lodash/fp/cloneDeep"
5
-
6
- export type RoleHierarchy = {
7
- permissionId: string
8
- }[]
9
-
10
- export class Permission {
11
- type: PermissionType
12
- level: PermissionLevel
13
-
14
- constructor(type: PermissionType, level: PermissionLevel) {
15
- this.type = type
16
- this.level = level
17
- }
18
- }
19
-
20
- export function levelToNumber(perm: PermissionLevel) {
21
- switch (perm) {
22
- // not everything has execute privileges
23
- case PermissionLevel.EXECUTE:
24
- return 0
25
- case PermissionLevel.READ:
26
- return 1
27
- case PermissionLevel.WRITE:
28
- return 2
29
- case PermissionLevel.ADMIN:
30
- return 3
31
- default:
32
- return -1
33
- }
34
- }
35
-
36
- /**
37
- * Given the specified permission level for the user return the levels they are allowed to carry out.
38
- * @param {string} userPermLevel The permission level of the user.
39
- * @return {string[]} All the permission levels this user is allowed to carry out.
40
- */
41
- export function getAllowedLevels(userPermLevel: PermissionLevel): string[] {
42
- switch (userPermLevel) {
43
- case PermissionLevel.EXECUTE:
44
- return [PermissionLevel.EXECUTE]
45
- case PermissionLevel.READ:
46
- return [PermissionLevel.EXECUTE, PermissionLevel.READ]
47
- case PermissionLevel.WRITE:
48
- case PermissionLevel.ADMIN:
49
- return [
50
- PermissionLevel.EXECUTE,
51
- PermissionLevel.READ,
52
- PermissionLevel.WRITE,
53
- ]
54
- default:
55
- return []
56
- }
57
- }
58
-
59
- export enum BuiltinPermissionID {
60
- PUBLIC = "public",
61
- READ_ONLY = "read_only",
62
- WRITE = "write",
63
- ADMIN = "admin",
64
- POWER = "power",
65
- }
66
-
67
- export const BUILTIN_PERMISSIONS = {
68
- PUBLIC: {
69
- _id: BuiltinPermissionID.PUBLIC,
70
- name: "Public",
71
- permissions: [
72
- new Permission(PermissionType.WEBHOOK, PermissionLevel.EXECUTE),
73
- ],
74
- },
75
- READ_ONLY: {
76
- _id: BuiltinPermissionID.READ_ONLY,
77
- name: "Read only",
78
- permissions: [
79
- new Permission(PermissionType.QUERY, PermissionLevel.READ),
80
- new Permission(PermissionType.TABLE, PermissionLevel.READ),
81
- new Permission(PermissionType.VIEW, PermissionLevel.READ),
82
- ],
83
- },
84
- WRITE: {
85
- _id: BuiltinPermissionID.WRITE,
86
- name: "Read/Write",
87
- permissions: [
88
- new Permission(PermissionType.QUERY, PermissionLevel.WRITE),
89
- new Permission(PermissionType.TABLE, PermissionLevel.WRITE),
90
- new Permission(PermissionType.VIEW, PermissionLevel.READ),
91
- new Permission(PermissionType.AUTOMATION, PermissionLevel.EXECUTE),
92
- ],
93
- },
94
- POWER: {
95
- _id: BuiltinPermissionID.POWER,
96
- name: "Power",
97
- permissions: [
98
- new Permission(PermissionType.TABLE, PermissionLevel.WRITE),
99
- new Permission(PermissionType.USER, PermissionLevel.READ),
100
- new Permission(PermissionType.AUTOMATION, PermissionLevel.EXECUTE),
101
- new Permission(PermissionType.VIEW, PermissionLevel.READ),
102
- new Permission(PermissionType.WEBHOOK, PermissionLevel.READ),
103
- ],
104
- },
105
- ADMIN: {
106
- _id: BuiltinPermissionID.ADMIN,
107
- name: "Admin",
108
- permissions: [
109
- new Permission(PermissionType.TABLE, PermissionLevel.ADMIN),
110
- new Permission(PermissionType.USER, PermissionLevel.ADMIN),
111
- new Permission(PermissionType.AUTOMATION, PermissionLevel.ADMIN),
112
- new Permission(PermissionType.VIEW, PermissionLevel.ADMIN),
113
- new Permission(PermissionType.WEBHOOK, PermissionLevel.READ),
114
- new Permission(PermissionType.QUERY, PermissionLevel.ADMIN),
115
- ],
116
- },
117
- }
118
-
119
- export function getBuiltinPermissions() {
120
- return cloneDeep(BUILTIN_PERMISSIONS)
121
- }
122
-
123
- export function getBuiltinPermissionByID(id: string) {
124
- const perms = Object.values(BUILTIN_PERMISSIONS)
125
- return perms.find(perm => perm._id === id)
126
- }
127
-
128
- export function doesHaveBasePermission(
129
- permType: PermissionType,
130
- permLevel: PermissionLevel,
131
- rolesHierarchy: RoleHierarchy
132
- ) {
133
- const basePermissions = [
134
- ...new Set(rolesHierarchy.map(role => role.permissionId)),
135
- ]
136
- const builtins = Object.values(BUILTIN_PERMISSIONS)
137
- let permissions = flatten(
138
- builtins
139
- .filter(builtin => basePermissions.indexOf(builtin._id) !== -1)
140
- .map(builtin => builtin.permissions)
141
- )
142
- for (let permission of permissions) {
143
- if (
144
- permission.type === permType &&
145
- getAllowedLevels(permission.level).indexOf(permLevel) !== -1
146
- ) {
147
- return true
148
- }
149
- }
150
- return false
151
- }
152
-
153
- export function isPermissionLevelHigherThanRead(level: PermissionLevel) {
154
- return levelToNumber(level) > 1
155
- }
156
-
157
- // utility as a lot of things need simply the builder permission
158
- export const BUILDER = PermissionType.BUILDER
159
- export const GLOBAL_BUILDER = PermissionType.GLOBAL_BUILDER