@intuitionrobotics/permissions 0.47.59 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (265) hide show
  1. package/LICENSE +3 -0
  2. package/dist/app-backend/api/v1/permissions/_imports.d.ts +3 -0
  3. package/dist/app-backend/api/v1/permissions/_imports.d.ts.map +1 -0
  4. package/{shared/assign-types.js → dist/app-backend/api/v1/permissions/_imports.js} +3 -3
  5. package/{app-backend → dist/app-backend}/api/v1/permissions/_imports.js.map +1 -1
  6. package/dist/app-backend/api/v1/permissions/_permissions.d.ts +4 -0
  7. package/dist/app-backend/api/v1/permissions/_permissions.d.ts.map +1 -0
  8. package/{app-backend → dist/app-backend}/api/v1/permissions/_permissions.js +2 -4
  9. package/dist/app-backend/api/v1/permissions/_permissions.js.map +1 -0
  10. package/dist/app-backend/api/v1/permissions/assert.d.ts +10 -0
  11. package/dist/app-backend/api/v1/permissions/assert.d.ts.map +1 -0
  12. package/dist/app-backend/api/v1/permissions/assert.js +36 -0
  13. package/dist/app-backend/api/v1/permissions/assert.js.map +1 -0
  14. package/dist/app-backend/api/v1/permissions/assign/apis.d.ts +4 -0
  15. package/dist/app-backend/api/v1/permissions/assign/apis.d.ts.map +1 -0
  16. package/{app-backend → dist/app-backend}/api/v1/permissions/assign/apis.js +6 -7
  17. package/dist/app-backend/api/v1/permissions/assign/apis.js.map +1 -0
  18. package/dist/app-backend/api/v1/permissions/assign/app-permissions.d.ts +10 -0
  19. package/dist/app-backend/api/v1/permissions/assign/app-permissions.d.ts.map +1 -0
  20. package/dist/app-backend/api/v1/permissions/assign/app-permissions.js +42 -0
  21. package/dist/app-backend/api/v1/permissions/assign/app-permissions.js.map +1 -0
  22. package/dist/app-backend/api/v1/permissions/manage/apis.d.ts +4 -0
  23. package/dist/app-backend/api/v1/permissions/manage/apis.d.ts.map +1 -0
  24. package/{app-backend → dist/app-backend}/api/v1/permissions/manage/apis.js +8 -9
  25. package/dist/app-backend/api/v1/permissions/manage/apis.js.map +1 -0
  26. package/dist/app-backend/api/v1/permissions/tags/apis.d.ts +3 -0
  27. package/dist/app-backend/api/v1/permissions/tags/apis.d.ts.map +1 -0
  28. package/dist/app-backend/api/v1/permissions/tags/apis.js +3 -0
  29. package/{app-backend → dist/app-backend}/api/v1/permissions/tags/apis.js.map +1 -1
  30. package/dist/app-backend/api/v1/permissions/user-urls-permissions.d.ts +9 -0
  31. package/dist/app-backend/api/v1/permissions/user-urls-permissions.d.ts.map +1 -0
  32. package/dist/app-backend/api/v1/permissions/user-urls-permissions.js +34 -0
  33. package/dist/app-backend/api/v1/permissions/user-urls-permissions.js.map +1 -0
  34. package/dist/app-backend/api/v1/register/_register-project.d.ts +4 -0
  35. package/dist/app-backend/api/v1/register/_register-project.d.ts.map +1 -0
  36. package/dist/app-backend/api/v1/register/_register-project.js +20 -0
  37. package/dist/app-backend/api/v1/register/_register-project.js.map +1 -0
  38. package/dist/app-backend/api/v1/register/register-external-project.d.ts +9 -0
  39. package/dist/app-backend/api/v1/register/register-external-project.d.ts.map +1 -0
  40. package/dist/app-backend/api/v1/register/register-external-project.js +33 -0
  41. package/dist/app-backend/api/v1/register/register-external-project.js.map +1 -0
  42. package/dist/app-backend/api/v1/register/register-project.d.ts +11 -0
  43. package/dist/app-backend/api/v1/register/register-project.d.ts.map +1 -0
  44. package/dist/app-backend/api/v1/register/register-project.js +16 -0
  45. package/dist/app-backend/api/v1/register/register-project.js.map +1 -0
  46. package/dist/app-backend/api/v1/test/_imports.d.ts +2 -0
  47. package/dist/app-backend/api/v1/test/_imports.d.ts.map +1 -0
  48. package/dist/app-backend/api/v1/test/_imports.js +19 -0
  49. package/{app-backend → dist/app-backend}/api/v1/test/_imports.js.map +1 -1
  50. package/dist/app-backend/api/v1/test/_test-permissions.d.ts +4 -0
  51. package/dist/app-backend/api/v1/test/_test-permissions.d.ts.map +1 -0
  52. package/dist/app-backend/api/v1/test/_test-permissions.js +20 -0
  53. package/dist/app-backend/api/v1/test/_test-permissions.js.map +1 -0
  54. package/dist/app-backend/api/v1/test/test-permissions.d.ts +10 -0
  55. package/dist/app-backend/api/v1/test/test-permissions.d.ts.map +1 -0
  56. package/dist/app-backend/api/v1/test/test-permissions.js +34 -0
  57. package/dist/app-backend/api/v1/test/test-permissions.js.map +1 -0
  58. package/dist/app-backend/api/v1/user-custom-fields/_user-custom-fields.d.ts +4 -0
  59. package/dist/app-backend/api/v1/user-custom-fields/_user-custom-fields.d.ts.map +1 -0
  60. package/dist/app-backend/api/v1/user-custom-fields/_user-custom-fields.js +20 -0
  61. package/dist/app-backend/api/v1/user-custom-fields/_user-custom-fields.js.map +1 -0
  62. package/dist/app-backend/api/v1/user-custom-fields/user-cf-by-share-groups.d.ts +9 -0
  63. package/dist/app-backend/api/v1/user-custom-fields/user-cf-by-share-groups.d.ts.map +1 -0
  64. package/dist/app-backend/api/v1/user-custom-fields/user-cf-by-share-groups.js +17 -0
  65. package/dist/app-backend/api/v1/user-custom-fields/user-cf-by-share-groups.js.map +1 -0
  66. package/dist/app-backend/api/v1/user-custom-fields/users-cf-by-share-groups.d.ts +9 -0
  67. package/dist/app-backend/api/v1/user-custom-fields/users-cf-by-share-groups.d.ts.map +1 -0
  68. package/dist/app-backend/api/v1/user-custom-fields/users-cf-by-share-groups.js +15 -0
  69. package/dist/app-backend/api/v1/user-custom-fields/users-cf-by-share-groups.js.map +1 -0
  70. package/{app-backend → dist/app-backend}/benchmark/permission-user-assert-benchmark.d.ts +1 -0
  71. package/dist/app-backend/benchmark/permission-user-assert-benchmark.d.ts.map +1 -0
  72. package/dist/app-backend/benchmark/permission-user-assert-benchmark.js +92 -0
  73. package/dist/app-backend/benchmark/permission-user-assert-benchmark.js.map +1 -0
  74. package/dist/app-backend/core/module-pack.d.ts +7 -0
  75. package/dist/app-backend/core/module-pack.d.ts.map +1 -0
  76. package/dist/app-backend/core/module-pack.js +39 -0
  77. package/dist/app-backend/core/module-pack.js.map +1 -0
  78. package/{app-backend → dist/app-backend}/modules/PermissionsModule.d.ts +3 -2
  79. package/dist/app-backend/modules/PermissionsModule.d.ts.map +1 -0
  80. package/dist/app-backend/modules/PermissionsModule.js +119 -0
  81. package/dist/app-backend/modules/PermissionsModule.js.map +1 -0
  82. package/{app-backend → dist/app-backend}/modules/TagsModule.d.ts +5 -4
  83. package/dist/app-backend/modules/TagsModule.d.ts.map +1 -0
  84. package/dist/app-backend/modules/TagsModule.js +36 -0
  85. package/dist/app-backend/modules/TagsModule.js.map +1 -0
  86. package/{app-backend → dist/app-backend}/modules/_imports.d.ts +4 -3
  87. package/dist/app-backend/modules/_imports.d.ts.map +1 -0
  88. package/{app-backend/api/v1/test → dist/app-backend/modules}/_imports.js +9 -5
  89. package/dist/app-backend/modules/_imports.js.map +1 -0
  90. package/{app-backend → dist/app-backend}/modules/db-types/assign.d.ts +7 -6
  91. package/dist/app-backend/modules/db-types/assign.d.ts.map +1 -0
  92. package/dist/app-backend/modules/db-types/assign.js +251 -0
  93. package/dist/app-backend/modules/db-types/assign.js.map +1 -0
  94. package/{app-backend → dist/app-backend}/modules/db-types/managment.d.ts +5 -4
  95. package/dist/app-backend/modules/db-types/managment.d.ts.map +1 -0
  96. package/dist/app-backend/modules/db-types/managment.js +210 -0
  97. package/dist/app-backend/modules/db-types/managment.js.map +1 -0
  98. package/{app-backend → dist/app-backend}/modules/permissions-assert.d.ts +4 -3
  99. package/dist/app-backend/modules/permissions-assert.d.ts.map +1 -0
  100. package/dist/app-backend/modules/permissions-assert.js +226 -0
  101. package/dist/app-backend/modules/permissions-assert.js.map +1 -0
  102. package/{app-backend → dist/app-backend}/modules/permissions-share.d.ts +2 -1
  103. package/dist/app-backend/modules/permissions-share.d.ts.map +1 -0
  104. package/dist/app-backend/modules/permissions-share.js +13 -0
  105. package/dist/app-backend/modules/permissions-share.js.map +1 -0
  106. package/dist/app-frontend/core/module-pack.d.ts +9 -0
  107. package/dist/app-frontend/core/module-pack.d.ts.map +1 -0
  108. package/dist/app-frontend/core/module-pack.js +41 -0
  109. package/dist/app-frontend/core/module-pack.js.map +1 -0
  110. package/{app-frontend → dist/app-frontend}/modules/PermissionsComponent.d.ts +2 -1
  111. package/dist/app-frontend/modules/PermissionsComponent.d.ts.map +1 -0
  112. package/dist/app-frontend/modules/PermissionsComponent.js +19 -0
  113. package/dist/app-frontend/modules/PermissionsComponent.js.map +1 -0
  114. package/{app-frontend → dist/app-frontend}/modules/PermissionsModuleFE.d.ts +1 -0
  115. package/dist/app-frontend/modules/PermissionsModuleFE.d.ts.map +1 -0
  116. package/dist/app-frontend/modules/PermissionsModuleFE.js +80 -0
  117. package/dist/app-frontend/modules/PermissionsModuleFE.js.map +1 -0
  118. package/{app-frontend → dist/app-frontend}/modules/assign/ApiCaller_PermissionsGroup.d.ts +6 -5
  119. package/dist/app-frontend/modules/assign/ApiCaller_PermissionsGroup.d.ts.map +1 -0
  120. package/dist/app-frontend/modules/assign/ApiCaller_PermissionsGroup.js +50 -0
  121. package/dist/app-frontend/modules/assign/ApiCaller_PermissionsGroup.js.map +1 -0
  122. package/{app-frontend → dist/app-frontend}/modules/assign/ApiCaller_PermissionsUser.d.ts +6 -5
  123. package/dist/app-frontend/modules/assign/ApiCaller_PermissionsUser.d.ts.map +1 -0
  124. package/dist/app-frontend/modules/assign/ApiCaller_PermissionsUser.js +50 -0
  125. package/dist/app-frontend/modules/assign/ApiCaller_PermissionsUser.js.map +1 -0
  126. package/{app-frontend → dist/app-frontend}/modules/manage/ApiCaller_PermissionsApi.d.ts +6 -5
  127. package/dist/app-frontend/modules/manage/ApiCaller_PermissionsApi.d.ts.map +1 -0
  128. package/dist/app-frontend/modules/manage/ApiCaller_PermissionsApi.js +55 -0
  129. package/dist/app-frontend/modules/manage/ApiCaller_PermissionsApi.js.map +1 -0
  130. package/{app-frontend → dist/app-frontend}/modules/manage/ApiCaller_PermissionsDomain.d.ts +6 -5
  131. package/dist/app-frontend/modules/manage/ApiCaller_PermissionsDomain.d.ts.map +1 -0
  132. package/dist/app-frontend/modules/manage/ApiCaller_PermissionsDomain.js +61 -0
  133. package/dist/app-frontend/modules/manage/ApiCaller_PermissionsDomain.js.map +1 -0
  134. package/{app-frontend → dist/app-frontend}/modules/manage/ApiCaller_PermissionsLevel.d.ts +6 -5
  135. package/dist/app-frontend/modules/manage/ApiCaller_PermissionsLevel.d.ts.map +1 -0
  136. package/dist/app-frontend/modules/manage/ApiCaller_PermissionsLevel.js +61 -0
  137. package/dist/app-frontend/modules/manage/ApiCaller_PermissionsLevel.js.map +1 -0
  138. package/{app-frontend → dist/app-frontend}/modules/manage/ApiCaller_PermissionsProject.d.ts +6 -5
  139. package/dist/app-frontend/modules/manage/ApiCaller_PermissionsProject.d.ts.map +1 -0
  140. package/dist/app-frontend/modules/manage/ApiCaller_PermissionsProject.js +60 -0
  141. package/dist/app-frontend/modules/manage/ApiCaller_PermissionsProject.js.map +1 -0
  142. package/{app-frontend → dist/app-frontend}/modules/tags/ApiCaller_PermissionsTags.d.ts +6 -5
  143. package/dist/app-frontend/modules/tags/ApiCaller_PermissionsTags.d.ts.map +1 -0
  144. package/dist/app-frontend/modules/tags/ApiCaller_PermissionsTags.js +33 -0
  145. package/dist/app-frontend/modules/tags/ApiCaller_PermissionsTags.js.map +1 -0
  146. package/dist/backend.d.ts +2 -0
  147. package/dist/backend.d.ts.map +1 -0
  148. package/{shared/apis.js → dist/backend.js} +2 -3
  149. package/dist/backend.js.map +1 -0
  150. package/dist/frontend.d.ts +4 -0
  151. package/dist/frontend.d.ts.map +1 -0
  152. package/dist/frontend.js +21 -0
  153. package/dist/frontend.js.map +1 -0
  154. package/dist/index.d.ts +4 -0
  155. package/dist/index.d.ts.map +1 -0
  156. package/dist/index.js +21 -0
  157. package/dist/index.js.map +1 -0
  158. package/{shared → dist/shared}/apis.d.ts +6 -5
  159. package/dist/shared/apis.d.ts.map +1 -0
  160. package/dist/shared/apis.js +23 -0
  161. package/dist/shared/apis.js.map +1 -0
  162. package/{shared → dist/shared}/assign-types.d.ts +3 -2
  163. package/dist/shared/assign-types.d.ts.map +1 -0
  164. package/{shared/manager-types.js → dist/shared/assign-types.js} +3 -3
  165. package/{shared → dist/shared}/assign-types.js.map +1 -1
  166. package/{shared → dist/shared}/manager-types.d.ts +3 -2
  167. package/dist/shared/manager-types.d.ts.map +1 -0
  168. package/dist/shared/manager-types.js +20 -0
  169. package/{shared → dist/shared}/manager-types.js.map +1 -1
  170. package/dist/tsconfig.tsbuildinfo +1 -0
  171. package/package.json +66 -17
  172. package/app-backend/api/v1/permissions/_imports.d.ts +0 -2
  173. package/app-backend/api/v1/permissions/_imports.js +0 -36
  174. package/app-backend/api/v1/permissions/_permissions.d.ts +0 -1
  175. package/app-backend/api/v1/permissions/_permissions.js.map +0 -1
  176. package/app-backend/api/v1/permissions/assert.d.ts +0 -1
  177. package/app-backend/api/v1/permissions/assert.js +0 -47
  178. package/app-backend/api/v1/permissions/assert.js.map +0 -1
  179. package/app-backend/api/v1/permissions/assign/apis.d.ts +0 -1
  180. package/app-backend/api/v1/permissions/assign/apis.js.map +0 -1
  181. package/app-backend/api/v1/permissions/assign/app-permissions.d.ts +0 -1
  182. package/app-backend/api/v1/permissions/assign/app-permissions.js +0 -55
  183. package/app-backend/api/v1/permissions/assign/app-permissions.js.map +0 -1
  184. package/app-backend/api/v1/permissions/manage/apis.d.ts +0 -1
  185. package/app-backend/api/v1/permissions/manage/apis.js.map +0 -1
  186. package/app-backend/api/v1/permissions/tags/apis.d.ts +0 -1
  187. package/app-backend/api/v1/permissions/tags/apis.js +0 -5
  188. package/app-backend/api/v1/permissions/user-urls-permissions.d.ts +0 -1
  189. package/app-backend/api/v1/permissions/user-urls-permissions.js +0 -46
  190. package/app-backend/api/v1/permissions/user-urls-permissions.js.map +0 -1
  191. package/app-backend/api/v1/register/_register-project.d.ts +0 -1
  192. package/app-backend/api/v1/register/_register-project.js +0 -22
  193. package/app-backend/api/v1/register/_register-project.js.map +0 -1
  194. package/app-backend/api/v1/register/register-external-project.d.ts +0 -6
  195. package/app-backend/api/v1/register/register-external-project.js +0 -46
  196. package/app-backend/api/v1/register/register-external-project.js.map +0 -1
  197. package/app-backend/api/v1/register/register-project.d.ts +0 -8
  198. package/app-backend/api/v1/register/register-project.js +0 -29
  199. package/app-backend/api/v1/register/register-project.js.map +0 -1
  200. package/app-backend/api/v1/test/_imports.d.ts +0 -1
  201. package/app-backend/api/v1/test/_test-permissions.d.ts +0 -1
  202. package/app-backend/api/v1/test/_test-permissions.js +0 -22
  203. package/app-backend/api/v1/test/_test-permissions.js.map +0 -1
  204. package/app-backend/api/v1/test/test-permissions.d.ts +0 -1
  205. package/app-backend/api/v1/test/test-permissions.js +0 -45
  206. package/app-backend/api/v1/test/test-permissions.js.map +0 -1
  207. package/app-backend/api/v1/user-custom-fields/_user-custom-fields.d.ts +0 -1
  208. package/app-backend/api/v1/user-custom-fields/_user-custom-fields.js +0 -22
  209. package/app-backend/api/v1/user-custom-fields/_user-custom-fields.js.map +0 -1
  210. package/app-backend/api/v1/user-custom-fields/user-cf-by-share-groups.d.ts +0 -6
  211. package/app-backend/api/v1/user-custom-fields/user-cf-by-share-groups.js +0 -31
  212. package/app-backend/api/v1/user-custom-fields/user-cf-by-share-groups.js.map +0 -1
  213. package/app-backend/api/v1/user-custom-fields/users-cf-by-share-groups.d.ts +0 -6
  214. package/app-backend/api/v1/user-custom-fields/users-cf-by-share-groups.js +0 -30
  215. package/app-backend/api/v1/user-custom-fields/users-cf-by-share-groups.js.map +0 -1
  216. package/app-backend/benchmark/permission-user-assert-benchmark.js +0 -108
  217. package/app-backend/benchmark/permission-user-assert-benchmark.js.map +0 -1
  218. package/app-backend/core/module-pack.d.ts +0 -6
  219. package/app-backend/core/module-pack.js +0 -56
  220. package/app-backend/core/module-pack.js.map +0 -1
  221. package/app-backend/modules/PermissionsModule.js +0 -140
  222. package/app-backend/modules/PermissionsModule.js.map +0 -1
  223. package/app-backend/modules/TagsModule.js +0 -51
  224. package/app-backend/modules/TagsModule.js.map +0 -1
  225. package/app-backend/modules/_imports.js +0 -44
  226. package/app-backend/modules/_imports.js.map +0 -1
  227. package/app-backend/modules/db-types/assign.js +0 -288
  228. package/app-backend/modules/db-types/assign.js.map +0 -1
  229. package/app-backend/modules/db-types/managment.js +0 -242
  230. package/app-backend/modules/db-types/managment.js.map +0 -1
  231. package/app-backend/modules/permissions-assert.js +0 -250
  232. package/app-backend/modules/permissions-assert.js.map +0 -1
  233. package/app-backend/modules/permissions-share.js +0 -27
  234. package/app-backend/modules/permissions-share.js.map +0 -1
  235. package/app-frontend/core/module-pack.d.ts +0 -8
  236. package/app-frontend/core/module-pack.js +0 -58
  237. package/app-frontend/core/module-pack.js.map +0 -1
  238. package/app-frontend/modules/PermissionsComponent.js +0 -23
  239. package/app-frontend/modules/PermissionsComponent.js.map +0 -1
  240. package/app-frontend/modules/PermissionsModuleFE.js +0 -92
  241. package/app-frontend/modules/PermissionsModuleFE.js.map +0 -1
  242. package/app-frontend/modules/assign/ApiCaller_PermissionsGroup.js +0 -55
  243. package/app-frontend/modules/assign/ApiCaller_PermissionsGroup.js.map +0 -1
  244. package/app-frontend/modules/assign/ApiCaller_PermissionsUser.js +0 -72
  245. package/app-frontend/modules/assign/ApiCaller_PermissionsUser.js.map +0 -1
  246. package/app-frontend/modules/manage/ApiCaller_PermissionsApi.js +0 -76
  247. package/app-frontend/modules/manage/ApiCaller_PermissionsApi.js.map +0 -1
  248. package/app-frontend/modules/manage/ApiCaller_PermissionsDomain.js +0 -83
  249. package/app-frontend/modules/manage/ApiCaller_PermissionsDomain.js.map +0 -1
  250. package/app-frontend/modules/manage/ApiCaller_PermissionsLevel.js +0 -83
  251. package/app-frontend/modules/manage/ApiCaller_PermissionsLevel.js.map +0 -1
  252. package/app-frontend/modules/manage/ApiCaller_PermissionsProject.js +0 -82
  253. package/app-frontend/modules/manage/ApiCaller_PermissionsProject.js.map +0 -1
  254. package/app-frontend/modules/tags/ApiCaller_PermissionsTags.js +0 -55
  255. package/app-frontend/modules/tags/ApiCaller_PermissionsTags.js.map +0 -1
  256. package/backend.d.ts +0 -1
  257. package/backend.js +0 -35
  258. package/backend.js.map +0 -1
  259. package/frontend.d.ts +0 -3
  260. package/frontend.js +0 -37
  261. package/frontend.js.map +0 -1
  262. package/index.d.ts +0 -3
  263. package/index.js +0 -37
  264. package/index.js.map +0 -1
  265. package/shared/apis.js.map +0 -1
@@ -0,0 +1,226 @@
1
+ /*
2
+ * ts-common is the basic building blocks of our typescript projects
3
+ *
4
+ * Copyright (C) 2020 Intuition Robotics
5
+ *
6
+ * Licensed under the Apache License, Version 2.0 (the "License");
7
+ * you may not use this file except in compliance with the License.
8
+ * You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing, software
13
+ * distributed under the License is distributed on an "AS IS" BASIS,
14
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ * See the License for the specific language governing permissions and
16
+ * limitations under the License.
17
+ */
18
+ import { _keys, BadImplementationException, batchActionParallel, filterDuplicates, Module } from "@intuitionrobotics/ts-common";
19
+ import { ApiException, ApiResponse } from "@intuitionrobotics/thunderstorm/backend";
20
+ import {} from "../../index.js";
21
+ import { AccessLevelPermissionsDB, ApiPermissionsDB } from "./db-types/managment.js";
22
+ import { GroupPermissionsDB, UserPermissionsDB } from "./db-types/assign.js";
23
+ import { HttpMethod } from "@intuitionrobotics/thunderstorm";
24
+ import { AccountModule } from "@intuitionrobotics/user-account/backend";
25
+ import { PermissionsModule } from "./PermissionsModule.js";
26
+ export class PermissionsAssert_Class extends Module {
27
+ constructor() {
28
+ super("PermissionsAssert");
29
+ }
30
+ Middleware = (keys) => async (req, data, response, scopes) => {
31
+ let account;
32
+ await this.CustomMiddleware(keys, async (projectId, customFields) => {
33
+ account = await AccountModule.validateSession(req, scopes, response);
34
+ await this.assertUserPermissions(projectId, data.url, account._id, customFields);
35
+ })(req, data, response, scopes);
36
+ return { account };
37
+ };
38
+ CustomMiddleware = (keys, action) => async (req, data, _response) => {
39
+ const customFields = {};
40
+ let object;
41
+ switch (data.method) {
42
+ case HttpMethod.POST:
43
+ case HttpMethod.PATCH:
44
+ case HttpMethod.PUT:
45
+ object = data.body;
46
+ break;
47
+ case HttpMethod.GET:
48
+ case HttpMethod.DELETE:
49
+ object = data.query;
50
+ break;
51
+ default:
52
+ throw new BadImplementationException(`Generic custom fields cannot be extracted on api with method: ${data.method}`);
53
+ }
54
+ _keys(object).filter(key => keys.includes(key)).forEach(key => {
55
+ const oElement = object[key];
56
+ if (oElement === undefined || oElement === null)
57
+ return;
58
+ if (typeof oElement !== "string")
59
+ return;
60
+ customFields[key] = oElement;
61
+ });
62
+ const projectId = PermissionsModule.getProjectIdentity()._id;
63
+ await action(projectId, customFields);
64
+ };
65
+ async assertUserPermissions(projectId, path, userId, requestCustomField) {
66
+ const [apiDetails, userDetails] = await Promise.all([
67
+ this.getApiDetails(path, projectId),
68
+ this.getUserDetails(userId)
69
+ ]);
70
+ this._assertUserPermissionsImpl(apiDetails, projectId, userDetails, requestCustomField);
71
+ }
72
+ _assertUserPermissionsImpl(apiDetails, projectId, userDetails, requestCustomField) {
73
+ if (!apiDetails.apiDb.accessLevelIds) {
74
+ if (!this.config.strictMode)
75
+ return;
76
+ throw new ApiException(403, `No permissions configuration specified for api: ${projectId}--${apiDetails.apiDb.path}`);
77
+ }
78
+ this.assertUserPermissionsImpl(userDetails.userGroups, apiDetails.requestPermissions, [requestCustomField]);
79
+ }
80
+ async assertUserSharingGroup(granterUserId, userGroup) {
81
+ const [granterUser, groupToShare] = await Promise.all([this.getUserDetails(granterUserId), GroupPermissionsDB.queryUnique({ _id: userGroup.groupId })]);
82
+ groupToShare.customFields = this.getCombineUserGroupCF(userGroup, groupToShare);
83
+ const requestPermissions = await this.getAccessLevels(groupToShare.accessLevelIds || []);
84
+ const requestCustomFields = groupToShare.customFields;
85
+ this.assertUserPermissionsImpl(granterUser.userGroups, requestPermissions, requestCustomFields);
86
+ }
87
+ assertUserPermissionsImpl(userGroups, requestPermissions, requestCustomFields) {
88
+ if (!requestPermissions.length)
89
+ return;
90
+ const requestPairWithLevelsObj = { accessLevels: requestPermissions, customFields: requestCustomFields };
91
+ let groupMatch = false;
92
+ const groupsMatchArray = userGroups.map(group => {
93
+ const groupPairWithLevelsObj = { accessLevels: group.__accessLevels || [], customFields: group.customFields || [] };
94
+ return this.isMatchWithLevelsObj(groupPairWithLevelsObj, requestPairWithLevelsObj);
95
+ });
96
+ for (const match of groupsMatchArray) {
97
+ if (match)
98
+ groupMatch = true;
99
+ }
100
+ if (!groupMatch) {
101
+ throw new ApiException(403, "Action Forbidden");
102
+ }
103
+ }
104
+ async getUserDetails(uuid) {
105
+ const user = await UserPermissionsDB.queryUnique({ accountId: uuid });
106
+ const userGroups = filterDuplicates(user.groups || []);
107
+ const groups = await batchActionParallel(userGroups.map(userGroup => userGroup.groupId), 10, subGroupIds => GroupPermissionsDB.query({ where: { _id: { $in: subGroupIds } } }));
108
+ return {
109
+ user,
110
+ userGroups: this.getCombineUserGroups(userGroups, groups)
111
+ };
112
+ }
113
+ getCombineUserGroupCF(userGroup, group) {
114
+ const cfArray = [];
115
+ if (group.customFields) {
116
+ cfArray.push(...group.customFields);
117
+ }
118
+ if (userGroup.customField) {
119
+ cfArray.push(userGroup.customField);
120
+ }
121
+ return cfArray;
122
+ }
123
+ getCombineUserGroups(userGroups, groups) {
124
+ const combinedGroups = [];
125
+ groups.forEach(group => {
126
+ const existUserGroupItem = userGroups.find(groupItem => groupItem.groupId === group._id);
127
+ if (!existUserGroupItem)
128
+ throw new BadImplementationException("You are missing group in your code implementation");
129
+ userGroups.forEach((userGroup) => {
130
+ if (userGroup.groupId === group._id) {
131
+ combinedGroups.push({ ...group, customFields: this.getCombineUserGroupCF(userGroup, group) });
132
+ }
133
+ });
134
+ });
135
+ return combinedGroups;
136
+ }
137
+ async getApiDetails(_path, projectId) {
138
+ const path = _path.substring(0, (_path + '?').indexOf('?'));
139
+ const apiDb = await ApiPermissionsDB.queryUnique({ path, projectId });
140
+ const requestPermissions = await this.getAccessLevels(apiDb.accessLevelIds || []);
141
+ return {
142
+ apiDb,
143
+ requestPermissions
144
+ };
145
+ }
146
+ async getApisDetails(urls, projectId) {
147
+ const paths = urls.map(_path => _path.substring(0, (_path + '?').indexOf('?')));
148
+ const apiDbs = await batchActionParallel(paths, 10, elements => ApiPermissionsDB.query({ where: { projectId, path: { $in: elements } } }));
149
+ return Promise.all(paths.map(async (path) => {
150
+ const apiDb = apiDbs.find(_apiDb => _apiDb.path === path);
151
+ if (!apiDb)
152
+ return;
153
+ try {
154
+ const requestPermissions = await this.getAccessLevels(apiDb.accessLevelIds);
155
+ return ({
156
+ apiDb,
157
+ requestPermissions
158
+ });
159
+ }
160
+ catch (_e) {
161
+ return;
162
+ }
163
+ }));
164
+ }
165
+ async getAccessLevels(_accessLevelIds) {
166
+ const accessLevelIds = filterDuplicates(_accessLevelIds || []);
167
+ const requestPermissions = await batchActionParallel(accessLevelIds, 10, elements => AccessLevelPermissionsDB.query({ where: { _id: { $in: elements } } }));
168
+ const idNotFound = accessLevelIds.find(lId => !requestPermissions.find(r => r._id === lId));
169
+ if (idNotFound)
170
+ throw new ApiException(404, `Could not find api level with _id: ${idNotFound}`);
171
+ return requestPermissions;
172
+ }
173
+ isMatchWithLevelsObj(groupPair, requestPair) {
174
+ let match = true;
175
+ requestPair.customFields.forEach(requestCF => {
176
+ if (!this.doesCustomFieldsSatisfies(groupPair.customFields, requestCF))
177
+ match = false;
178
+ });
179
+ if (!match)
180
+ return false;
181
+ const groupDomainLevelMap = this.getDomainLevelMap(groupPair.accessLevels);
182
+ requestPair.accessLevels.forEach((requiredLevel, _index) => {
183
+ const userAccessLevel = groupDomainLevelMap[requiredLevel.domainId];
184
+ if (userAccessLevel === undefined || userAccessLevel < requiredLevel.value)
185
+ match = false;
186
+ });
187
+ return match;
188
+ }
189
+ getDomainLevelMap(accessLevels) {
190
+ return accessLevels.reduce((toRet, accessLevel) => {
191
+ const levelForDomain = toRet[accessLevel.domainId];
192
+ if (!levelForDomain || levelForDomain < accessLevel.value)
193
+ toRet[accessLevel.domainId] = accessLevel.value;
194
+ return toRet;
195
+ }, {});
196
+ }
197
+ doesCustomFieldsSatisfies(groupCustomFields = [], requestCustomField) {
198
+ if (!Object.keys(requestCustomField).length)
199
+ return true;
200
+ for (const customField of groupCustomFields) {
201
+ if (this.doesCustomFieldSatisfies(customField, requestCustomField))
202
+ return true;
203
+ }
204
+ return false;
205
+ }
206
+ doesCustomFieldSatisfies(groupCustomField, requestCustomField) {
207
+ return Object.keys(requestCustomField).reduce((doesSatisfies, requestCustomFieldKey) => {
208
+ const customFieldRegEx = this.getRegEx(groupCustomField[requestCustomFieldKey]);
209
+ return doesSatisfies && customFieldRegEx.test(requestCustomField[requestCustomFieldKey]);
210
+ }, true);
211
+ }
212
+ getRegEx(value) {
213
+ if (!value)
214
+ return new RegExp(`^${value}$`, "g");
215
+ let regExValue = value;
216
+ const startRegEx = '^';
217
+ const endRegEx = '$';
218
+ if (value[0] !== startRegEx)
219
+ regExValue = startRegEx + regExValue;
220
+ if (value[value.length - 1] !== endRegEx)
221
+ regExValue = regExValue + endRegEx;
222
+ return new RegExp(regExValue, "g");
223
+ }
224
+ }
225
+ export const PermissionsAssert = new PermissionsAssert_Class();
226
+ //# sourceMappingURL=permissions-assert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions-assert.js","sourceRoot":"","sources":["../../../src/main/app-backend/modules/permissions-assert.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  import { Module } from "@intuitionrobotics/ts-common";
2
- import { User_Group } from "../..";
2
+ import { type User_Group } from "../../index.js";
3
3
  export declare class PermissionsShare_Class extends Module {
4
4
  constructor();
5
5
  verifyPermissionGrantingAllowed(granterUserId: string, shareGroup: User_Group): Promise<void>;
6
6
  }
7
7
  export declare const PermissionsShare: PermissionsShare_Class;
8
+ //# sourceMappingURL=permissions-share.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions-share.d.ts","sourceRoot":"","sources":["../../../src/main/app-backend/modules/permissions-share.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,8BAA8B,CAAC;AACpD,OAAO,EACN,KAAK,UAAU,EACf,MAAM,gBAAgB,CAAC;AAMxB,qBAAa,sBACZ,SAAQ,MAAM;;IAMR,+BAA+B,CAAC,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU;CAInF;AAED,eAAO,MAAM,gBAAgB,wBAA+B,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { Module } from "@intuitionrobotics/ts-common";
2
+ import {} from "../../index.js";
3
+ import { PermissionsAssert } from "./permissions-assert.js";
4
+ export class PermissionsShare_Class extends Module {
5
+ constructor() {
6
+ super("PermissionsShare");
7
+ }
8
+ async verifyPermissionGrantingAllowed(granterUserId, shareGroup) {
9
+ await PermissionsAssert.assertUserSharingGroup(granterUserId, shareGroup);
10
+ }
11
+ }
12
+ export const PermissionsShare = new PermissionsShare_Class();
13
+ //# sourceMappingURL=permissions-share.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions-share.js","sourceRoot":"","sources":["../../../src/main/app-backend/modules/permissions-share.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,8BAA8B,CAAC;AACpD,OAAO,EAEN,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACN,iBAAiB,EACjB,MAAM,yBAAyB,CAAC;AAGjC,MAAM,OAAO,sBACZ,SAAQ,MAAM;IAEd;QACC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,+BAA+B,CAAC,aAAqB,EAAE,UAAsB;QAClF,MAAM,iBAAiB,CAAC,sBAAsB,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;IAC3E,CAAC;CAED;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,sBAAsB,EAAE,CAAC"}
@@ -0,0 +1,9 @@
1
+ export declare const Frontend_ModulePack_Permissions: (import("../modules/assign/ApiCaller_PermissionsUser.js").PermissionsUserModule_Class | import("../modules/assign/ApiCaller_PermissionsGroup.js").PermissionsGroupModule_Class | import("../modules/manage/ApiCaller_PermissionsProject.js").PermissionsProjectModule_Class | import("../modules/manage/ApiCaller_PermissionsDomain.js").PermissionsDomainModule_Class | import("../modules/manage/ApiCaller_PermissionsLevel.js").PermissionsAccessLevelModule_Class | import("../modules/manage/ApiCaller_PermissionsApi.js").PermissionsApiModule_Class | import("../modules/tags/ApiCaller_PermissionsTags.js").PermissionsTagsModule_Class)[];
2
+ export * from "../modules/assign/ApiCaller_PermissionsUser.js";
3
+ export * from "../modules/assign/ApiCaller_PermissionsGroup.js";
4
+ export * from "../modules/manage/ApiCaller_PermissionsProject.js";
5
+ export * from "../modules/manage/ApiCaller_PermissionsDomain.js";
6
+ export * from "../modules/manage/ApiCaller_PermissionsLevel.js";
7
+ export * from "../modules/manage/ApiCaller_PermissionsApi.js";
8
+ export * from "../modules/tags/ApiCaller_PermissionsTags.js";
9
+ //# sourceMappingURL=module-pack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-pack.d.ts","sourceRoot":"","sources":["../../../src/main/app-frontend/core/module-pack.ts"],"names":[],"mappings":"AA0BA,eAAO,MAAM,+BAA+B,onBAQ3C,CAAC;AAEF,cAAc,gDAAgD,CAAA;AAC9D,cAAc,iDAAiD,CAAA;AAC/D,cAAc,mDAAmD,CAAA;AACjE,cAAc,kDAAkD,CAAA;AAChE,cAAc,iDAAiD,CAAA;AAC/D,cAAc,+CAA+C,CAAA;AAC7D,cAAc,8CAA8C,CAAA"}
@@ -0,0 +1,41 @@
1
+ /*
2
+ * ts-common is the basic building blocks of our typescript projects
3
+ *
4
+ * Copyright (C) 2020 Intuition Robotics
5
+ *
6
+ * Licensed under the Apache License, Version 2.0 (the "License");
7
+ * you may not use this file except in compliance with the License.
8
+ * You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing, software
13
+ * distributed under the License is distributed on an "AS IS" BASIS,
14
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ * See the License for the specific language governing permissions and
16
+ * limitations under the License.
17
+ */
18
+ import { ApiCaller_PermissionsUser } from "../modules/assign/ApiCaller_PermissionsUser.js";
19
+ import { ApiCaller_PermissionsGroup } from "../modules/assign/ApiCaller_PermissionsGroup.js";
20
+ import { ApiCaller_PermissionsProject } from "../modules/manage/ApiCaller_PermissionsProject.js";
21
+ import { ApiCaller_PermissionsDomain } from "../modules/manage/ApiCaller_PermissionsDomain.js";
22
+ import { ApiCaller_PermissionsAccessLevel } from "../modules/manage/ApiCaller_PermissionsLevel.js";
23
+ import { ApiCaller_PermissionsApi } from "../modules/manage/ApiCaller_PermissionsApi.js";
24
+ import { ApiCaller_PermissionsTags } from "../modules/tags/ApiCaller_PermissionsTags.js";
25
+ export const Frontend_ModulePack_Permissions = [
26
+ ApiCaller_PermissionsUser,
27
+ ApiCaller_PermissionsGroup,
28
+ ApiCaller_PermissionsProject,
29
+ ApiCaller_PermissionsDomain,
30
+ ApiCaller_PermissionsAccessLevel,
31
+ ApiCaller_PermissionsApi,
32
+ ApiCaller_PermissionsTags
33
+ ];
34
+ export * from "../modules/assign/ApiCaller_PermissionsUser.js";
35
+ export * from "../modules/assign/ApiCaller_PermissionsGroup.js";
36
+ export * from "../modules/manage/ApiCaller_PermissionsProject.js";
37
+ export * from "../modules/manage/ApiCaller_PermissionsDomain.js";
38
+ export * from "../modules/manage/ApiCaller_PermissionsLevel.js";
39
+ export * from "../modules/manage/ApiCaller_PermissionsApi.js";
40
+ export * from "../modules/tags/ApiCaller_PermissionsTags.js";
41
+ //# sourceMappingURL=module-pack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-pack.js","sourceRoot":"","sources":["../../../src/main/app-frontend/core/module-pack.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAC,yBAAyB,EAAC,MAAM,gDAAgD,CAAC;AACzF,OAAO,EAAC,0BAA0B,EAAC,MAAM,iDAAiD,CAAC;AAC3F,OAAO,EAAC,4BAA4B,EAAC,MAAM,mDAAmD,CAAC;AAC/F,OAAO,EAAC,2BAA2B,EAAC,MAAM,kDAAkD,CAAC;AAC7F,OAAO,EAAC,gCAAgC,EAAC,MAAM,iDAAiD,CAAC;AACjG,OAAO,EAAC,wBAAwB,EAAC,MAAM,+CAA+C,CAAC;AACvF,OAAO,EAAC,yBAAyB,EAAC,MAAM,8CAA8C,CAAC;AAEvF,MAAM,CAAC,MAAM,+BAA+B,GAAG;IAC9C,yBAAyB;IACzB,0BAA0B;IAC1B,4BAA4B;IAC5B,2BAA2B;IAC3B,gCAAgC;IAChC,wBAAwB;IACxB,yBAAyB;CACzB,CAAC;AAEF,cAAc,gDAAgD,CAAA;AAC9D,cAAc,iDAAiD,CAAA;AAC/D,cAAc,mDAAmD,CAAA;AACjE,cAAc,kDAAkD,CAAA;AAChE,cAAc,iDAAiD,CAAA;AAC/D,cAAc,+CAA+C,CAAA;AAC7D,cAAc,8CAA8C,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import * as React from "react";
2
2
  import { BaseComponent } from "@intuitionrobotics/thunderstorm/frontend";
3
- import { OnPermissionsChanged } from "./PermissionsModuleFE";
3
+ import { type OnPermissionsChanged } from "./PermissionsModuleFE.js";
4
4
  type Props = {
5
5
  url: string;
6
6
  loadingComponent?: React.ComponentType;
@@ -12,3 +12,4 @@ export declare class PermissionsComponent extends BaseComponent<Props> implement
12
12
  render(): string | number | boolean | Iterable<React.ReactNode> | React.JSX.Element | null | undefined;
13
13
  }
14
14
  export {};
15
+ //# sourceMappingURL=PermissionsComponent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PermissionsComponent.d.ts","sourceRoot":"","sources":["../../../src/main/app-frontend/modules/PermissionsComponent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAC,aAAa,EAAC,MAAM,0CAA0C,CAAC;AACvE,OAAO,EACN,KAAK,oBAAoB,EAEzB,MAAM,0BAA0B,CAAC;AAElC,KAAK,KAAK,GAAG;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,gBAAgB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAA;IACtC,QAAQ,CAAC,EAAE,KAAK,CAAC,aAAa,CAAA;IAC9B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CACzB,CAAA;AAED,qBAAa,oBACZ,SAAQ,aAAa,CAAC,KAAK,CAC3B,YAAW,oBAAoB;IAE/B,sBAAsB;IAItB,MAAM;CAaN"}
@@ -0,0 +1,19 @@
1
+ import * as React from "react";
2
+ import { BaseComponent } from "@intuitionrobotics/thunderstorm/frontend";
3
+ import { PermissionsFE } from "./PermissionsModuleFE.js";
4
+ export class PermissionsComponent extends BaseComponent {
5
+ __onPermissionsChanged() {
6
+ this.forceUpdate();
7
+ }
8
+ render() {
9
+ const permitted = PermissionsFE.doesUserHavePermissions(this.props.url);
10
+ if (permitted === undefined)
11
+ return this.props.loadingComponent ? React.createElement(this.props.loadingComponent, null) : null;
12
+ if (permitted)
13
+ return this.props.children;
14
+ if (this.props.fallback)
15
+ return React.createElement(this.props.fallback, null);
16
+ return null;
17
+ }
18
+ }
19
+ //# sourceMappingURL=PermissionsComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PermissionsComponent.js","sourceRoot":"","sources":["../../../src/main/app-frontend/modules/PermissionsComponent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAC,aAAa,EAAC,MAAM,0CAA0C,CAAC;AACvE,OAAO,EAEN,aAAa,EACb,MAAM,0BAA0B,CAAC;AASlC,MAAM,OAAO,oBACZ,SAAQ,aAAoB;IAG5B,sBAAsB;QACrB,IAAI,CAAC,WAAW,EAAE,CAAC;IACpB,CAAC;IAED,MAAM;QACL,MAAM,SAAS,GAAG,aAAa,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxE,IAAI,SAAS,KAAK,SAAS;YAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,oBAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,OAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAE5E,IAAI,SAAS;YACZ,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QAE5B,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ;YACtB,OAAO,oBAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,OAAE,CAAC;QAE/B,OAAO,IAAI,CAAC;IACb,CAAC;CACD"}
@@ -22,3 +22,4 @@ export declare class PermissionsModuleFE_Class extends Module<PermissionsModuleF
22
22
  private setPermissions;
23
23
  }
24
24
  export declare const PermissionsFE: PermissionsModuleFE_Class;
25
+ //# sourceMappingURL=PermissionsModuleFE.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PermissionsModuleFE.d.ts","sourceRoot":"","sources":["../../../src/main/app-frontend/modules/PermissionsModuleFE.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,MAAM,EAGN,MAAM,8BAA8B,CAAC;AAStC,MAAM,MAAM,yBAAyB,GAAG;IACvC,SAAS,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,MAAM,WAAW,oBAAoB;IACpC,sBAAsB,EAAE,MAAM,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,mBAAmB;IACnC,qBAAqB,EAAE,MAAM,IAAI,CAAC;CAClC;AAKD,qBAAa,yBACZ,SAAQ,MAAM,CAAC,yBAAyB,CAAC;IACzC,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,mBAAmB,CAA2B;IACtD,OAAO,CAAC,kBAAkB,CAAiB;IAC3C,OAAO,CAAC,YAAY,CAAO;IAC3B,OAAO,CAAC,YAAY,CAAK;;IAMzB,eAAe,CAAC,IAAI,EAAE,MAAM;IAI5B,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAKzC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE;IAWvB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAazD,OAAO,CAAC,cAAc,CAoCpB;CAEF;AAED,eAAO,MAAM,aAAa,2BAAkC,CAAC"}
@@ -0,0 +1,80 @@
1
+ import { _setTimeout, ImplementationMissingException, Module, Second } from "@intuitionrobotics/ts-common";
2
+ import { ThunderDispatcher } from "@intuitionrobotics/thunderstorm/app-frontend/core/thunder-dispatcher";
3
+ import { XhrHttpModule } from "@intuitionrobotics/thunderstorm/frontend";
4
+ import { HttpMethod } from "@intuitionrobotics/thunderstorm";
5
+ import {} from "../../index.js";
6
+ const dispatch_onPermissionsChanged = new ThunderDispatcher("__onPermissionsChanged");
7
+ const dispatch_onPermissionsFailed = new ThunderDispatcher("__onPermissionsFailed");
8
+ export class PermissionsModuleFE_Class extends Module {
9
+ loadingUrls = new Set();
10
+ userUrlsPermissions = {};
11
+ requestCustomField = {};
12
+ debounceTime = 100;
13
+ retryCounter = 0;
14
+ constructor() {
15
+ super("PermissionsModuleFE");
16
+ }
17
+ setDebounceTime(time) {
18
+ this.debounceTime = time;
19
+ }
20
+ setCustomField(key, value) {
21
+ this.requestCustomField[key] = value;
22
+ this.setPermissions();
23
+ }
24
+ loadUrls(urls) {
25
+ urls.forEach(url => {
26
+ if (this.loadingUrls.has(url) || this.userUrlsPermissions[url] !== undefined)
27
+ return;
28
+ this.loadingUrls.add(url);
29
+ });
30
+ this.setPermissions();
31
+ }
32
+ doesUserHavePermissions(url) {
33
+ if (this.loadingUrls.has(url))
34
+ return undefined;
35
+ const permitted = this.userUrlsPermissions[url];
36
+ if (permitted !== undefined)
37
+ return permitted;
38
+ this.loadingUrls.add(url);
39
+ this.setPermissions();
40
+ return undefined;
41
+ }
42
+ setPermissions = () => {
43
+ if (!this.config || !this.config.projectId)
44
+ throw new ImplementationMissingException("need to set up a project id config");
45
+ this.debounce(() => {
46
+ const urls = {};
47
+ this.loadingUrls.forEach(url => {
48
+ urls[url] = false;
49
+ });
50
+ XhrHttpModule
51
+ .createRequest(HttpMethod.POST, "user-urls-permissions")
52
+ .setRelativeUrl(`/v1/permissions/user-urls-permissions`)
53
+ // .setOnError(`Failed to get user urls permissions`)
54
+ .setLabel(`Getting user urls permissions`)
55
+ .setJsonBody({
56
+ projectId: this.config.projectId,
57
+ urls: urls,
58
+ requestCustomField: this.requestCustomField
59
+ })
60
+ .setOnError(() => {
61
+ this.logWarning(`Failed to get user urls permissions`);
62
+ if (this.retryCounter < 5) {
63
+ this.retryCounter++;
64
+ return _setTimeout(this.setPermissions, 5 * Second);
65
+ }
66
+ dispatch_onPermissionsFailed.dispatchModule();
67
+ })
68
+ .execute(async (userUrlsPermissions) => {
69
+ this.retryCounter = 0;
70
+ Object.keys(userUrlsPermissions).forEach(url => {
71
+ this.loadingUrls.delete(url);
72
+ this.userUrlsPermissions[url] = userUrlsPermissions[url];
73
+ });
74
+ dispatch_onPermissionsChanged.dispatchUI();
75
+ });
76
+ }, "get-permissions", this.debounceTime);
77
+ };
78
+ }
79
+ export const PermissionsFE = new PermissionsModuleFE_Class();
80
+ //# sourceMappingURL=PermissionsModuleFE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PermissionsModuleFE.js","sourceRoot":"","sources":["../../../src/main/app-frontend/modules/PermissionsModuleFE.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { DB_PermissionsGroup } from "../../../index";
1
+ import { type DB_PermissionsGroup } from "../../../index.js";
2
2
  import { BaseDB_ApiGeneratorCaller } from "@intuitionrobotics/db-api-generator/frontend";
3
3
  export interface OnPermissionsGroupsLoaded {
4
4
  __onPermissionsGroupsLoaded: () => void;
@@ -7,11 +7,12 @@ export declare class PermissionsGroupModule_Class extends BaseDB_ApiGeneratorCal
7
7
  private groups;
8
8
  constructor();
9
9
  protected init(): void;
10
- protected onEntryCreated(response: DB_PermissionsGroup): Promise<void>;
11
- protected onEntryDeleted(response: DB_PermissionsGroup): Promise<void>;
12
- protected onEntryUpdated(response: DB_PermissionsGroup): Promise<void>;
13
- protected onGotUnique(response: DB_PermissionsGroup): Promise<void>;
10
+ protected onEntryCreated(_response: DB_PermissionsGroup): Promise<void>;
11
+ protected onEntryDeleted(_response: DB_PermissionsGroup): Promise<void>;
12
+ protected onEntryUpdated(_response: DB_PermissionsGroup): Promise<void>;
13
+ protected onGotUnique(_response: DB_PermissionsGroup): Promise<void>;
14
14
  protected onQueryReturned(response: DB_PermissionsGroup[]): Promise<void>;
15
15
  getGroups(): DB_PermissionsGroup[];
16
16
  }
17
17
  export declare const ApiCaller_PermissionsGroup: PermissionsGroupModule_Class;
18
+ //# sourceMappingURL=ApiCaller_PermissionsGroup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApiCaller_PermissionsGroup.d.ts","sourceRoot":"","sources":["../../../../src/main/app-frontend/modules/assign/ApiCaller_PermissionsGroup.ts"],"names":[],"mappings":"AAiBA,OAAO,EACN,KAAK,mBAAmB,EACxB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAC,yBAAyB,EAAC,MAAM,8CAA8C,CAAC;AAMvF,MAAM,WAAW,yBAAyB;IACzC,2BAA2B,EAAE,MAAM,IAAI,CAAC;CACxC;AAID,qBAAa,4BACZ,SAAQ,yBAAyB,CAAC,mBAAmB,CAAC;IACtD,OAAO,CAAC,MAAM,CAA6B;;IAM3C,SAAS,CAAC,IAAI,IAAI,IAAI;cAIN,cAAc,CAAC,SAAS,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;cAI7D,cAAc,CAAC,SAAS,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;cAI7D,cAAc,CAAC,SAAS,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;cAI7D,WAAW,CAAC,SAAS,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;cAG1D,eAAe,CAAC,QAAQ,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAK/E,SAAS;CAIT;AAED,eAAO,MAAM,0BAA0B,8BAAqC,CAAC"}
@@ -0,0 +1,50 @@
1
+ /*
2
+ * ts-common is the basic building blocks of our typescript projects
3
+ *
4
+ * Copyright (C) 2020 Intuition Robotics
5
+ *
6
+ * Licensed under the Apache License, Version 2.0 (the "License");
7
+ * you may not use this file except in compliance with the License.
8
+ * You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing, software
13
+ * distributed under the License is distributed on an "AS IS" BASIS,
14
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ * See the License for the specific language governing permissions and
16
+ * limitations under the License.
17
+ */
18
+ import {} from "../../../index.js";
19
+ import { BaseDB_ApiGeneratorCaller } from "@intuitionrobotics/db-api-generator/frontend";
20
+ import { ThunderDispatcher } from "@intuitionrobotics/thunderstorm/frontend";
21
+ const dispatch_onPermissionsGroupsLoaded = new ThunderDispatcher("__onPermissionsGroupsLoaded");
22
+ export class PermissionsGroupModule_Class extends BaseDB_ApiGeneratorCaller {
23
+ groups = [];
24
+ constructor() {
25
+ super({ key: "group", relativeUrl: "/v1/permissions/assign/group" }, "PermissionsGroupModule");
26
+ }
27
+ init() {
28
+ super.init();
29
+ }
30
+ async onEntryCreated(_response) {
31
+ this.query();
32
+ }
33
+ async onEntryDeleted(_response) {
34
+ this.query();
35
+ }
36
+ async onEntryUpdated(_response) {
37
+ this.query();
38
+ }
39
+ async onGotUnique(_response) {
40
+ }
41
+ async onQueryReturned(response) {
42
+ this.groups = response;
43
+ dispatch_onPermissionsGroupsLoaded.dispatchUI();
44
+ }
45
+ getGroups() {
46
+ return this.groups;
47
+ }
48
+ }
49
+ export const ApiCaller_PermissionsGroup = new PermissionsGroupModule_Class();
50
+ //# sourceMappingURL=ApiCaller_PermissionsGroup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApiCaller_PermissionsGroup.js","sourceRoot":"","sources":["../../../../src/main/app-frontend/modules/assign/ApiCaller_PermissionsGroup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAEN,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAC,yBAAyB,EAAC,MAAM,8CAA8C,CAAC;AACvF,OAAO,EACN,iBAAiB,EACjB,MAAM,0CAA0C,CAAC;AAOlD,MAAM,kCAAkC,GAAG,IAAI,iBAAiB,CAA2D,6BAA6B,CAAC,CAAC;AAE1J,MAAM,OAAO,4BACZ,SAAQ,yBAA8C;IAC9C,MAAM,GAA0B,EAAE,CAAC;IAE3C;QACC,KAAK,CAAC,EAAC,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,8BAA8B,EAAC,EAAE,wBAAwB,CAAC,CAAC;IAC9F,CAAC;IAES,IAAI;QACb,KAAK,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAES,KAAK,CAAC,cAAc,CAAC,SAA8B;QAC5D,IAAI,CAAC,KAAK,EAAE,CAAC;IACd,CAAC;IAES,KAAK,CAAC,cAAc,CAAC,SAA8B;QAC5D,IAAI,CAAC,KAAK,EAAE,CAAC;IACd,CAAC;IAES,KAAK,CAAC,cAAc,CAAC,SAA8B;QAC5D,IAAI,CAAC,KAAK,EAAE,CAAC;IACd,CAAC;IAES,KAAK,CAAC,WAAW,CAAC,SAA8B;IAC1D,CAAC;IAES,KAAK,CAAC,eAAe,CAAC,QAA+B;QAC9D,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;QACvB,kCAAkC,CAAC,UAAU,EAAE,CAAC;IACjD,CAAC;IAED,SAAS;QACR,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;CAED;AAED,MAAM,CAAC,MAAM,0BAA0B,GAAG,IAAI,4BAA4B,EAAE,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { BaseDB_ApiGeneratorCaller } from "@intuitionrobotics/db-api-generator/frontend";
2
- import { DB_PermissionsUser } from "../../../index";
2
+ import { type DB_PermissionsUser } from "../../../index.js";
3
3
  export interface OnPermissionsUsersLoaded {
4
4
  __onPermissionsUsersLoaded: () => void;
5
5
  }
@@ -7,12 +7,13 @@ export declare class PermissionsUserModule_Class extends BaseDB_ApiGeneratorCall
7
7
  private users;
8
8
  constructor();
9
9
  protected init(): void;
10
- protected onEntryCreated(response: DB_PermissionsUser): Promise<void>;
11
- protected onEntryDeleted(response: DB_PermissionsUser): Promise<void>;
12
- protected onEntryUpdated(response: DB_PermissionsUser): Promise<void>;
13
- protected onGotUnique(response: DB_PermissionsUser): Promise<void>;
10
+ protected onEntryCreated(_response: DB_PermissionsUser): Promise<void>;
11
+ protected onEntryDeleted(_response: DB_PermissionsUser): Promise<void>;
12
+ protected onEntryUpdated(_response: DB_PermissionsUser): Promise<void>;
13
+ protected onGotUnique(_response: DB_PermissionsUser): Promise<void>;
14
14
  protected onQueryReturned(response: DB_PermissionsUser[]): Promise<void>;
15
15
  getUserByAccountId(accountId: string): DB_PermissionsUser | undefined;
16
16
  getUsers(): DB_PermissionsUser[];
17
17
  }
18
18
  export declare const ApiCaller_PermissionsUser: PermissionsUserModule_Class;
19
+ //# sourceMappingURL=ApiCaller_PermissionsUser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApiCaller_PermissionsUser.d.ts","sourceRoot":"","sources":["../../../../src/main/app-frontend/modules/assign/ApiCaller_PermissionsUser.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAC,yBAAyB,EAAC,MAAM,8CAA8C,CAAC;AACvF,OAAO,EAAC,KAAK,kBAAkB,EAAC,MAAM,mBAAmB,CAAC;AAG1D,MAAM,WAAW,wBAAwB;IACxC,0BAA0B,EAAE,MAAM,IAAI,CAAC;CACvC;AAID,qBAAa,2BACZ,SAAQ,yBAAyB,CAAC,kBAAkB,CAAC;IACrD,OAAO,CAAC,KAAK,CAA4B;;IAMzC,SAAS,CAAC,IAAI,IAAI,IAAI;cAGN,cAAc,CAAC,SAAS,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;cAG5D,cAAc,CAAC,SAAS,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;cAG5D,cAAc,CAAC,SAAS,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;cAI5D,WAAW,CAAC,SAAS,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;cAGzD,eAAe,CAAC,QAAQ,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAK9E,kBAAkB,CAAC,SAAS,EAAE,MAAM;IAIpC,QAAQ;CAGR;AAED,eAAO,MAAM,yBAAyB,6BAAoC,CAAC"}