@budibase/server 1.0.46-alpha.4 → 1.0.46-alpha.8

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 (226) hide show
  1. package/builder/assets/{index.c21ee1fb.js → index.51efc215.js} +243 -243
  2. package/builder/assets/{index.243ca52c.css → index.dd9e386f.css} +1 -1
  3. package/builder/assets/{vendor.10e2ad1b.js → vendor.3bd2f661.js} +1 -1
  4. package/builder/index.html +3 -3
  5. package/coverage/clover.xml +1794 -1793
  6. package/coverage/coverage-final.json +136 -138
  7. package/coverage/lcov-report/api/controllers/analytics.js.html +6 -6
  8. package/coverage/lcov-report/api/controllers/apikeys.js.html +6 -6
  9. package/coverage/lcov-report/api/controllers/application.js.html +209 -125
  10. package/coverage/lcov-report/api/controllers/auth.js.html +23 -11
  11. package/coverage/lcov-report/api/controllers/automation.js.html +21 -21
  12. package/coverage/lcov-report/api/controllers/backup.js.html +3 -3
  13. package/coverage/lcov-report/api/controllers/cloud.js.html +12 -12
  14. package/coverage/lcov-report/api/controllers/component.js.html +5 -5
  15. package/coverage/lcov-report/api/controllers/datasource.js.html +58 -22
  16. package/coverage/lcov-report/api/controllers/dev.js.html +19 -19
  17. package/coverage/lcov-report/api/controllers/index.html +38 -53
  18. package/coverage/lcov-report/api/controllers/integration.js.html +4 -4
  19. package/coverage/lcov-report/api/controllers/layout.js.html +6 -6
  20. package/coverage/lcov-report/api/controllers/metadata.js.html +9 -9
  21. package/coverage/lcov-report/api/controllers/permission.js.html +15 -15
  22. package/coverage/lcov-report/api/controllers/query/index.html +15 -15
  23. package/coverage/lcov-report/api/controllers/query/index.js.html +61 -28
  24. package/coverage/lcov-report/api/controllers/query/validation.js.html +9 -9
  25. package/coverage/lcov-report/api/controllers/role.js.html +9 -9
  26. package/coverage/lcov-report/api/controllers/routing.js.html +9 -9
  27. package/coverage/lcov-report/api/controllers/row/external.js.html +16 -16
  28. package/coverage/lcov-report/api/controllers/row/index.html +5 -5
  29. package/coverage/lcov-report/api/controllers/row/index.js.html +13 -13
  30. package/coverage/lcov-report/api/controllers/row/internal.js.html +26 -26
  31. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +8 -8
  32. package/coverage/lcov-report/api/controllers/row/utils.js.html +17 -26
  33. package/coverage/lcov-report/api/controllers/screen.js.html +7 -7
  34. package/coverage/lcov-report/api/controllers/script.js.html +4 -4
  35. package/coverage/lcov-report/api/controllers/table/external.js.html +12 -12
  36. package/coverage/lcov-report/api/controllers/table/index.html +1 -1
  37. package/coverage/lcov-report/api/controllers/table/index.js.html +14 -14
  38. package/coverage/lcov-report/api/controllers/table/internal.js.html +10 -10
  39. package/coverage/lcov-report/api/controllers/table/utils.js.html +26 -26
  40. package/coverage/lcov-report/api/controllers/templates.js.html +5 -5
  41. package/coverage/lcov-report/api/controllers/user.js.html +30 -24
  42. package/coverage/lcov-report/api/controllers/view/exporters.js.html +4 -4
  43. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  44. package/coverage/lcov-report/api/controllers/view/index.js.html +14 -14
  45. package/coverage/lcov-report/api/controllers/view/utils.js.html +11 -11
  46. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +7 -7
  47. package/coverage/lcov-report/api/controllers/webhook.js.html +15 -15
  48. package/coverage/lcov-report/api/index.html +1 -1
  49. package/coverage/lcov-report/api/index.js.html +26 -26
  50. package/coverage/lcov-report/api/routes/analytics.js.html +6 -6
  51. package/coverage/lcov-report/api/routes/apikeys.js.html +8 -8
  52. package/coverage/lcov-report/api/routes/application.js.html +9 -9
  53. package/coverage/lcov-report/api/routes/auth.js.html +6 -6
  54. package/coverage/lcov-report/api/routes/automation.js.html +14 -14
  55. package/coverage/lcov-report/api/routes/backup.js.html +8 -8
  56. package/coverage/lcov-report/api/routes/cloud.js.html +8 -8
  57. package/coverage/lcov-report/api/routes/component.js.html +8 -8
  58. package/coverage/lcov-report/api/routes/datasource.js.html +13 -13
  59. package/coverage/lcov-report/api/routes/deploy.js.html +8 -8
  60. package/coverage/lcov-report/api/routes/dev.js.html +13 -13
  61. package/coverage/lcov-report/api/routes/index.html +7 -22
  62. package/coverage/lcov-report/api/routes/index.js.html +31 -37
  63. package/coverage/lcov-report/api/routes/integration.js.html +8 -8
  64. package/coverage/lcov-report/api/routes/layout.js.html +8 -8
  65. package/coverage/lcov-report/api/routes/metadata.js.html +9 -9
  66. package/coverage/lcov-report/api/routes/permission.js.html +12 -12
  67. package/coverage/lcov-report/api/routes/query.js.html +10 -10
  68. package/coverage/lcov-report/api/routes/role.js.html +12 -12
  69. package/coverage/lcov-report/api/routes/routing.js.html +8 -8
  70. package/coverage/lcov-report/api/routes/row.js.html +10 -10
  71. package/coverage/lcov-report/api/routes/screen.js.html +11 -11
  72. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  73. package/coverage/lcov-report/api/routes/static.js.html +13 -13
  74. package/coverage/lcov-report/api/routes/table.js.html +12 -12
  75. package/coverage/lcov-report/api/routes/templates.js.html +8 -8
  76. package/coverage/lcov-report/api/routes/user.js.html +8 -8
  77. package/coverage/lcov-report/api/routes/view.js.html +10 -10
  78. package/coverage/lcov-report/api/routes/webhook.js.html +11 -11
  79. package/coverage/lcov-report/automations/actions.js.html +24 -24
  80. package/coverage/lcov-report/automations/automationUtils.js.html +5 -5
  81. package/coverage/lcov-report/automations/bullboard.js.html +16 -16
  82. package/coverage/lcov-report/automations/index.html +1 -1
  83. package/coverage/lcov-report/automations/index.js.html +7 -7
  84. package/coverage/lcov-report/automations/steps/bash.js.html +6 -6
  85. package/coverage/lcov-report/automations/steps/createRow.js.html +7 -7
  86. package/coverage/lcov-report/automations/steps/delay.js.html +4 -4
  87. package/coverage/lcov-report/automations/steps/deleteRow.js.html +7 -7
  88. package/coverage/lcov-report/automations/steps/discord.js.html +7 -7
  89. package/coverage/lcov-report/automations/steps/executeQuery.js.html +6 -6
  90. package/coverage/lcov-report/automations/steps/executeScript.js.html +6 -6
  91. package/coverage/lcov-report/automations/steps/filter.js.html +7 -7
  92. package/coverage/lcov-report/automations/steps/index.html +1 -1
  93. package/coverage/lcov-report/automations/steps/integromat.js.html +5 -5
  94. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +8 -8
  95. package/coverage/lcov-report/automations/steps/queryRows.js.html +10 -10
  96. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +5 -5
  97. package/coverage/lcov-report/automations/steps/serverLog.js.html +3 -3
  98. package/coverage/lcov-report/automations/steps/slack.js.html +5 -5
  99. package/coverage/lcov-report/automations/steps/updateRow.js.html +6 -6
  100. package/coverage/lcov-report/automations/steps/utils.js.html +3 -3
  101. package/coverage/lcov-report/automations/steps/zapier.js.html +5 -5
  102. package/coverage/lcov-report/automations/triggerInfo/app.js.html +2 -2
  103. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +2 -2
  104. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  105. package/coverage/lcov-report/automations/triggerInfo/index.js.html +8 -8
  106. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +2 -2
  107. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +2 -2
  108. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +2 -2
  109. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +2 -2
  110. package/coverage/lcov-report/automations/triggers.js.html +18 -18
  111. package/coverage/lcov-report/automations/utils.js.html +32 -32
  112. package/coverage/lcov-report/constants/index.html +5 -5
  113. package/coverage/lcov-report/constants/index.js.html +36 -24
  114. package/coverage/lcov-report/constants/layouts.js.html +5 -5
  115. package/coverage/lcov-report/constants/screens.js.html +4 -4
  116. package/coverage/lcov-report/db/client.js.html +18 -18
  117. package/coverage/lcov-report/db/inMemoryView.js.html +7 -7
  118. package/coverage/lcov-report/db/index.html +1 -1
  119. package/coverage/lcov-report/db/index.js.html +3 -3
  120. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +7 -7
  121. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  122. package/coverage/lcov-report/db/linkedRows/index.js.html +18 -18
  123. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +13 -13
  124. package/coverage/lcov-report/db/newid.js.html +4 -4
  125. package/coverage/lcov-report/db/utils.js.html +73 -73
  126. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  127. package/coverage/lcov-report/events/index.html +1 -1
  128. package/coverage/lcov-report/events/index.js.html +6 -6
  129. package/coverage/lcov-report/events/utils.js.html +3 -3
  130. package/coverage/lcov-report/index.html +62 -62
  131. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  132. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  133. package/coverage/lcov-report/middleware/appInfo.js.html +5 -5
  134. package/coverage/lcov-report/middleware/authorized.js.html +171 -69
  135. package/coverage/lcov-report/middleware/builder.js.html +16 -16
  136. package/coverage/lcov-report/middleware/currentapp.js.html +46 -73
  137. package/coverage/lcov-report/middleware/index.html +24 -24
  138. package/coverage/lcov-report/middleware/joi-validator.js.html +6 -6
  139. package/coverage/lcov-report/middleware/resourceId.js.html +22 -22
  140. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  141. package/coverage/lcov-report/middleware/usageQuota.js.html +17 -17
  142. package/coverage/lcov-report/middleware/utils.js.html +4 -4
  143. package/coverage/lcov-report/migrations/usageQuotas/index.html +1 -1
  144. package/coverage/lcov-report/migrations/usageQuotas/index.js.html +6 -6
  145. package/coverage/lcov-report/migrations/usageQuotas/syncApps.js.html +6 -6
  146. package/coverage/lcov-report/migrations/usageQuotas/syncRows.js.html +7 -7
  147. package/coverage/lcov-report/threads/automation.js.html +1 -1
  148. package/coverage/lcov-report/threads/index.html +15 -15
  149. package/coverage/lcov-report/threads/index.js.html +10 -10
  150. package/coverage/lcov-report/threads/query.js.html +23 -8
  151. package/coverage/lcov-report/threads/utils.js.html +14 -14
  152. package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
  153. package/coverage/lcov-report/utilities/budibaseDir.js.html +7 -7
  154. package/coverage/lcov-report/utilities/centralPath.js.html +4 -4
  155. package/coverage/lcov-report/utilities/csvParser.js.html +6 -6
  156. package/coverage/lcov-report/utilities/global.js.html +26 -26
  157. package/coverage/lcov-report/utilities/index.html +19 -19
  158. package/coverage/lcov-report/utilities/index.js.html +25 -25
  159. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +9 -9
  160. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  161. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  162. package/coverage/lcov-report/utilities/routing/index.js.html +6 -6
  163. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  164. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +17 -17
  165. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +4 -4
  166. package/coverage/lcov-report/utilities/scriptRunner.js.html +5 -5
  167. package/coverage/lcov-report/utilities/security.js.html +8 -8
  168. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  169. package/coverage/lcov-report/utilities/usageQuota/index.html +1 -1
  170. package/coverage/lcov-report/utilities/usageQuota/index.js.html +8 -8
  171. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +8 -8
  172. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
  173. package/coverage/lcov-report/utilities/users.js.html +5 -5
  174. package/coverage/lcov-report/utilities/workerRequests.js.html +39 -108
  175. package/coverage/lcov.info +2292 -2272
  176. package/dist/api/controllers/application.js +49 -20
  177. package/dist/api/controllers/auth.js +4 -0
  178. package/dist/api/controllers/datasource.js +11 -0
  179. package/dist/api/controllers/query/index.js +11 -3
  180. package/dist/api/controllers/row/utils.js +1 -2
  181. package/dist/api/controllers/static/index.js +9 -10
  182. package/dist/api/controllers/user.js +2 -0
  183. package/dist/api/routes/index.js +0 -2
  184. package/dist/constants/index.js +3 -0
  185. package/dist/definitions/datasource.js +1 -0
  186. package/dist/integrations/googlesheets.js +340 -0
  187. package/dist/integrations/index.js +3 -0
  188. package/dist/integrations/utils.js +6 -3
  189. package/dist/middleware/authorized.js +55 -30
  190. package/dist/middleware/currentapp.js +0 -9
  191. package/dist/package.json +8 -5
  192. package/dist/tests/utilities/TestConfiguration.js +10 -6
  193. package/dist/threads/query.js +4 -0
  194. package/dist/tsconfig.tsbuildinfo +1 -1
  195. package/dist/utilities/workerRequests.js +0 -20
  196. package/nodemon.json +1 -1
  197. package/package.json +9 -6
  198. package/src/api/controllers/application.js +52 -24
  199. package/src/api/controllers/auth.js +4 -0
  200. package/src/api/controllers/datasource.js +12 -0
  201. package/src/api/controllers/query/index.js +14 -3
  202. package/src/api/controllers/row/utils.js +1 -4
  203. package/src/api/controllers/static/index.js +13 -10
  204. package/src/api/controllers/user.js +2 -0
  205. package/src/api/routes/index.js +0 -2
  206. package/src/api/routes/tests/application.spec.js +2 -2
  207. package/src/api/routes/tests/auth.spec.js +1 -2
  208. package/src/constants/index.js +4 -0
  209. package/src/definitions/datasource.ts +3 -0
  210. package/src/integrations/googlesheets.ts +353 -0
  211. package/src/integrations/index.ts +3 -0
  212. package/src/integrations/utils.ts +18 -5
  213. package/src/middleware/authorized.js +64 -30
  214. package/src/middleware/currentapp.js +0 -9
  215. package/src/middleware/tests/authorized.spec.js +6 -4
  216. package/src/migrations/tests/usageQuotas/syncRows.spec.js +1 -1
  217. package/src/tests/utilities/TestConfiguration.js +10 -6
  218. package/src/threads/query.js +5 -0
  219. package/src/utilities/workerRequests.js +0 -23
  220. package/coverage/lcov-report/api/controllers/hosting.js.html +0 -146
  221. package/coverage/lcov-report/api/routes/hosting.js.html +0 -119
  222. package/dist/api/controllers/hosting.js +0 -30
  223. package/dist/api/routes/hosting.js +0 -11
  224. package/src/api/controllers/hosting.js +0 -22
  225. package/src/api/routes/hosting.js +0 -13
  226. package/src/api/routes/tests/hosting.spec.js +0 -36
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">100% </span>
26
+ <span class="strong">90.47% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>34/34</span>
28
+ <span class='fraction'>38/42</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">89.28% </span>
33
+ <span class="strong">87.5% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>25/28</span>
35
+ <span class='fraction'>28/32</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">100% </span>
40
+ <span class="strong">83.33% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>4/4</span>
42
+ <span class='fraction'>5/6</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">100% </span>
47
+ <span class="strong">92.68% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>34/34</span>
49
+ <span class='fraction'>38/41</span>
50
50
  </div>
51
51
 
52
52
 
@@ -127,75 +127,143 @@
127
127
  <a name='L68'></a><a href='#L68'>68</a>
128
128
  <a name='L69'></a><a href='#L69'>69</a>
129
129
  <a name='L70'></a><a href='#L70'>70</a>
130
- <a name='L71'></a><a href='#L71'>71</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
130
+ <a name='L71'></a><a href='#L71'>71</a>
131
+ <a name='L72'></a><a href='#L72'>72</a>
132
+ <a name='L73'></a><a href='#L73'>73</a>
133
+ <a name='L74'></a><a href='#L74'>74</a>
134
+ <a name='L75'></a><a href='#L75'>75</a>
135
+ <a name='L76'></a><a href='#L76'>76</a>
136
+ <a name='L77'></a><a href='#L77'>77</a>
137
+ <a name='L78'></a><a href='#L78'>78</a>
138
+ <a name='L79'></a><a href='#L79'>79</a>
139
+ <a name='L80'></a><a href='#L80'>80</a>
140
+ <a name='L81'></a><a href='#L81'>81</a>
141
+ <a name='L82'></a><a href='#L82'>82</a>
142
+ <a name='L83'></a><a href='#L83'>83</a>
143
+ <a name='L84'></a><a href='#L84'>84</a>
144
+ <a name='L85'></a><a href='#L85'>85</a>
145
+ <a name='L86'></a><a href='#L86'>86</a>
146
+ <a name='L87'></a><a href='#L87'>87</a>
147
+ <a name='L88'></a><a href='#L88'>88</a>
148
+ <a name='L89'></a><a href='#L89'>89</a>
149
+ <a name='L90'></a><a href='#L90'>90</a>
150
+ <a name='L91'></a><a href='#L91'>91</a>
151
+ <a name='L92'></a><a href='#L92'>92</a>
152
+ <a name='L93'></a><a href='#L93'>93</a>
153
+ <a name='L94'></a><a href='#L94'>94</a>
154
+ <a name='L95'></a><a href='#L95'>95</a>
155
+ <a name='L96'></a><a href='#L96'>96</a>
156
+ <a name='L97'></a><a href='#L97'>97</a>
157
+ <a name='L98'></a><a href='#L98'>98</a>
158
+ <a name='L99'></a><a href='#L99'>99</a>
159
+ <a name='L100'></a><a href='#L100'>100</a>
160
+ <a name='L101'></a><a href='#L101'>101</a>
161
+ <a name='L102'></a><a href='#L102'>102</a>
162
+ <a name='L103'></a><a href='#L103'>103</a>
163
+ <a name='L104'></a><a href='#L104'>104</a>
164
+ <a name='L105'></a><a href='#L105'>105</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
131
165
  <span class="cline-any cline-neutral">&nbsp;</span>
132
166
  <span class="cline-any cline-neutral">&nbsp;</span>
133
167
  <span class="cline-any cline-neutral">&nbsp;</span>
134
- <span class="cline-any cline-yes">25x</span>
168
+ <span class="cline-any cline-yes">24x</span>
135
169
  <span class="cline-any cline-neutral">&nbsp;</span>
136
170
  <span class="cline-any cline-neutral">&nbsp;</span>
137
171
  <span class="cline-any cline-neutral">&nbsp;</span>
138
- <span class="cline-any cline-yes">25x</span>
139
- <span class="cline-any cline-yes">25x</span>
140
- <span class="cline-any cline-yes">25x</span>
172
+ <span class="cline-any cline-yes">24x</span>
173
+ <span class="cline-any cline-yes">24x</span>
174
+ <span class="cline-any cline-yes">24x</span>
175
+ <span class="cline-any cline-yes">24x</span>
141
176
  <span class="cline-any cline-neutral">&nbsp;</span>
142
177
  <span class="cline-any cline-neutral">&nbsp;</span>
143
- <span class="cline-any cline-yes">7x</span>
178
+ <span class="cline-any cline-yes">155x</span>
179
+ <span class="cline-any cline-neutral">&nbsp;</span>
180
+ <span class="cline-any cline-neutral">&nbsp;</span>
181
+ <span class="cline-any cline-yes">24x</span>
182
+ <span class="cline-any cline-neutral">&nbsp;</span>
144
183
  <span class="cline-any cline-neutral">&nbsp;</span>
145
184
  <span class="cline-any cline-neutral">&nbsp;</span>
146
- <span class="cline-any cline-yes">25x</span>
147
185
  <span class="cline-any cline-neutral">&nbsp;</span>
148
- <span class="cline-any cline-yes">2463x</span>
149
186
  <span class="cline-any cline-neutral">&nbsp;</span>
150
187
  <span class="cline-any cline-neutral">&nbsp;</span>
151
- <span class="cline-any cline-yes">164x</span>
152
- <span class="cline-any cline-yes">1x</span>
153
188
  <span class="cline-any cline-neutral">&nbsp;</span>
189
+ <span class="cline-any cline-yes">24x</span>
154
190
  <span class="cline-any cline-neutral">&nbsp;</span>
155
- <span class="cline-any cline-yes">163x</span>
191
+ <span class="cline-any cline-yes">129x</span>
192
+ <span class="cline-any cline-yes">129x</span>
193
+ <span class="cline-any cline-yes">129x</span>
156
194
  <span class="cline-any cline-yes">1x</span>
157
195
  <span class="cline-any cline-neutral">&nbsp;</span>
158
196
  <span class="cline-any cline-neutral">&nbsp;</span>
159
197
  <span class="cline-any cline-neutral">&nbsp;</span>
198
+ <span class="cline-any cline-yes">128x</span>
199
+ <span class="cline-any cline-yes">3x</span>
160
200
  <span class="cline-any cline-neutral">&nbsp;</span>
161
- <span class="cline-any cline-yes">162x</span>
162
201
  <span class="cline-any cline-neutral">&nbsp;</span>
163
- <span class="cline-any cline-yes">162x</span>
164
202
  <span class="cline-any cline-neutral">&nbsp;</span>
165
- <span class="cline-any cline-yes">162x</span>
166
- <span class="cline-any cline-yes">162x</span>
167
- <span class="cline-any cline-yes">162x</span>
168
- <span class="cline-any cline-yes">126x</span>
169
- <span class="cline-any cline-yes">36x</span>
170
- <span class="cline-any cline-yes">29x</span>
203
+ <span class="cline-any cline-yes">24x</span>
204
+ <span class="cline-any cline-neutral">&nbsp;</span>
171
205
  <span class="cline-any cline-neutral">&nbsp;</span>
172
206
  <span class="cline-any cline-neutral">&nbsp;</span>
173
207
  <span class="cline-any cline-neutral">&nbsp;</span>
174
- <span class="cline-any cline-yes">7x</span>
175
- <span class="cline-any cline-yes">7x</span>
176
208
  <span class="cline-any cline-neutral">&nbsp;</span>
177
209
  <span class="cline-any cline-neutral">&nbsp;</span>
178
- <span class="cline-any cline-yes">7x</span>
179
- <span class="cline-any cline-yes">7x</span>
180
- <span class="cline-any cline-yes">7x</span>
181
210
  <span class="cline-any cline-yes">3x</span>
211
+ <span class="cline-any cline-yes">3x</span>
212
+ <span class="cline-any cline-neutral">&nbsp;</span>
182
213
  <span class="cline-any cline-neutral">&nbsp;</span>
214
+ <span class="cline-any cline-yes">3x</span>
183
215
  <span class="cline-any cline-neutral">&nbsp;</span>
184
- <span class="cline-any cline-yes">7x</span>
216
+ <span class="cline-any cline-yes">3x</span>
217
+ <span class="cline-any cline-neutral">&nbsp;</span>
218
+ <span class="cline-any cline-no">&nbsp;</span>
219
+ <span class="cline-any cline-no">&nbsp;</span>
220
+ <span class="cline-any cline-no">&nbsp;</span>
221
+ <span class="cline-any cline-neutral">&nbsp;</span>
222
+ <span class="cline-any cline-neutral">&nbsp;</span>
223
+ <span class="cline-any cline-yes">3x</span>
224
+ <span class="cline-any cline-yes">3x</span>
225
+ <span class="cline-any cline-neutral">&nbsp;</span>
226
+ <span class="cline-any cline-neutral">&nbsp;</span>
227
+ <span class="cline-any cline-neutral">&nbsp;</span>
228
+ <span class="cline-any cline-yes">24x</span>
229
+ <span class="cline-any cline-neutral">&nbsp;</span>
230
+ <span class="cline-any cline-yes">2338x</span>
231
+ <span class="cline-any cline-neutral">&nbsp;</span>
232
+ <span class="cline-any cline-neutral">&nbsp;</span>
233
+ <span class="cline-any cline-yes">162x</span>
185
234
  <span class="cline-any cline-yes">1x</span>
235
+ <span class="cline-any cline-neutral">&nbsp;</span>
236
+ <span class="cline-any cline-neutral">&nbsp;</span>
237
+ <span class="cline-any cline-yes">161x</span>
186
238
  <span class="cline-any cline-yes">1x</span>
187
239
  <span class="cline-any cline-neutral">&nbsp;</span>
240
+ <span class="cline-any cline-neutral">&nbsp;</span>
241
+ <span class="cline-any cline-neutral">&nbsp;</span>
242
+ <span class="cline-any cline-neutral">&nbsp;</span>
243
+ <span class="cline-any cline-yes">160x</span>
244
+ <span class="cline-any cline-neutral">&nbsp;</span>
245
+ <span class="cline-any cline-neutral">&nbsp;</span>
246
+ <span class="cline-any cline-yes">160x</span>
247
+ <span class="cline-any cline-yes">160x</span>
248
+ <span class="cline-any cline-yes">55x</span>
249
+ <span class="cline-any cline-neutral">&nbsp;</span>
250
+ <span class="cline-any cline-neutral">&nbsp;</span>
251
+ <span class="cline-any cline-neutral">&nbsp;</span>
252
+ <span class="cline-any cline-yes">160x</span>
253
+ <span class="cline-any cline-yes">160x</span>
188
254
  <span class="cline-any cline-yes">1x</span>
189
- <span class="cline-any cline-yes">6x</span>
190
- <span class="cline-any cline-yes">6x</span>
191
255
  <span class="cline-any cline-neutral">&nbsp;</span>
192
256
  <span class="cline-any cline-neutral">&nbsp;</span>
193
257
  <span class="cline-any cline-neutral">&nbsp;</span>
194
- <span class="cline-any cline-yes">4x</span>
195
- <span class="cline-any cline-yes">4x</span>
258
+ <span class="cline-any cline-yes">159x</span>
259
+ <span class="cline-any cline-yes">30x</span>
260
+ <span class="cline-any cline-neutral">&nbsp;</span>
196
261
  <span class="cline-any cline-neutral">&nbsp;</span>
197
262
  <span class="cline-any cline-neutral">&nbsp;</span>
198
- <span class="cline-any cline-yes">4x</span>
263
+ <span class="cline-any cline-yes">129x</span>
264
+ <span class="cline-any cline-neutral">&nbsp;</span>
265
+ <span class="cline-any cline-neutral">&nbsp;</span>
266
+ <span class="cline-any cline-yes">129x</span>
199
267
  <span class="cline-any cline-neutral">&nbsp;</span>
200
268
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const {
201
269
  getUserRoleHierarchy,
@@ -208,11 +276,59 @@ const {
208
276
  } = require("@budibase/backend-core/permissions")
209
277
  const builderMiddleware = require("./builder")
210
278
  const { isWebhookEndpoint } = require("./utils")
279
+ const { buildCsrfMiddleware } = require("@budibase/backend-core/auth")
211
280
  &nbsp;
212
281
  function hasResource(ctx) {
213
282
  return ctx.resourceId != null
214
283
  }
215
284
  &nbsp;
285
+ const csrf = buildCsrfMiddleware()
286
+ &nbsp;
287
+ /**
288
+ * Apply authorization to the requested resource:
289
+ * - If this is a builder resource the user must be a builder.
290
+ * - Builders can access all resources.
291
+ * - Otherwise the user must have the required role.
292
+ */
293
+ const checkAuthorized = async (ctx, resourceRoles, permType, permLevel) =&gt; {
294
+ // check if this is a builder api and the user is not a builder
295
+ const isBuilder = ctx.user &amp;&amp; ctx.user.builder &amp;&amp; ctx.user.builder.global
296
+ const isBuilderApi = permType === PermissionTypes.BUILDER
297
+ if (isBuilderApi &amp;&amp; !isBuilder) {
298
+ return ctx.throw(403, "Not Authorized")
299
+ }
300
+ &nbsp;
301
+ // check for resource authorization
302
+ if (!isBuilder) {
303
+ await checkAuthorizedResource(ctx, resourceRoles, permType, permLevel)
304
+ }
305
+ }
306
+ &nbsp;
307
+ const checkAuthorizedResource = async (
308
+ ctx,
309
+ resourceRoles,
310
+ permType,
311
+ permLevel
312
+ ) =&gt; {
313
+ // get the user's roles
314
+ const roleId = ctx.roleId || BUILTIN_ROLE_IDS.PUBLIC
315
+ const userRoles = await getUserRoleHierarchy(ctx.appId, roleId, {
316
+ idOnly: false,
317
+ })
318
+ const permError = "User does not have permission"
319
+ // check if the user has the required role
320
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (resourceRoles.length &gt; 0) {
321
+ // deny access if the user doesn't have the required resource role
322
+ const found = <span class="cstat-no" title="statement not covered" >userRoles.find(<span class="fstat-no" title="function not covered" >ro</span>le =&gt; <span class="cstat-no" title="statement not covered" >resourceRoles.indexOf(role._id) !== -1)</span></span>
323
+ <span class="cstat-no" title="statement not covered" > if (!found) {</span>
324
+ <span class="cstat-no" title="statement not covered" > ctx.throw(403, permError)</span>
325
+ }
326
+ // fallback to the base permissions when no resource roles are found
327
+ } else if (!doesHaveBasePermission(permType, permLevel, userRoles)) {
328
+ ctx.throw(403, permError)
329
+ }
330
+ }
331
+ &nbsp;
216
332
  module.exports =
217
333
  (permType, permLevel = null) =&gt;
218
334
  async (ctx, next) =&gt; {
@@ -230,42 +346,28 @@ module.exports =
230
346
  // to find API endpoints which are builder focused
231
347
  await builderMiddleware(ctx, permType)
232
348
  &nbsp;
233
- const isAuthed = ctx.isAuthenticated
234
- // builders for now have permission to do anything
235
- let isBuilder = ctx.user &amp;&amp; ctx.user.builder &amp;&amp; ctx.user.builder.global
236
- const isBuilderApi = permType === PermissionTypes.BUILDER
237
- if (isBuilder) {
238
- return next()
239
- } else if (isBuilderApi &amp;&amp; !isBuilder) {
240
- return ctx.throw(403, "Not Authorized")
349
+ // get the resource roles
350
+ let resourceRoles = []
351
+ if (ctx.appId &amp;&amp; hasResource(ctx)) {
352
+ resourceRoles = await getRequiredResourceRole(ctx.appId, permLevel, ctx)
241
353
  }
242
354
  &nbsp;
243
- // need to check this first, in-case public access, don't check authed until last
244
- const roleId = ctx.roleId || BUILTIN_ROLE_IDS.PUBLIC
245
- const hierarchy = await getUserRoleHierarchy(ctx.appId, roleId, {
246
- idOnly: false,
247
- })
248
- const permError = "User does not have permission"
249
- let possibleRoleIds = []
250
- if (hasResource(ctx)) {
251
- possibleRoleIds = await getRequiredResourceRole(ctx.appId, permLevel, ctx)
252
- }
253
- // check if we found a role, if not fallback to base permissions
254
- if (possibleRoleIds.length &gt; 0) {
255
- const found = hierarchy.find(
256
- role =&gt; possibleRoleIds.indexOf(role._id) !== -1
257
- )
258
- return found ? next() : <span class="branch-1 cbranch-no" title="branch not covered" >ctx.throw(403, permError)</span>
259
- } else if (!doesHaveBasePermission(permType, permLevel, hierarchy)) {
260
- ctx.throw(403, permError)
355
+ // if the resource is public, proceed
356
+ const isPublicResource = resourceRoles.includes(BUILTIN_ROLE_IDS.PUBLIC)
357
+ if (isPublicResource) {
358
+ return next()
261
359
  }
262
360
  &nbsp;
263
- // if they are not authed, then anything using the authorized middleware will fail
264
- if (!isAuthed) {
265
- ctx.throw(403, "Session not authenticated")
361
+ // check authenticated
362
+ if (!ctx.isAuthenticated) {
363
+ return ctx.throw(403, "Session not authenticated")
266
364
  }
267
365
  &nbsp;
268
- return next()
366
+ // check authorized
367
+ await checkAuthorized(ctx, resourceRoles, permType, permLevel)
368
+ &nbsp;
369
+ // csrf protection
370
+ return csrf(ctx, next)
269
371
  }
270
372
  &nbsp;</pre></td></tr></table></pre>
271
373
 
@@ -274,7 +376,7 @@ module.exports =
274
376
  <div class='footer quiet pad2 space-top1 center small'>
275
377
  Code coverage generated by
276
378
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
277
- at Mon Jan 24 2022 15:47:33 GMT+0000 (Coordinated Universal Time)
379
+ at Sun Jan 30 2022 21:42:59 GMT+0000 (Coordinated Universal Time)
278
380
  </div>
279
381
  </div>
280
382
  <script src="../prettify.js"></script>
@@ -135,19 +135,19 @@
135
135
  <a name='L76'></a><a href='#L76'>76</a>
136
136
  <a name='L77'></a><a href='#L77'>77</a>
137
137
  <a name='L78'></a><a href='#L78'>78</a>
138
- <a name='L79'></a><a href='#L79'>79</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">25x</span>
138
+ <a name='L79'></a><a href='#L79'>79</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">24x</span>
139
139
  <span class="cline-any cline-neutral">&nbsp;</span>
140
140
  <span class="cline-any cline-neutral">&nbsp;</span>
141
141
  <span class="cline-any cline-neutral">&nbsp;</span>
142
142
  <span class="cline-any cline-neutral">&nbsp;</span>
143
143
  <span class="cline-any cline-neutral">&nbsp;</span>
144
- <span class="cline-any cline-yes">25x</span>
145
- <span class="cline-any cline-yes">25x</span>
146
- <span class="cline-any cline-yes">25x</span>
147
- <span class="cline-any cline-yes">25x</span>
148
- <span class="cline-any cline-yes">25x</span>
144
+ <span class="cline-any cline-yes">24x</span>
145
+ <span class="cline-any cline-yes">24x</span>
146
+ <span class="cline-any cline-yes">24x</span>
147
+ <span class="cline-any cline-yes">24x</span>
148
+ <span class="cline-any cline-yes">24x</span>
149
149
  <span class="cline-any cline-neutral">&nbsp;</span>
150
- <span class="cline-any cline-yes">25x</span>
150
+ <span class="cline-any cline-yes">24x</span>
151
151
  <span class="cline-any cline-neutral">&nbsp;</span>
152
152
  <span class="cline-any cline-neutral">&nbsp;</span>
153
153
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -195,18 +195,18 @@
195
195
  <span class="cline-any cline-yes">1x</span>
196
196
  <span class="cline-any cline-neutral">&nbsp;</span>
197
197
  <span class="cline-any cline-neutral">&nbsp;</span>
198
- <span class="cline-any cline-yes">25x</span>
199
- <span class="cline-any cline-yes">162x</span>
198
+ <span class="cline-any cline-yes">24x</span>
199
+ <span class="cline-any cline-yes">160x</span>
200
200
  <span class="cline-any cline-neutral">&nbsp;</span>
201
- <span class="cline-any cline-yes">162x</span>
201
+ <span class="cline-any cline-yes">160x</span>
202
202
  <span class="cline-any cline-yes">5x</span>
203
203
  <span class="cline-any cline-neutral">&nbsp;</span>
204
- <span class="cline-any cline-yes">157x</span>
205
- <span class="cline-any cline-yes">157x</span>
206
- <span class="cline-any cline-yes">157x</span>
204
+ <span class="cline-any cline-yes">155x</span>
205
+ <span class="cline-any cline-yes">155x</span>
206
+ <span class="cline-any cline-yes">155x</span>
207
207
  <span class="cline-any cline-neutral">&nbsp;</span>
208
- <span class="cline-any cline-yes">157x</span>
209
- <span class="cline-any cline-yes">156x</span>
208
+ <span class="cline-any cline-yes">155x</span>
209
+ <span class="cline-any cline-yes">154x</span>
210
210
  <span class="cline-any cline-neutral">&nbsp;</span>
211
211
  <span class="cline-any cline-neutral">&nbsp;</span>
212
212
  <span class="cline-any cline-yes">1x</span>
@@ -298,7 +298,7 @@ module.exports = async (ctx, permType) =&gt; {
298
298
  <div class='footer quiet pad2 space-top1 center small'>
299
299
  Code coverage generated by
300
300
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
301
- at Mon Jan 24 2022 15:47:33 GMT+0000 (Coordinated Universal Time)
301
+ at Sun Jan 30 2022 21:42:59 GMT+0000 (Coordinated Universal Time)
302
302
  </div>
303
303
  </div>
304
304
  <script src="../prettify.js"></script>
@@ -23,9 +23,9 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">83.33% </span>
26
+ <span class="strong">83.01% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>45/54</span>
28
+ <span class='fraction'>44/53</span>
29
29
  </div>
30
30
 
31
31
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">83.33% </span>
47
+ <span class="strong">83.01% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>45/54</span>
49
+ <span class='fraction'>44/53</span>
50
50
  </div>
51
51
 
52
52
 
@@ -168,98 +168,80 @@
168
168
  <a name='L109'></a><a href='#L109'>109</a>
169
169
  <a name='L110'></a><a href='#L110'>110</a>
170
170
  <a name='L111'></a><a href='#L111'>111</a>
171
- <a name='L112'></a><a href='#L112'>112</a>
172
- <a name='L113'></a><a href='#L113'>113</a>
173
- <a name='L114'></a><a href='#L114'>114</a>
174
- <a name='L115'></a><a href='#L115'>115</a>
175
- <a name='L116'></a><a href='#L116'>116</a>
176
- <a name='L117'></a><a href='#L117'>117</a>
177
- <a name='L118'></a><a href='#L118'>118</a>
178
- <a name='L119'></a><a href='#L119'>119</a>
179
- <a name='L120'></a><a href='#L120'>120</a>
180
- <a name='L121'></a><a href='#L121'>121</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
171
+ <a name='L112'></a><a href='#L112'>112</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
181
172
  <span class="cline-any cline-neutral">&nbsp;</span>
182
173
  <span class="cline-any cline-neutral">&nbsp;</span>
183
174
  <span class="cline-any cline-neutral">&nbsp;</span>
184
175
  <span class="cline-any cline-neutral">&nbsp;</span>
185
- <span class="cline-any cline-yes">29x</span>
186
- <span class="cline-any cline-yes">29x</span>
187
- <span class="cline-any cline-yes">29x</span>
188
- <span class="cline-any cline-yes">29x</span>
189
- <span class="cline-any cline-yes">29x</span>
190
- <span class="cline-any cline-yes">29x</span>
191
- <span class="cline-any cline-yes">29x</span>
192
- <span class="cline-any cline-yes">29x</span>
193
- <span class="cline-any cline-yes">29x</span>
194
- <span class="cline-any cline-yes">29x</span>
195
- <span class="cline-any cline-yes">29x</span>
176
+ <span class="cline-any cline-yes">28x</span>
177
+ <span class="cline-any cline-yes">28x</span>
178
+ <span class="cline-any cline-yes">28x</span>
179
+ <span class="cline-any cline-yes">28x</span>
180
+ <span class="cline-any cline-yes">28x</span>
181
+ <span class="cline-any cline-yes">28x</span>
182
+ <span class="cline-any cline-yes">28x</span>
183
+ <span class="cline-any cline-yes">28x</span>
184
+ <span class="cline-any cline-yes">28x</span>
185
+ <span class="cline-any cline-yes">28x</span>
186
+ <span class="cline-any cline-yes">28x</span>
196
187
  <span class="cline-any cline-neutral">&nbsp;</span>
197
- <span class="cline-any cline-yes">29x</span>
188
+ <span class="cline-any cline-yes">28x</span>
198
189
  <span class="cline-any cline-neutral">&nbsp;</span>
199
- <span class="cline-any cline-yes">174x</span>
190
+ <span class="cline-any cline-yes">172x</span>
200
191
  <span class="cline-any cline-neutral">&nbsp;</span>
201
- <span class="cline-any cline-yes">174x</span>
202
- <span class="cline-any cline-yes">174x</span>
203
- <span class="cline-any cline-yes">174x</span>
192
+ <span class="cline-any cline-yes">172x</span>
193
+ <span class="cline-any cline-yes">172x</span>
194
+ <span class="cline-any cline-yes">172x</span>
204
195
  <span class="cline-any cline-neutral">&nbsp;</span>
205
196
  <span class="cline-any cline-no">&nbsp;</span>
206
197
  <span class="cline-any cline-neutral">&nbsp;</span>
207
- <span class="cline-any cline-yes">174x</span>
198
+ <span class="cline-any cline-yes">172x</span>
208
199
  <span class="cline-any cline-yes">1x</span>
209
200
  <span class="cline-any cline-neutral">&nbsp;</span>
210
201
  <span class="cline-any cline-neutral">&nbsp;</span>
211
- <span class="cline-any cline-yes">173x</span>
212
- <span class="cline-any cline-yes">167x</span>
213
- <span class="cline-any cline-yes">167x</span>
214
- <span class="cline-any cline-yes">167x</span>
202
+ <span class="cline-any cline-yes">171x</span>
203
+ <span class="cline-any cline-yes">165x</span>
204
+ <span class="cline-any cline-yes">165x</span>
205
+ <span class="cline-any cline-yes">165x</span>
215
206
  <span class="cline-any cline-no">&nbsp;</span>
216
207
  <span class="cline-any cline-no">&nbsp;</span>
217
208
  <span class="cline-any cline-neutral">&nbsp;</span>
218
209
  <span class="cline-any cline-neutral">&nbsp;</span>
219
- <span class="cline-any cline-yes">167x</span>
210
+ <span class="cline-any cline-yes">165x</span>
220
211
  <span class="cline-any cline-neutral">&nbsp;</span>
221
212
  <span class="cline-any cline-neutral">&nbsp;</span>
222
213
  <span class="cline-any cline-neutral">&nbsp;</span>
223
- <span class="cline-any cline-yes">173x</span>
214
+ <span class="cline-any cline-yes">171x</span>
224
215
  <span class="cline-any cline-neutral">&nbsp;</span>
225
216
  <span class="cline-any cline-neutral">&nbsp;</span>
226
217
  <span class="cline-any cline-neutral">&nbsp;</span>
227
218
  <span class="cline-any cline-neutral">&nbsp;</span>
228
219
  <span class="cline-any cline-yes">2x</span>
229
- <span class="cline-any cline-neutral">&nbsp;</span>
230
220
  <span class="cline-any cline-yes">2x</span>
231
221
  <span class="cline-any cline-neutral">&nbsp;</span>
232
222
  <span class="cline-any cline-neutral">&nbsp;</span>
233
223
  <span class="cline-any cline-neutral">&nbsp;</span>
224
+ <span class="cline-any cline-yes">169x</span>
225
+ <span class="cline-any cline-yes">169x</span>
234
226
  <span class="cline-any cline-neutral">&nbsp;</span>
227
+ <span class="cline-any cline-yes">32x</span>
228
+ <span class="cline-any cline-yes">137x</span>
235
229
  <span class="cline-any cline-neutral">&nbsp;</span>
230
+ <span class="cline-any cline-yes">137x</span>
231
+ <span class="cline-any cline-yes">137x</span>
236
232
  <span class="cline-any cline-neutral">&nbsp;</span>
233
+ <span class="cline-any cline-yes">137x</span>
237
234
  <span class="cline-any cline-neutral">&nbsp;</span>
238
- <span class="cline-any cline-yes">2x</span>
239
- <span class="cline-any cline-neutral">&nbsp;</span>
240
- <span class="cline-any cline-neutral">&nbsp;</span>
241
- <span class="cline-any cline-neutral">&nbsp;</span>
242
- <span class="cline-any cline-yes">171x</span>
243
- <span class="cline-any cline-yes">171x</span>
244
- <span class="cline-any cline-neutral">&nbsp;</span>
245
- <span class="cline-any cline-yes">33x</span>
246
- <span class="cline-any cline-yes">138x</span>
247
- <span class="cline-any cline-neutral">&nbsp;</span>
248
- <span class="cline-any cline-yes">138x</span>
249
- <span class="cline-any cline-yes">138x</span>
250
- <span class="cline-any cline-neutral">&nbsp;</span>
251
- <span class="cline-any cline-yes">138x</span>
252
235
  <span class="cline-any cline-neutral">&nbsp;</span>
253
236
  <span class="cline-any cline-neutral">&nbsp;</span>
254
- <span class="cline-any cline-neutral">&nbsp;</span>
255
- <span class="cline-any cline-yes">171x</span>
237
+ <span class="cline-any cline-yes">169x</span>
256
238
  <span class="cline-any cline-no">&nbsp;</span>
257
239
  <span class="cline-any cline-neutral">&nbsp;</span>
258
240
  <span class="cline-any cline-neutral">&nbsp;</span>
259
- <span class="cline-any cline-yes">171x</span>
241
+ <span class="cline-any cline-yes">169x</span>
260
242
  <span class="cline-any cline-neutral">&nbsp;</span>
261
243
  <span class="cline-any cline-neutral">&nbsp;</span>
262
- <span class="cline-any cline-yes">171x</span>
244
+ <span class="cline-any cline-yes">169x</span>
263
245
  <span class="cline-any cline-neutral">&nbsp;</span>
264
246
  <span class="cline-any cline-neutral">&nbsp;</span>
265
247
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -273,11 +255,11 @@
273
255
  <span class="cline-any cline-no">&nbsp;</span>
274
256
  <span class="cline-any cline-neutral">&nbsp;</span>
275
257
  <span class="cline-any cline-neutral">&nbsp;</span>
276
- <span class="cline-any cline-yes">171x</span>
277
- <span class="cline-any cline-yes">171x</span>
278
- <span class="cline-any cline-yes">171x</span>
279
- <span class="cline-any cline-yes">171x</span>
280
- <span class="cline-any cline-yes">171x</span>
258
+ <span class="cline-any cline-yes">169x</span>
259
+ <span class="cline-any cline-yes">169x</span>
260
+ <span class="cline-any cline-yes">169x</span>
261
+ <span class="cline-any cline-yes">169x</span>
262
+ <span class="cline-any cline-yes">169x</span>
281
263
  <span class="cline-any cline-neutral">&nbsp;</span>
282
264
  <span class="cline-any cline-neutral">&nbsp;</span>
283
265
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -286,7 +268,7 @@
286
268
  <span class="cline-any cline-neutral">&nbsp;</span>
287
269
  <span class="cline-any cline-neutral">&nbsp;</span>
288
270
  <span class="cline-any cline-neutral">&nbsp;</span>
289
- <span class="cline-any cline-yes">171x</span>
271
+ <span class="cline-any cline-yes">169x</span>
290
272
  <span class="cline-any cline-neutral">&nbsp;</span>
291
273
  <span class="cline-any cline-neutral">&nbsp;</span>
292
274
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -295,7 +277,7 @@
295
277
  <span class="cline-any cline-yes">7x</span>
296
278
  <span class="cline-any cline-neutral">&nbsp;</span>
297
279
  <span class="cline-any cline-neutral">&nbsp;</span>
298
- <span class="cline-any cline-yes">171x</span>
280
+ <span class="cline-any cline-yes">169x</span>
299
281
  <span class="cline-any cline-neutral">&nbsp;</span>
300
282
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const {
301
283
  getAppId,
@@ -346,15 +328,6 @@ module.exports = async (ctx, next) =&gt; {
346
328
  (!ctx.user || !ctx.user.builder || !ctx.user.builder.global)
347
329
  ) {
348
330
  clearCookie(ctx, Cookies.CurrentApp)
349
- // have to set the return url on the server side as client side is not available
350
- setCookie(ctx, ctx.url, Cookies.RETURN_URL, {
351
- // don't sign so the browser can easily read
352
- sign: false,
353
- // use the request domain to match how ui handles the return url cookie.
354
- // it's important we don't use the shared domain here as the builder
355
- // can't delete from it without awareness of the domain.
356
- requestDomain: true,
357
- })
358
331
  return ctx.redirect("/")
359
332
  }
360
333
  &nbsp;
@@ -424,7 +397,7 @@ module.exports = async (ctx, next) =&gt; {
424
397
  <div class='footer quiet pad2 space-top1 center small'>
425
398
  Code coverage generated by
426
399
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
427
- at Mon Jan 24 2022 15:47:33 GMT+0000 (Coordinated Universal Time)
400
+ at Sun Jan 30 2022 21:42:59 GMT+0000 (Coordinated Universal Time)
428
401
  </div>
429
402
  </div>
430
403
  <script src="../prettify.js"></script>