@budibase/server 0.9.185 → 0.9.189

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 (174) hide show
  1. package/LICENSE +1 -1
  2. package/builder/assets/{index.b48e3580.js → index.5cc4c0d0.js} +1 -1
  3. package/builder/index.html +1 -1
  4. package/coverage/clover.xml +141 -121
  5. package/coverage/coverage-final.json +6 -6
  6. package/coverage/lcov-report/api/controllers/analytics.js.html +1 -1
  7. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  8. package/coverage/lcov-report/api/controllers/application.js.html +1 -1
  9. package/coverage/lcov-report/api/controllers/auth.js.html +1 -1
  10. package/coverage/lcov-report/api/controllers/automation.js.html +1 -1
  11. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  12. package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
  13. package/coverage/lcov-report/api/controllers/component.js.html +1 -1
  14. package/coverage/lcov-report/api/controllers/datasource.js.html +1 -1
  15. package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
  16. package/coverage/lcov-report/api/controllers/hosting.js.html +1 -1
  17. package/coverage/lcov-report/api/controllers/index.html +1 -1
  18. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  19. package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
  20. package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
  21. package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
  22. package/coverage/lcov-report/api/controllers/query.js.html +1 -1
  23. package/coverage/lcov-report/api/controllers/role.js.html +1 -1
  24. package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
  25. package/coverage/lcov-report/api/controllers/row/external.js.html +11 -8
  26. package/coverage/lcov-report/api/controllers/row/index.html +13 -13
  27. package/coverage/lcov-report/api/controllers/row/index.js.html +1 -1
  28. package/coverage/lcov-report/api/controllers/row/internal.js.html +1 -1
  29. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +1 -1
  30. package/coverage/lcov-report/api/controllers/row/utils.js.html +1 -1
  31. package/coverage/lcov-report/api/controllers/screen.js.html +1 -1
  32. package/coverage/lcov-report/api/controllers/script.js.html +1 -1
  33. package/coverage/lcov-report/api/controllers/table/index.html +1 -1
  34. package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
  35. package/coverage/lcov-report/api/controllers/table/utils.js.html +4 -4
  36. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  37. package/coverage/lcov-report/api/controllers/user.js.html +1 -1
  38. package/coverage/lcov-report/api/controllers/view/exporters.js.html +19 -4
  39. package/coverage/lcov-report/api/controllers/view/index.html +17 -17
  40. package/coverage/lcov-report/api/controllers/view/index.js.html +49 -10
  41. package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
  42. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
  43. package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
  44. package/coverage/lcov-report/api/index.html +1 -1
  45. package/coverage/lcov-report/api/index.js.html +1 -1
  46. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  47. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  48. package/coverage/lcov-report/api/routes/application.js.html +1 -1
  49. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  50. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  51. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  52. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  53. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  56. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/hosting.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/index.html +1 -1
  59. package/coverage/lcov-report/api/routes/index.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/row.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  70. package/coverage/lcov-report/api/routes/static.js.html +1 -1
  71. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  72. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  73. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  74. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  75. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  76. package/coverage/lcov-report/automations/actions.js.html +1 -1
  77. package/coverage/lcov-report/automations/automationUtils.js.html +35 -8
  78. package/coverage/lcov-report/automations/bullboard.js.html +1 -1
  79. package/coverage/lcov-report/automations/index.html +15 -15
  80. package/coverage/lcov-report/automations/index.js.html +1 -1
  81. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  82. package/coverage/lcov-report/automations/steps/createRow.js.html +1 -1
  83. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  84. package/coverage/lcov-report/automations/steps/deleteRow.js.html +1 -1
  85. package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
  86. package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
  87. package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
  88. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  89. package/coverage/lcov-report/automations/steps/index.html +1 -1
  90. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  91. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
  92. package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
  93. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  94. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  95. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  96. package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
  97. package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
  98. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  99. package/coverage/lcov-report/automations/thread.js.html +1 -1
  100. package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
  101. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
  102. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  103. package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
  104. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
  105. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
  106. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
  107. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
  108. package/coverage/lcov-report/automations/triggers.js.html +1 -1
  109. package/coverage/lcov-report/automations/utils.js.html +1 -1
  110. package/coverage/lcov-report/constants/index.html +1 -1
  111. package/coverage/lcov-report/constants/index.js.html +1 -1
  112. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  113. package/coverage/lcov-report/constants/screens.js.html +1 -1
  114. package/coverage/lcov-report/db/client.js.html +1 -1
  115. package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
  116. package/coverage/lcov-report/db/index.html +1 -1
  117. package/coverage/lcov-report/db/index.js.html +1 -1
  118. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
  119. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  120. package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
  121. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
  122. package/coverage/lcov-report/db/newid.js.html +1 -1
  123. package/coverage/lcov-report/db/utils.js.html +1 -1
  124. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  125. package/coverage/lcov-report/events/index.html +1 -1
  126. package/coverage/lcov-report/events/index.js.html +1 -1
  127. package/coverage/lcov-report/events/utils.js.html +1 -1
  128. package/coverage/lcov-report/index.html +40 -40
  129. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  130. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  131. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  132. package/coverage/lcov-report/middleware/authorized.js.html +52 -31
  133. package/coverage/lcov-report/middleware/builder.js.html +1 -1
  134. package/coverage/lcov-report/middleware/currentapp.js.html +1 -1
  135. package/coverage/lcov-report/middleware/index.html +13 -13
  136. package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
  137. package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
  138. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  139. package/coverage/lcov-report/middleware/usageQuota.js.html +1 -1
  140. package/coverage/lcov-report/middleware/utils.js.html +1 -1
  141. package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
  142. package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
  143. package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
  144. package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
  145. package/coverage/lcov-report/utilities/global.js.html +1 -1
  146. package/coverage/lcov-report/utilities/index.html +1 -1
  147. package/coverage/lcov-report/utilities/index.js.html +1 -1
  148. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +1 -1
  149. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  150. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  151. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  152. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  153. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +1 -1
  154. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
  155. package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
  156. package/coverage/lcov-report/utilities/security.js.html +1 -1
  157. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  158. package/coverage/lcov-report/utilities/users.js.html +1 -1
  159. package/coverage/lcov-report/utilities/workerRequests.js.html +1 -1
  160. package/coverage/lcov.info +234 -193
  161. package/dist/api/controllers/row/external.js +2 -1
  162. package/dist/api/controllers/view/exporters.js +4 -0
  163. package/dist/api/controllers/view/index.js +14 -2
  164. package/dist/automations/automationUtils.js +7 -0
  165. package/dist/middleware/authorized.js +20 -10
  166. package/dist/package.json +6 -6
  167. package/dist/tsconfig.tsbuildinfo +1 -1
  168. package/package.json +7 -7
  169. package/src/api/controllers/row/external.js +2 -1
  170. package/src/api/controllers/view/exporters.js +5 -0
  171. package/src/api/controllers/view/index.js +15 -2
  172. package/src/automations/automationUtils.js +9 -0
  173. package/src/middleware/authorized.js +24 -17
  174. package/src/middleware/tests/authorized.spec.js +2 -0
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">77.48% </span>
26
+ <span class="strong">77.51% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>3120/4027</span>
28
+ <span class='fraction'>3137/4047</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">58.6% </span>
33
+ <span class="strong">58.73% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>899/1534</span>
35
+ <span class='fraction'>912/1553</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">74.82% </span>
40
+ <span class="strong">74.87% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>422/564</span>
42
+ <span class='fraction'>423/565</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">77.77% </span>
47
+ <span class="strong">77.81% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>3082/3963</span>
49
+ <span class='fraction'>3099/3983</span>
50
50
  </div>
51
51
 
52
52
 
@@ -104,17 +104,17 @@
104
104
 
105
105
  <tr>
106
106
  <td class="file medium" data-value="api/controllers/row"><a href="api/controllers/row/index.html">api/controllers/row</a></td>
107
- <td data-value="52.76" class="pic medium">
107
+ <td data-value="52.68" class="pic medium">
108
108
  <div class="chart"><div class="cover-fill" style="width: 52%"></div><div class="cover-empty" style="width: 48%"></div></div>
109
109
  </td>
110
- <td data-value="52.76" class="pct medium">52.76%</td>
111
- <td data-value="597" class="abs medium">315/597</td>
112
- <td data-value="33.88" class="pct low">33.88%</td>
113
- <td data-value="245" class="abs low">83/245</td>
110
+ <td data-value="52.68" class="pct medium">52.68%</td>
111
+ <td data-value="598" class="abs medium">315/598</td>
112
+ <td data-value="33.6" class="pct low">33.6%</td>
113
+ <td data-value="247" class="abs low">83/247</td>
114
114
  <td data-value="43.18" class="pct low">43.18%</td>
115
115
  <td data-value="88" class="abs low">38/88</td>
116
- <td data-value="52.82" class="pct medium">52.82%</td>
117
- <td data-value="585" class="abs medium">309/585</td>
116
+ <td data-value="52.73" class="pct medium">52.73%</td>
117
+ <td data-value="586" class="abs medium">309/586</td>
118
118
  </tr>
119
119
 
120
120
  <tr>
@@ -134,17 +134,17 @@
134
134
 
135
135
  <tr>
136
136
  <td class="file medium" data-value="api/controllers/view"><a href="api/controllers/view/index.html">api/controllers/view</a></td>
137
- <td data-value="73.14" class="pic medium">
138
- <div class="chart"><div class="cover-fill" style="width: 73%"></div><div class="cover-empty" style="width: 27%"></div></div>
137
+ <td data-value="74.32" class="pic medium">
138
+ <div class="chart"><div class="cover-fill" style="width: 74%"></div><div class="cover-empty" style="width: 26%"></div></div>
139
139
  </td>
140
- <td data-value="73.14" class="pct medium">73.14%</td>
141
- <td data-value="175" class="abs medium">128/175</td>
142
- <td data-value="62.34" class="pct medium">62.34%</td>
143
- <td data-value="77" class="abs medium">48/77</td>
140
+ <td data-value="74.32" class="pct medium">74.32%</td>
141
+ <td data-value="183" class="abs medium">136/183</td>
142
+ <td data-value="63.86" class="pct medium">63.86%</td>
143
+ <td data-value="83" class="abs medium">53/83</td>
144
144
  <td data-value="80.95" class="pct high">80.95%</td>
145
145
  <td data-value="21" class="abs high">17/21</td>
146
- <td data-value="73.41" class="pct medium">73.41%</td>
147
- <td data-value="173" class="abs medium">127/173</td>
146
+ <td data-value="74.59" class="pct medium">74.59%</td>
147
+ <td data-value="181" class="abs medium">135/181</td>
148
148
  </tr>
149
149
 
150
150
  <tr>
@@ -164,17 +164,17 @@
164
164
 
165
165
  <tr>
166
166
  <td class="file high" data-value="automations"><a href="automations/index.html">automations</a></td>
167
- <td data-value="86.61" class="pic high">
167
+ <td data-value="86.05" class="pic high">
168
168
  <div class="chart"><div class="cover-fill" style="width: 86%"></div><div class="cover-empty" style="width: 14%"></div></div>
169
169
  </td>
170
- <td data-value="86.61" class="pct high">86.61%</td>
171
- <td data-value="254" class="abs high">220/254</td>
172
- <td data-value="77.36" class="pct medium">77.36%</td>
173
- <td data-value="106" class="abs medium">82/106</td>
170
+ <td data-value="86.05" class="pct high">86.05%</td>
171
+ <td data-value="258" class="abs high">222/258</td>
172
+ <td data-value="76.99" class="pct medium">76.99%</td>
173
+ <td data-value="113" class="abs medium">87/113</td>
174
174
  <td data-value="93.1" class="pct high">93.1%</td>
175
175
  <td data-value="29" class="abs high">27/29</td>
176
- <td data-value="86.61" class="pct high">86.61%</td>
177
- <td data-value="254" class="abs high">220/254</td>
176
+ <td data-value="86.05" class="pct high">86.05%</td>
177
+ <td data-value="258" class="abs high">222/258</td>
178
178
  </tr>
179
179
 
180
180
  <tr>
@@ -284,17 +284,17 @@
284
284
 
285
285
  <tr>
286
286
  <td class="file high" data-value="middleware"><a href="middleware/index.html">middleware</a></td>
287
- <td data-value="89.81" class="pic high">
288
- <div class="chart"><div class="cover-fill" style="width: 89%"></div><div class="cover-empty" style="width: 11%"></div></div>
287
+ <td data-value="90.13" class="pic high">
288
+ <div class="chart"><div class="cover-fill" style="width: 90%"></div><div class="cover-empty" style="width: 10%"></div></div>
289
289
  </td>
290
- <td data-value="89.81" class="pct high">89.81%</td>
291
- <td data-value="216" class="abs high">194/216</td>
292
- <td data-value="79.45" class="pct medium">79.45%</td>
293
- <td data-value="146" class="abs medium">116/146</td>
290
+ <td data-value="90.13" class="pct high">90.13%</td>
291
+ <td data-value="223" class="abs high">201/223</td>
292
+ <td data-value="79.33" class="pct medium">79.33%</td>
293
+ <td data-value="150" class="abs medium">119/150</td>
294
294
  <td data-value="100" class="pct high">100%</td>
295
- <td data-value="28" class="abs high">28/28</td>
296
- <td data-value="89.72" class="pct high">89.72%</td>
297
- <td data-value="214" class="abs high">192/214</td>
295
+ <td data-value="29" class="abs high">29/29</td>
296
+ <td data-value="90.05" class="pct high">90.05%</td>
297
+ <td data-value="221" class="abs high">199/221</td>
298
298
  </tr>
299
299
 
300
300
  <tr>
@@ -365,7 +365,7 @@
365
365
  <div class='footer quiet pad2 space-top1 center small'>
366
366
  Code coverage generated by
367
367
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
368
- at Thu Nov 11 2021 12:11:57 GMT+0000 (Coordinated Universal Time)
368
+ at Mon Nov 22 2021 18:12:17 GMT+0000 (Coordinated Universal Time)
369
369
  </div>
370
370
  </div>
371
371
  <script src="prettify.js"></script>
@@ -64,7 +64,7 @@
64
64
  <div class='footer quiet pad2 space-top1 center small'>
65
65
  Code coverage generated by
66
66
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
67
- at Thu Nov 11 2021 12:11:57 GMT+0000 (Coordinated Universal Time)
67
+ at Mon Nov 22 2021 18:12:17 GMT+0000 (Coordinated Universal Time)
68
68
  </div>
69
69
  </div>
70
70
  <script src="../../prettify.js"></script>
@@ -95,7 +95,7 @@
95
95
  <div class='footer quiet pad2 space-top1 center small'>
96
96
  Code coverage generated by
97
97
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
98
- at Thu Nov 11 2021 12:11:57 GMT+0000 (Coordinated Universal Time)
98
+ at Mon Nov 22 2021 18:12:17 GMT+0000 (Coordinated Universal Time)
99
99
  </div>
100
100
  </div>
101
101
  <script src="../../prettify.js"></script>
@@ -121,7 +121,7 @@ exports.middleware =
121
121
  <div class='footer quiet pad2 space-top1 center small'>
122
122
  Code coverage generated by
123
123
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
124
- at Thu Nov 11 2021 12:11:57 GMT+0000 (Coordinated Universal Time)
124
+ at Mon Nov 22 2021 18:12:17 GMT+0000 (Coordinated Universal Time)
125
125
  </div>
126
126
  </div>
127
127
  <script src="../prettify.js"></script>
@@ -25,28 +25,28 @@
25
25
  <div class='fl pad1y space-right2'>
26
26
  <span class="strong">100% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>27/27</span>
28
+ <span class='fraction'>34/34</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">90.91% </span>
33
+ <span class="strong">88.46% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>20/22</span>
35
+ <span class='fraction'>23/26</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
40
  <span class="strong">100% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>3/3</span>
42
+ <span class='fraction'>4/4</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>27/27</span>
49
+ <span class='fraction'>34/34</span>
50
50
  </div>
51
51
 
52
52
 
@@ -119,10 +119,20 @@
119
119
  <a name='L60'></a><a href='#L60'>60</a>
120
120
  <a name='L61'></a><a href='#L61'>61</a>
121
121
  <a name='L62'></a><a href='#L62'>62</a>
122
- <a name='L63'></a><a href='#L63'>63</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">24x</span>
122
+ <a name='L63'></a><a href='#L63'>63</a>
123
+ <a name='L64'></a><a href='#L64'>64</a>
124
+ <a name='L65'></a><a href='#L65'>65</a>
125
+ <a name='L66'></a><a href='#L66'>66</a>
126
+ <a name='L67'></a><a href='#L67'>67</a>
127
+ <a name='L68'></a><a href='#L68'>68</a>
128
+ <a name='L69'></a><a href='#L69'>69</a>
129
+ <a name='L70'></a><a href='#L70'>70</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
123
130
  <span class="cline-any cline-neutral">&nbsp;</span>
124
131
  <span class="cline-any cline-neutral">&nbsp;</span>
125
132
  <span class="cline-any cline-neutral">&nbsp;</span>
133
+ <span class="cline-any cline-yes">24x</span>
134
+ <span class="cline-any cline-neutral">&nbsp;</span>
135
+ <span class="cline-any cline-neutral">&nbsp;</span>
126
136
  <span class="cline-any cline-neutral">&nbsp;</span>
127
137
  <span class="cline-any cline-yes">24x</span>
128
138
  <span class="cline-any cline-yes">24x</span>
@@ -149,12 +159,6 @@
149
159
  <span class="cline-any cline-yes">148x</span>
150
160
  <span class="cline-any cline-neutral">&nbsp;</span>
151
161
  <span class="cline-any cline-yes">148x</span>
152
- <span class="cline-any cline-yes">148x</span>
153
- <span class="cline-any cline-neutral">&nbsp;</span>
154
- <span class="cline-any cline-neutral">&nbsp;</span>
155
- <span class="cline-any cline-neutral">&nbsp;</span>
156
- <span class="cline-any cline-neutral">&nbsp;</span>
157
- <span class="cline-any cline-neutral">&nbsp;</span>
158
162
  <span class="cline-any cline-neutral">&nbsp;</span>
159
163
  <span class="cline-any cline-yes">148x</span>
160
164
  <span class="cline-any cline-yes">148x</span>
@@ -164,27 +168,40 @@
164
168
  <span class="cline-any cline-yes">29x</span>
165
169
  <span class="cline-any cline-neutral">&nbsp;</span>
166
170
  <span class="cline-any cline-neutral">&nbsp;</span>
171
+ <span class="cline-any cline-neutral">&nbsp;</span>
172
+ <span class="cline-any cline-yes">7x</span>
167
173
  <span class="cline-any cline-yes">7x</span>
168
174
  <span class="cline-any cline-neutral">&nbsp;</span>
169
175
  <span class="cline-any cline-neutral">&nbsp;</span>
176
+ <span class="cline-any cline-yes">7x</span>
177
+ <span class="cline-any cline-yes">7x</span>
178
+ <span class="cline-any cline-yes">7x</span>
179
+ <span class="cline-any cline-yes">3x</span>
170
180
  <span class="cline-any cline-neutral">&nbsp;</span>
171
- <span class="cline-any cline-yes">1x</span>
172
181
  <span class="cline-any cline-neutral">&nbsp;</span>
182
+ <span class="cline-any cline-yes">7x</span>
183
+ <span class="cline-any cline-yes">1x</span>
184
+ <span class="cline-any cline-yes">1x</span>
173
185
  <span class="cline-any cline-neutral">&nbsp;</span>
186
+ <span class="cline-any cline-yes">1x</span>
174
187
  <span class="cline-any cline-yes">6x</span>
175
188
  <span class="cline-any cline-yes">6x</span>
176
189
  <span class="cline-any cline-neutral">&nbsp;</span>
177
190
  <span class="cline-any cline-neutral">&nbsp;</span>
191
+ <span class="cline-any cline-neutral">&nbsp;</span>
178
192
  <span class="cline-any cline-yes">4x</span>
179
193
  <span class="cline-any cline-yes">4x</span>
180
194
  <span class="cline-any cline-neutral">&nbsp;</span>
181
195
  <span class="cline-any cline-neutral">&nbsp;</span>
182
196
  <span class="cline-any cline-yes">4x</span>
183
197
  <span class="cline-any cline-neutral">&nbsp;</span>
184
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const { getUserPermissions } = require("@budibase/auth/roles")
198
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const {
199
+ getUserRoleHierarchy,
200
+ getRequiredResourceRole,
201
+ BUILTIN_ROLE_IDS,
202
+ } = require("@budibase/auth/roles")
185
203
  const {
186
204
  PermissionTypes,
187
- doesHaveResourcePermission,
188
205
  doesHaveBasePermission,
189
206
  } = require("@budibase/auth/permissions")
190
207
  const builderMiddleware = require("./builder")
@@ -211,13 +228,7 @@ module.exports =
211
228
  await builderMiddleware(ctx, permType)
212
229
  &nbsp;
213
230
  const isAuthed = ctx.isAuthenticated
214
- const { basePermissions, permissions } = await getUserPermissions(
215
- ctx.appId,
216
- ctx.roleId
217
- )
218
- &nbsp;
219
231
  // builders for now have permission to do anything
220
- // TODO: in future should consider separating permissions with an require("@budibase/auth").isClient check
221
232
  let isBuilder = ctx.user &amp;&amp; ctx.user.builder &amp;&amp; ctx.user.builder.global
222
233
  const isBuilderApi = permType === PermissionTypes.BUILDER
223
234
  if (isBuilder) {
@@ -226,20 +237,30 @@ module.exports =
226
237
  return ctx.throw(403, "Not Authorized")
227
238
  }
228
239
  &nbsp;
229
- if (
230
- hasResource(ctx) &amp;&amp;
231
- doesHaveResourcePermission(permissions, permLevel, ctx)
232
- ) {
233
- return next()
240
+ // need to check this first, in-case public access, don't check authed until last
241
+ const roleId = ctx.roleId || BUILTIN_ROLE_IDS.PUBLIC
242
+ const hierarchy = await getUserRoleHierarchy(ctx.appId, roleId, {
243
+ idOnly: false,
244
+ })
245
+ const permError = "User does not have permission"
246
+ let possibleRoleIds = []
247
+ if (hasResource(ctx)) {
248
+ possibleRoleIds = await getRequiredResourceRole(ctx.appId, permLevel, ctx)
249
+ }
250
+ // check if we found a role, if not fallback to base permissions
251
+ if (possibleRoleIds.length &gt; 0) {
252
+ const found = hierarchy.find(
253
+ role =&gt; possibleRoleIds.indexOf(role._id) !== -1
254
+ )
255
+ return found ? next() : <span class="branch-1 cbranch-no" title="branch not covered" >ctx.throw(403, permError)</span>
256
+ } else <span class="missing-if-branch" title="else path not taken" >E</span>if (!doesHaveBasePermission(permType, permLevel, hierarchy)) {
257
+ ctx.throw(403, permError)
234
258
  }
235
259
  &nbsp;
260
+ // if they are not authed, then anything using the authorized middleware will fail
236
261
  <span class="missing-if-branch" title="else path not taken" >E</span>if (!isAuthed) {
237
262
  ctx.throw(403, "Session not authenticated")
238
263
  }
239
- &nbsp;
240
- <span class="missing-if-branch" title="else path not taken" >E</span>if (!doesHaveBasePermission(permType, permLevel, basePermissions)) {
241
- ctx.throw(403, "User does not have permission")
242
- }
243
264
  &nbsp;
244
265
  return next()
245
266
  }
@@ -250,7 +271,7 @@ module.exports =
250
271
  <div class='footer quiet pad2 space-top1 center small'>
251
272
  Code coverage generated by
252
273
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
253
- at Thu Nov 11 2021 12:11:57 GMT+0000 (Coordinated Universal Time)
274
+ at Mon Nov 22 2021 18:12:17 GMT+0000 (Coordinated Universal Time)
254
275
  </div>
255
276
  </div>
256
277
  <script src="../prettify.js"></script>
@@ -289,7 +289,7 @@ module.exports = async (ctx, permType) =&gt; {
289
289
  <div class='footer quiet pad2 space-top1 center small'>
290
290
  Code coverage generated by
291
291
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
292
- at Thu Nov 11 2021 12:11:57 GMT+0000 (Coordinated Universal Time)
292
+ at Mon Nov 22 2021 18:12:17 GMT+0000 (Coordinated Universal Time)
293
293
  </div>
294
294
  </div>
295
295
  <script src="../prettify.js"></script>
@@ -385,7 +385,7 @@ module.exports = async (ctx, next) =&gt; {
385
385
  <div class='footer quiet pad2 space-top1 center small'>
386
386
  Code coverage generated by
387
387
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
388
- at Thu Nov 11 2021 12:11:57 GMT+0000 (Coordinated Universal Time)
388
+ at Mon Nov 22 2021 18:12:17 GMT+0000 (Coordinated Universal Time)
389
389
  </div>
390
390
  </div>
391
391
  <script src="../prettify.js"></script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">89.81% </span>
26
+ <span class="strong">90.13% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>194/216</span>
28
+ <span class='fraction'>201/223</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">79.45% </span>
33
+ <span class="strong">79.33% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>116/146</span>
35
+ <span class='fraction'>119/150</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
40
  <span class="strong">100% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>28/28</span>
42
+ <span class='fraction'>29/29</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">89.72% </span>
47
+ <span class="strong">90.05% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>192/214</span>
49
+ <span class='fraction'>199/221</span>
50
50
  </div>
51
51
 
52
52
 
@@ -93,13 +93,13 @@
93
93
  <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
94
94
  </td>
95
95
  <td data-value="100" class="pct high">100%</td>
96
- <td data-value="27" class="abs high">27/27</td>
97
- <td data-value="90.91" class="pct high">90.91%</td>
98
- <td data-value="22" class="abs high">20/22</td>
96
+ <td data-value="34" class="abs high">34/34</td>
97
+ <td data-value="88.46" class="pct high">88.46%</td>
98
+ <td data-value="26" class="abs high">23/26</td>
99
99
  <td data-value="100" class="pct high">100%</td>
100
- <td data-value="3" class="abs high">3/3</td>
100
+ <td data-value="4" class="abs high">4/4</td>
101
101
  <td data-value="100" class="pct high">100%</td>
102
- <td data-value="27" class="abs high">27/27</td>
102
+ <td data-value="34" class="abs high">34/34</td>
103
103
  </tr>
104
104
 
105
105
  <tr>
@@ -215,7 +215,7 @@
215
215
  <div class='footer quiet pad2 space-top1 center small'>
216
216
  Code coverage generated by
217
217
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
218
- at Thu Nov 11 2021 12:11:57 GMT+0000 (Coordinated Universal Time)
218
+ at Mon Nov 22 2021 18:12:17 GMT+0000 (Coordinated Universal Time)
219
219
  </div>
220
220
  </div>
221
221
  <script src="../prettify.js"></script>
@@ -148,7 +148,7 @@ module.exports.params = schema =&gt; {
148
148
  <div class='footer quiet pad2 space-top1 center small'>
149
149
  Code coverage generated by
150
150
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
151
- at Thu Nov 11 2021 12:11:57 GMT+0000 (Coordinated Universal Time)
151
+ at Mon Nov 22 2021 18:12:17 GMT+0000 (Coordinated Universal Time)
152
152
  </div>
153
153
  </div>
154
154
  <script src="../prettify.js"></script>
@@ -247,7 +247,7 @@ module.exports.bodySubResource = (main, sub) =&gt; {
247
247
  <div class='footer quiet pad2 space-top1 center small'>
248
248
  Code coverage generated by
249
249
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
250
- at Thu Nov 11 2021 12:11:57 GMT+0000 (Coordinated Universal Time)
250
+ at Mon Nov 22 2021 18:12:17 GMT+0000 (Coordinated Universal Time)
251
251
  </div>
252
252
  </div>
253
253
  <script src="../prettify.js"></script>
@@ -94,7 +94,7 @@ module.exports = async (ctx, next) =&gt; {
94
94
  <div class='footer quiet pad2 space-top1 center small'>
95
95
  Code coverage generated by
96
96
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
97
- at Thu Nov 11 2021 12:11:57 GMT+0000 (Coordinated Universal Time)
97
+ at Mon Nov 22 2021 18:12:17 GMT+0000 (Coordinated Universal Time)
98
98
  </div>
99
99
  </div>
100
100
  <script src="../prettify.js"></script>
@@ -328,7 +328,7 @@ module.exports = async (ctx, next) =&gt; {
328
328
  <div class='footer quiet pad2 space-top1 center small'>
329
329
  Code coverage generated by
330
330
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
331
- at Thu Nov 11 2021 12:11:57 GMT+0000 (Coordinated Universal Time)
331
+ at Mon Nov 22 2021 18:12:17 GMT+0000 (Coordinated Universal Time)
332
332
  </div>
333
333
  </div>
334
334
  <script src="../prettify.js"></script>
@@ -85,7 +85,7 @@ exports.isWebhookEndpoint = ctx =&gt; {
85
85
  <div class='footer quiet pad2 space-top1 center small'>
86
86
  Code coverage generated by
87
87
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
88
- at Thu Nov 11 2021 12:11:57 GMT+0000 (Coordinated Universal Time)
88
+ at Mon Nov 22 2021 18:12:17 GMT+0000 (Coordinated Universal Time)
89
89
  </div>
90
90
  </div>
91
91
  <script src="../prettify.js"></script>
@@ -109,7 +109,7 @@ const SALT_ROUNDS = <span class="cstat-no" title="statement not covered" >env.SA
109
109
  <div class='footer quiet pad2 space-top1 center small'>
110
110
  Code coverage generated by
111
111
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
112
- at Thu Nov 11 2021 12:11:57 GMT+0000 (Coordinated Universal Time)
112
+ at Mon Nov 22 2021 18:12:17 GMT+0000 (Coordinated Universal Time)
113
113
  </div>
114
114
  </div>
115
115
  <script src="../prettify.js"></script>
@@ -94,7 +94,7 @@ module.exports.budibaseTempDir = budibaseTempDir
94
94
  <div class='footer quiet pad2 space-top1 center small'>
95
95
  Code coverage generated by
96
96
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
97
- at Thu Nov 11 2021 12:11:57 GMT+0000 (Coordinated Universal Time)
97
+ at Mon Nov 22 2021 18:12:17 GMT+0000 (Coordinated Universal Time)
98
98
  </div>
99
99
  </div>
100
100
  <script src="../prettify.js"></script>
@@ -130,7 +130,7 @@ exports.resolve = <span class="fstat-no" title="function not covered" >fu</span>
130
130
  <div class='footer quiet pad2 space-top1 center small'>
131
131
  Code coverage generated by
132
132
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
133
- at Thu Nov 11 2021 12:11:57 GMT+0000 (Coordinated Universal Time)
133
+ at Mon Nov 22 2021 18:12:17 GMT+0000 (Coordinated Universal Time)
134
134
  </div>
135
135
  </div>
136
136
  <script src="../prettify.js"></script>
@@ -358,7 +358,7 @@ module.exports = {
358
358
  <div class='footer quiet pad2 space-top1 center small'>
359
359
  Code coverage generated by
360
360
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
361
- at Thu Nov 11 2021 12:11:57 GMT+0000 (Coordinated Universal Time)
361
+ at Mon Nov 22 2021 18:12:17 GMT+0000 (Coordinated Universal Time)
362
362
  </div>
363
363
  </div>
364
364
  <script src="../prettify.js"></script>
@@ -352,7 +352,7 @@ exports.getGlobalUsersFromMetadata = async (appId, users) =&gt; {
352
352
  <div class='footer quiet pad2 space-top1 center small'>
353
353
  Code coverage generated by
354
354
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
355
- at Thu Nov 11 2021 12:11:57 GMT+0000 (Coordinated Universal Time)
355
+ at Mon Nov 22 2021 18:12:17 GMT+0000 (Coordinated Universal Time)
356
356
  </div>
357
357
  </div>
358
358
  <script src="../prettify.js"></script>
@@ -245,7 +245,7 @@
245
245
  <div class='footer quiet pad2 space-top1 center small'>
246
246
  Code coverage generated by
247
247
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
248
- at Thu Nov 11 2021 12:11:57 GMT+0000 (Coordinated Universal Time)
248
+ at Mon Nov 22 2021 18:12:17 GMT+0000 (Coordinated Universal Time)
249
249
  </div>
250
250
  </div>
251
251
  <script src="../prettify.js"></script>
@@ -487,7 +487,7 @@ exports.stringToReadStream = <span class="fstat-no" title="function not covered"
487
487
  <div class='footer quiet pad2 space-top1 center small'>
488
488
  Code coverage generated by
489
489
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
490
- at Thu Nov 11 2021 12:11:57 GMT+0000 (Coordinated Universal Time)
490
+ at Mon Nov 22 2021 18:12:17 GMT+0000 (Coordinated Universal Time)
491
491
  </div>
492
492
  </div>
493
493
  <script src="../prettify.js"></script>
@@ -346,7 +346,7 @@ module.exports = InMemoryQueue
346
346
  <div class='footer quiet pad2 space-top1 center small'>
347
347
  Code coverage generated by
348
348
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
349
- at Thu Nov 11 2021 12:11:57 GMT+0000 (Coordinated Universal Time)
349
+ at Mon Nov 22 2021 18:12:17 GMT+0000 (Coordinated Universal Time)
350
350
  </div>
351
351
  </div>
352
352
  <script src="../../prettify.js"></script>
@@ -95,7 +95,7 @@
95
95
  <div class='footer quiet pad2 space-top1 center small'>
96
96
  Code coverage generated by
97
97
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
98
- at Thu Nov 11 2021 12:11:57 GMT+0000 (Coordinated Universal Time)
98
+ at Mon Nov 22 2021 18:12:17 GMT+0000 (Coordinated Universal Time)
99
99
  </div>
100
100
  </div>
101
101
  <script src="../../prettify.js"></script>
@@ -95,7 +95,7 @@
95
95
  <div class='footer quiet pad2 space-top1 center small'>
96
96
  Code coverage generated by
97
97
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
98
- at Thu Nov 11 2021 12:11:57 GMT+0000 (Coordinated Universal Time)
98
+ at Mon Nov 22 2021 18:12:17 GMT+0000 (Coordinated Universal Time)
99
99
  </div>
100
100
  </div>
101
101
  <script src="../../prettify.js"></script>
@@ -139,7 +139,7 @@ exports.createRoutingView = createRoutingView
139
139
  <div class='footer quiet pad2 space-top1 center small'>
140
140
  Code coverage generated by
141
141
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
142
- at Thu Nov 11 2021 12:11:57 GMT+0000 (Coordinated Universal Time)
142
+ at Mon Nov 22 2021 18:12:17 GMT+0000 (Coordinated Universal Time)
143
143
  </div>
144
144
  </div>
145
145
  <script src="../../prettify.js"></script>