@rockster/core 0.0.2 → 0.1.0

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 (501) hide show
  1. package/access/access.module.d.ts +11 -0
  2. package/access/access.module.js +56 -0
  3. package/access/access.module.js.map +1 -0
  4. package/access/constants.d.ts +2 -0
  5. package/access/constants.js +6 -0
  6. package/access/constants.js.map +1 -0
  7. package/access/controllers/controllers.d.ts +7 -0
  8. package/access/controllers/controllers.js +18 -0
  9. package/access/controllers/controllers.js.map +1 -0
  10. package/access/controllers/scope-access-profile.controller.d.ts +17 -0
  11. package/access/controllers/scope-access-profile.controller.js +111 -0
  12. package/access/controllers/scope-access-profile.controller.js.map +1 -0
  13. package/access/controllers/scope-group-user.controller.d.ts +20 -0
  14. package/access/controllers/scope-group-user.controller.js +132 -0
  15. package/access/controllers/scope-group-user.controller.js.map +1 -0
  16. package/access/controllers/scope-group.controller.d.ts +22 -0
  17. package/access/controllers/scope-group.controller.js +177 -0
  18. package/access/controllers/scope-group.controller.js.map +1 -0
  19. package/access/controllers/scope-key.controller.d.ts +7 -0
  20. package/access/controllers/scope-key.controller.js +45 -0
  21. package/access/controllers/scope-key.controller.js.map +1 -0
  22. package/access/controllers/scope-owner.controller.d.ts +9 -0
  23. package/access/controllers/scope-owner.controller.js +80 -0
  24. package/access/controllers/scope-owner.controller.js.map +1 -0
  25. package/access/controllers/scope-user.controller.d.ts +14 -0
  26. package/access/controllers/scope-user.controller.js +109 -0
  27. package/access/controllers/scope-user.controller.js.map +1 -0
  28. package/access/decorators/context-params.decorator.d.ts +2 -0
  29. package/access/decorators/context-params.decorator.js +13 -0
  30. package/access/decorators/context-params.decorator.js.map +1 -0
  31. package/access/decorators/index.d.ts +2 -0
  32. package/access/decorators/index.js +19 -0
  33. package/access/decorators/index.js.map +1 -0
  34. package/access/decorators/scope-context-id-resolver.decorator.d.ts +10 -0
  35. package/access/decorators/scope-context-id-resolver.decorator.js +22 -0
  36. package/access/decorators/scope-context-id-resolver.decorator.js.map +1 -0
  37. package/access/entities/entities.d.ts +8 -0
  38. package/access/entities/entities.js +22 -0
  39. package/access/entities/entities.js.map +1 -0
  40. package/access/entities/index.d.ts +7 -0
  41. package/access/entities/index.js +24 -0
  42. package/access/entities/index.js.map +1 -0
  43. package/access/entities/scope-access-profile-key.d.ts +6 -0
  44. package/access/entities/scope-access-profile-key.js +40 -0
  45. package/access/entities/scope-access-profile-key.js.map +1 -0
  46. package/access/entities/scope-access-profile.d.ts +6 -0
  47. package/access/entities/scope-access-profile.js +37 -0
  48. package/access/entities/scope-access-profile.js.map +1 -0
  49. package/access/entities/scope-access.d.ts +9 -0
  50. package/access/entities/scope-access.js +58 -0
  51. package/access/entities/scope-access.js.map +1 -0
  52. package/access/entities/scope-group-user.d.ts +7 -0
  53. package/access/entities/scope-group-user.js +47 -0
  54. package/access/entities/scope-group-user.js.map +1 -0
  55. package/access/entities/scope-group.d.ts +12 -0
  56. package/access/entities/scope-group.js +72 -0
  57. package/access/entities/scope-group.js.map +1 -0
  58. package/access/entities/scope-key.d.ts +5 -0
  59. package/access/entities/scope-key.js +35 -0
  60. package/access/entities/scope-key.js.map +1 -0
  61. package/access/entities/scope-owner.d.ts +7 -0
  62. package/access/entities/scope-owner.js +45 -0
  63. package/access/entities/scope-owner.js.map +1 -0
  64. package/access/env.d.ts +10 -0
  65. package/access/env.js +10 -0
  66. package/access/env.js.map +1 -0
  67. package/access/functions/assert-context-admin-access.d.ts +15 -0
  68. package/access/functions/assert-context-admin-access.js +62 -0
  69. package/access/functions/assert-context-admin-access.js.map +1 -0
  70. package/access/functions/assert-master-or-owner.d.ts +9 -0
  71. package/access/functions/assert-master-or-owner.js +40 -0
  72. package/access/functions/assert-master-or-owner.js.map +1 -0
  73. package/access/functions/assert-scope-action-access.d.ts +32 -0
  74. package/access/functions/assert-scope-action-access.js +189 -0
  75. package/access/functions/assert-scope-action-access.js.map +1 -0
  76. package/access/functions/build-scope-resolver-initial-data.d.ts +4 -0
  77. package/access/functions/build-scope-resolver-initial-data.js +17 -0
  78. package/access/functions/build-scope-resolver-initial-data.js.map +1 -0
  79. package/access/functions/describe-action-scope.d.ts +9 -0
  80. package/access/functions/describe-action-scope.js +27 -0
  81. package/access/functions/describe-action-scope.js.map +1 -0
  82. package/access/functions/get-context-id-service.d.ts +1 -0
  83. package/access/functions/get-context-id-service.js +8 -0
  84. package/access/functions/get-context-id-service.js.map +1 -0
  85. package/access/functions/get-is-owner.d.ts +1 -0
  86. package/access/functions/get-is-owner.js +8 -0
  87. package/access/functions/get-is-owner.js.map +1 -0
  88. package/access/functions/get-user-keys.d.ts +2 -0
  89. package/access/functions/get-user-keys.js +10 -0
  90. package/access/functions/get-user-keys.js.map +1 -0
  91. package/access/functions/index.d.ts +8 -0
  92. package/access/functions/index.js +25 -0
  93. package/access/functions/index.js.map +1 -0
  94. package/access/functions/init-scope-service-executors.d.ts +3 -0
  95. package/access/functions/init-scope-service-executors.js +38 -0
  96. package/access/functions/init-scope-service-executors.js.map +1 -0
  97. package/access/functions/normalize-scope-keys.d.ts +4 -0
  98. package/access/functions/normalize-scope-keys.js +17 -0
  99. package/access/functions/normalize-scope-keys.js.map +1 -0
  100. package/access/functions/register-scope.d.ts +19 -0
  101. package/access/functions/register-scope.js +94 -0
  102. package/access/functions/register-scope.js.map +1 -0
  103. package/access/functions/resolve-scope-context-id.d.ts +9 -0
  104. package/access/functions/resolve-scope-context-id.js +71 -0
  105. package/access/functions/resolve-scope-context-id.js.map +1 -0
  106. package/access/functions/warn-if-public.d.ts +12 -0
  107. package/access/functions/warn-if-public.js +20 -0
  108. package/access/functions/warn-if-public.js.map +1 -0
  109. package/access/index.d.ts +7 -0
  110. package/access/index.js +24 -0
  111. package/access/index.js.map +1 -0
  112. package/access/interfaces/index.d.ts +3 -0
  113. package/access/interfaces/index.js +20 -0
  114. package/access/interfaces/index.js.map +1 -0
  115. package/access/interfaces/resolve-scope-context-id.d.ts +21 -0
  116. package/access/interfaces/resolve-scope-context-id.js +3 -0
  117. package/access/interfaces/resolve-scope-context-id.js.map +1 -0
  118. package/access/interfaces/scope-service-registry.d.ts +21 -0
  119. package/access/interfaces/scope-service-registry.js +3 -0
  120. package/access/interfaces/scope-service-registry.js.map +1 -0
  121. package/access/interfaces/scope-service.d.ts +11 -0
  122. package/{database/interfaces/protector.js → access/interfaces/scope-service.js} +1 -1
  123. package/access/interfaces/scope-service.js.map +1 -0
  124. package/access/models/scope-access-profile-keys-update.d.ts +5 -0
  125. package/access/models/scope-access-profile-keys-update.js +27 -0
  126. package/access/models/scope-access-profile-keys-update.js.map +1 -0
  127. package/access/models/scope-context.d.ts +4 -0
  128. package/access/models/scope-context.js +27 -0
  129. package/access/models/scope-context.js.map +1 -0
  130. package/access/models/scope-group-apply-access-profile.d.ts +6 -0
  131. package/access/models/scope-group-apply-access-profile.js +32 -0
  132. package/access/models/scope-group-apply-access-profile.js.map +1 -0
  133. package/access/models/scope-keys-update.d.ts +7 -0
  134. package/access/models/scope-keys-update.js +38 -0
  135. package/access/models/scope-keys-update.js.map +1 -0
  136. package/access/models/scope-owner.d.ts +5 -0
  137. package/access/models/scope-owner.js +32 -0
  138. package/access/models/scope-owner.js.map +1 -0
  139. package/access/models/scope-user-mapped.d.ts +9 -0
  140. package/access/models/scope-user-mapped.js +48 -0
  141. package/access/models/scope-user-mapped.js.map +1 -0
  142. package/access/models/scope-user.d.ts +9 -0
  143. package/access/models/scope-user.js +51 -0
  144. package/access/models/scope-user.js.map +1 -0
  145. package/access/queries/scope-access-profile.query.d.ts +1 -0
  146. package/access/queries/scope-access-profile.query.js +10 -0
  147. package/access/queries/scope-access-profile.query.js.map +1 -0
  148. package/access/queries/scope-group-user.query.d.ts +1 -0
  149. package/access/queries/scope-group-user.query.js +26 -0
  150. package/access/queries/scope-group-user.query.js.map +1 -0
  151. package/access/queries/scope-group.query.d.ts +1 -0
  152. package/access/queries/scope-group.query.js +19 -0
  153. package/access/queries/scope-group.query.js.map +1 -0
  154. package/access/services/index.d.ts +7 -0
  155. package/access/services/index.js +24 -0
  156. package/access/services/index.js.map +1 -0
  157. package/access/services/scope-access-profile.service.d.ts +13 -0
  158. package/access/services/scope-access-profile.service.js +75 -0
  159. package/access/services/scope-access-profile.service.js.map +1 -0
  160. package/access/services/scope-access.service.d.ts +11 -0
  161. package/access/services/scope-access.service.js +89 -0
  162. package/access/services/scope-access.service.js.map +1 -0
  163. package/access/services/scope-group-user.service.d.ts +8 -0
  164. package/access/services/scope-group-user.service.js +49 -0
  165. package/access/services/scope-group-user.service.js.map +1 -0
  166. package/access/services/scope-group.service.d.ts +17 -0
  167. package/access/services/scope-group.service.js +75 -0
  168. package/access/services/scope-group.service.js.map +1 -0
  169. package/access/services/scope-key.service.d.ts +9 -0
  170. package/access/services/scope-key.service.js +52 -0
  171. package/access/services/scope-key.service.js.map +1 -0
  172. package/access/services/scope-owner.service.d.ts +10 -0
  173. package/access/services/scope-owner.service.js +60 -0
  174. package/access/services/scope-owner.service.js.map +1 -0
  175. package/access/services/scope-service.d.ts +10 -0
  176. package/access/services/scope-service.js +52 -0
  177. package/access/services/scope-service.js.map +1 -0
  178. package/command/functions/execute-post.js +5 -7
  179. package/command/functions/execute-post.js.map +1 -1
  180. package/command/services/post-action-builder.js +21 -17
  181. package/command/services/post-action-builder.js.map +1 -1
  182. package/command/services/remove-action-builder.js +32 -22
  183. package/command/services/remove-action-builder.js.map +1 -1
  184. package/common/entities/base-entity.js +2 -0
  185. package/common/entities/base-entity.js.map +1 -1
  186. package/common/interfaces/enum/object-type.d.ts +2 -1
  187. package/common/interfaces/enum/object-type.js +1 -0
  188. package/common/interfaces/enum/object-type.js.map +1 -1
  189. package/controllers/constants/controller-transaction.d.ts +2 -0
  190. package/controllers/constants/controller-transaction.js +6 -0
  191. package/controllers/constants/controller-transaction.js.map +1 -0
  192. package/controllers/controller.controller.d.ts +1 -1
  193. package/controllers/controller.controller.js +4 -4
  194. package/controllers/controller.controller.js.map +1 -1
  195. package/controllers/decorators/controller.decorator.js +8 -0
  196. package/controllers/decorators/controller.decorator.js.map +1 -1
  197. package/controllers/decorators/index.d.ts +1 -0
  198. package/controllers/decorators/index.js +1 -0
  199. package/controllers/decorators/index.js.map +1 -1
  200. package/controllers/decorators/transaction.decorator.d.ts +7 -0
  201. package/controllers/decorators/transaction.decorator.js +23 -0
  202. package/controllers/decorators/transaction.decorator.js.map +1 -0
  203. package/controllers/interfaces/controller-object.d.ts +1 -0
  204. package/controllers/interfaces/controller-options.d.ts +1 -0
  205. package/controllers/interfaces/controller-property.d.ts +9 -0
  206. package/controllers/services/default-action-builder.js +14 -0
  207. package/controllers/services/default-action-builder.js.map +1 -1
  208. package/controllers/services/restful-action-builder.js +25 -1
  209. package/controllers/services/restful-action-builder.js.map +1 -1
  210. package/core/contexts/request-context.d.ts +5 -0
  211. package/core/contexts/request-context.js +6 -0
  212. package/core/contexts/request-context.js.map +1 -0
  213. package/core/core.controller.d.ts +1 -0
  214. package/core/core.controller.js +15 -2
  215. package/core/core.controller.js.map +1 -1
  216. package/core/functions/create-interceptor.js +2 -2
  217. package/core/functions/create-interceptor.js.map +1 -1
  218. package/core/functions/resolve-action-transactional.d.ts +3 -0
  219. package/core/functions/resolve-action-transactional.js +10 -0
  220. package/core/functions/resolve-action-transactional.js.map +1 -0
  221. package/core/interfaces/action-def.d.ts +2 -5
  222. package/core/interfaces/action-docs.d.ts +15 -0
  223. package/core/interfaces/action-handle.d.ts +5 -0
  224. package/core/interfaces/action-handle.js +3 -0
  225. package/core/interfaces/action-handle.js.map +1 -0
  226. package/core/interfaces/core-options.d.ts +1 -0
  227. package/core/interfaces/interceptor.d.ts +1 -1
  228. package/core/interfaces/object.d.ts +3 -2
  229. package/core/interfaces/request-context.d.ts +7 -2
  230. package/core/services/request-executor.d.ts +8 -0
  231. package/core/services/request-executor.js +88 -0
  232. package/core/services/request-executor.js.map +1 -1
  233. package/core/services/request-router.js +5 -4
  234. package/core/services/request-router.js.map +1 -1
  235. package/database/database.controller.d.ts +1 -3
  236. package/database/database.controller.js +1 -5
  237. package/database/database.controller.js.map +1 -1
  238. package/database/decorators/entity.decorator.d.ts +3 -1
  239. package/database/decorators/entity.decorator.js +14 -5
  240. package/database/decorators/entity.decorator.js.map +1 -1
  241. package/database/decorators/external-column.decorator.d.ts +17 -0
  242. package/database/decorators/external-column.decorator.js +30 -0
  243. package/database/decorators/external-column.decorator.js.map +1 -0
  244. package/database/decorators/index.d.ts +1 -0
  245. package/database/decorators/index.js +1 -0
  246. package/database/decorators/index.js.map +1 -1
  247. package/database/decorators/protect-entity.decorator.d.ts +1 -0
  248. package/database/decorators/protect-entity.decorator.js +2 -3
  249. package/database/decorators/protect-entity.decorator.js.map +1 -1
  250. package/database/decorators/protected-entity.decorator.d.ts +1 -0
  251. package/database/decorators/protected-entity.decorator.js +2 -16
  252. package/database/decorators/protected-entity.decorator.js.map +1 -1
  253. package/database/decorators/relation.decorator.d.ts +2 -2
  254. package/database/decorators/relation.decorator.js.map +1 -1
  255. package/database/extensions/select-query-builder.d.ts +1 -5
  256. package/database/extensions/select-query-builder.js.map +1 -1
  257. package/database/functions/find-relation.d.ts +2 -1
  258. package/database/functions/find-relation.js +3 -3
  259. package/database/functions/find-relation.js.map +1 -1
  260. package/database/functions/generate-entity-id.d.ts +2 -0
  261. package/database/functions/{generate-id.js → generate-entity-id.js} +3 -3
  262. package/database/functions/generate-entity-id.js.map +1 -0
  263. package/database/functions/get-relations.d.ts +1 -1
  264. package/database/functions/inject-repository-handle.js +4 -3
  265. package/database/functions/inject-repository-handle.js.map +1 -1
  266. package/database/functions/use-transaction.d.ts +1 -0
  267. package/database/functions/use-transaction.js +2 -6
  268. package/database/functions/use-transaction.js.map +1 -1
  269. package/database/interfaces/entity-dto-object.d.ts +7 -0
  270. package/database/interfaces/entity-dto-object.js +3 -0
  271. package/database/interfaces/entity-dto-object.js.map +1 -0
  272. package/database/interfaces/entity-object.d.ts +0 -6
  273. package/database/interfaces/entity-property.d.ts +12 -0
  274. package/database/interfaces/index.d.ts +0 -1
  275. package/database/interfaces/index.js +0 -1
  276. package/database/interfaces/index.js.map +1 -1
  277. package/database/interfaces/path.d.ts +6 -2
  278. package/database/interfaces/repository.d.ts +8 -8
  279. package/database/interfaces/virtual-select.d.ts +4 -0
  280. package/database/interfaces/virtual-select.js +3 -0
  281. package/database/interfaces/virtual-select.js.map +1 -0
  282. package/database/services/repository.service.d.ts +1 -1
  283. package/database/services/repository.service.js +3 -6
  284. package/database/services/repository.service.js.map +1 -1
  285. package/docs/docs.module.js +3 -1
  286. package/docs/docs.module.js.map +1 -1
  287. package/docs/migrations/1747584000000-CreateDocsTables.d.ts +5 -0
  288. package/docs/migrations/1747584000000-CreateDocsTables.js +90 -0
  289. package/docs/migrations/1747584000000-CreateDocsTables.js.map +1 -0
  290. package/docs/migrations/migrations.d.ts +2 -0
  291. package/docs/migrations/migrations.js +8 -0
  292. package/docs/migrations/migrations.js.map +1 -0
  293. package/docs/queries/docs-controller-action.query.d.ts +1 -1
  294. package/docs/queries/docs-controller.query.d.ts +1 -1
  295. package/docs/queries/docs-model.query.d.ts +1 -1
  296. package/docs/queries/docs-model.query.js +1 -1
  297. package/docs/queries/docs-model.query.js.map +1 -1
  298. package/docs/queries/docs-version.query.d.ts +1 -1
  299. package/docs/services/docs-version.service.js +6 -3
  300. package/docs/services/docs-version.service.js.map +1 -1
  301. package/forms/queries/form.query.d.ts +1 -1
  302. package/forms/queries/property.query.d.ts +1 -1
  303. package/global.d.ts +2 -0
  304. package/global.js +2 -1
  305. package/global.js.map +1 -1
  306. package/http/http.controller.d.ts +2 -0
  307. package/http/http.controller.js +3 -2
  308. package/http/http.controller.js.map +1 -1
  309. package/index.d.ts +5 -2
  310. package/index.js +4 -7
  311. package/index.js.map +1 -1
  312. package/jobs/jobs.controller.d.ts +2 -0
  313. package/jobs/jobs.controller.js +22 -16
  314. package/jobs/jobs.controller.js.map +1 -1
  315. package/package.json +70 -69
  316. package/query/functions/add-join.js +8 -16
  317. package/query/functions/add-join.js.map +1 -1
  318. package/query/functions/collect-external-column-owners.d.ts +10 -0
  319. package/query/functions/collect-external-column-owners.js +100 -0
  320. package/query/functions/collect-external-column-owners.js.map +1 -0
  321. package/query/functions/create-query-builder.js +47 -28
  322. package/query/functions/create-query-builder.js.map +1 -1
  323. package/query/functions/create-query-cache-hash.d.ts +16 -0
  324. package/query/functions/create-query-cache-hash.js +70 -0
  325. package/query/functions/create-query-cache-hash.js.map +1 -0
  326. package/query/functions/create-query.d.ts +8 -3
  327. package/query/functions/create-query.js +12 -9
  328. package/query/functions/create-query.js.map +1 -1
  329. package/query/functions/describe-query-filter.js +3 -2
  330. package/query/functions/describe-query-filter.js.map +1 -1
  331. package/query/functions/execute-query.js +89 -9
  332. package/query/functions/execute-query.js.map +1 -1
  333. package/query/functions/expand-select-with-external-dependencies.d.ts +9 -0
  334. package/query/functions/expand-select-with-external-dependencies.js +34 -0
  335. package/query/functions/expand-select-with-external-dependencies.js.map +1 -0
  336. package/query/functions/external-column-owner-path.d.ts +5 -0
  337. package/query/functions/external-column-owner-path.js +18 -0
  338. package/query/functions/external-column-owner-path.js.map +1 -0
  339. package/query/functions/get-entity-object-class.d.ts +2 -0
  340. package/query/functions/get-entity-object-class.js +12 -0
  341. package/query/functions/get-entity-object-class.js.map +1 -0
  342. package/query/functions/get-native-select.js +3 -0
  343. package/query/functions/get-native-select.js.map +1 -1
  344. package/query/functions/load-properties.d.ts +20 -2
  345. package/query/functions/load-properties.js +190 -40
  346. package/query/functions/load-properties.js.map +1 -1
  347. package/query/functions/map-query-property-to-column-name.js +1 -1
  348. package/query/functions/map-query-property-to-column-name.js.map +1 -1
  349. package/query/functions/query-structure-cache.d.ts +24 -0
  350. package/query/functions/query-structure-cache.js +66 -0
  351. package/query/functions/query-structure-cache.js.map +1 -0
  352. package/query/interfaces/query.d.ts +44 -1
  353. package/query/services/query-action-builder.d.ts +4 -1
  354. package/query/services/query-action-builder.js +26 -12
  355. package/query/services/query-action-builder.js.map +1 -1
  356. package/remote-logs/dtos/index.d.ts +2 -0
  357. package/remote-logs/dtos/index.js +19 -0
  358. package/remote-logs/dtos/index.js.map +1 -0
  359. package/remote-logs/dtos/remote-log-hooks.dto.d.ts +72 -0
  360. package/remote-logs/dtos/remote-log-hooks.dto.js +280 -0
  361. package/remote-logs/dtos/remote-log-hooks.dto.js.map +1 -0
  362. package/remote-logs/dtos/remote-log-search.dto.d.ts +34 -0
  363. package/remote-logs/dtos/remote-log-search.dto.js +146 -0
  364. package/remote-logs/dtos/remote-log-search.dto.js.map +1 -0
  365. package/remote-logs/environment.d.ts +4 -0
  366. package/remote-logs/environment.js +5 -0
  367. package/remote-logs/environment.js.map +1 -0
  368. package/remote-logs/index.d.ts +3 -0
  369. package/remote-logs/index.js +20 -0
  370. package/remote-logs/index.js.map +1 -0
  371. package/remote-logs/interfaces/index.d.ts +1 -0
  372. package/remote-logs/interfaces/index.js +18 -0
  373. package/remote-logs/interfaces/index.js.map +1 -0
  374. package/remote-logs/interfaces/remote-logs-module-options.d.ts +8 -0
  375. package/remote-logs/interfaces/remote-logs-module-options.js +3 -0
  376. package/remote-logs/interfaces/remote-logs-module-options.js.map +1 -0
  377. package/remote-logs/remote-logs-hooks.controller.d.ts +60 -0
  378. package/remote-logs/remote-logs-hooks.controller.js +331 -0
  379. package/remote-logs/remote-logs-hooks.controller.js.map +1 -0
  380. package/remote-logs/remote-logs.controller.d.ts +8 -0
  381. package/remote-logs/remote-logs.controller.js +41 -0
  382. package/remote-logs/remote-logs.controller.js.map +1 -0
  383. package/remote-logs/remote-logs.module.d.ts +12 -0
  384. package/remote-logs/remote-logs.module.js +107 -0
  385. package/remote-logs/remote-logs.module.js.map +1 -0
  386. package/remote-logs/services/opensearch.service.d.ts +13 -0
  387. package/remote-logs/services/opensearch.service.js +167 -0
  388. package/remote-logs/services/opensearch.service.js.map +1 -0
  389. package/security/auth.controller.js +4 -4
  390. package/security/auth.controller.js.map +1 -1
  391. package/security/env.js.map +1 -1
  392. package/security/functions/add-protected.d.ts +2 -2
  393. package/security/functions/add-protected.js +8 -5
  394. package/security/functions/add-protected.js.map +1 -1
  395. package/security/functions/create-authentication-interceptor.d.ts +44 -0
  396. package/security/functions/create-authentication-interceptor.js +114 -0
  397. package/security/functions/create-authentication-interceptor.js.map +1 -0
  398. package/security/functions/find-auth-context.d.ts +1 -2
  399. package/security/functions/find-auth-context.js +6 -11
  400. package/security/functions/find-auth-context.js.map +1 -1
  401. package/security/index.d.ts +1 -0
  402. package/security/index.js +1 -0
  403. package/security/index.js.map +1 -1
  404. package/security/interfaces/authorization-schema.d.ts +3 -1
  405. package/security/requests/security.request.js +1 -1
  406. package/security/requests/security.request.js.map +1 -1
  407. package/security/services/authorization.service.d.ts +5 -3
  408. package/security/services/authorization.service.js +56 -37
  409. package/security/services/authorization.service.js.map +1 -1
  410. package/storage/services/routes.service.js +1 -1
  411. package/storage/services/routes.service.js.map +1 -1
  412. package/tasks/constants.d.ts +3 -0
  413. package/tasks/constants.js +2 -1
  414. package/tasks/constants.js.map +1 -1
  415. package/tasks/controllers/task.controller.d.ts +3 -2
  416. package/tasks/controllers/task.controller.js +11 -40
  417. package/tasks/controllers/task.controller.js.map +1 -1
  418. package/tasks/decorators/index.d.ts +1 -0
  419. package/tasks/decorators/index.js +1 -0
  420. package/tasks/decorators/index.js.map +1 -1
  421. package/tasks/decorators/task-payload.decorator.d.ts +1 -0
  422. package/tasks/decorators/task-payload.decorator.js +12 -0
  423. package/tasks/decorators/task-payload.decorator.js.map +1 -0
  424. package/tasks/decorators/task.decorator.js +6 -2
  425. package/tasks/decorators/task.decorator.js.map +1 -1
  426. package/tasks/functions/compile-all-task-post-hooks.d.ts +1 -0
  427. package/tasks/functions/compile-all-task-post-hooks.js +27 -0
  428. package/tasks/functions/compile-all-task-post-hooks.js.map +1 -0
  429. package/tasks/functions/compile-task-hook-handle.d.ts +6 -0
  430. package/tasks/functions/compile-task-hook-handle.js +67 -0
  431. package/tasks/functions/compile-task-hook-handle.js.map +1 -0
  432. package/tasks/functions/create-task-hook.d.ts +9 -0
  433. package/tasks/functions/create-task-hook.js +13 -0
  434. package/tasks/functions/create-task-hook.js.map +1 -0
  435. package/tasks/functions/{create-task-message-receptor.d.ts → create-task-message-post.d.ts} +1 -1
  436. package/tasks/functions/{create-task-message-receptor.js → create-task-message-post.js} +10 -3
  437. package/tasks/functions/create-task-message-post.js.map +1 -0
  438. package/tasks/functions/register-task-post-hook-interceptors.d.ts +3 -0
  439. package/tasks/functions/register-task-post-hook-interceptors.js +86 -0
  440. package/tasks/functions/register-task-post-hook-interceptors.js.map +1 -0
  441. package/tasks/functions/run-task-post-hooks.d.ts +11 -0
  442. package/tasks/functions/run-task-post-hooks.js +18 -0
  443. package/tasks/functions/run-task-post-hooks.js.map +1 -0
  444. package/tasks/functions/task-message-operations.d.ts +18 -0
  445. package/tasks/functions/task-message-operations.js +100 -0
  446. package/tasks/functions/task-message-operations.js.map +1 -0
  447. package/tasks/functions/validate-task-payload.d.ts +2 -0
  448. package/tasks/functions/validate-task-payload.js +19 -0
  449. package/tasks/functions/validate-task-payload.js.map +1 -0
  450. package/tasks/hook-constants.d.ts +2 -0
  451. package/tasks/hook-constants.js +6 -0
  452. package/tasks/hook-constants.js.map +1 -0
  453. package/tasks/index.d.ts +3 -0
  454. package/tasks/index.js +3 -0
  455. package/tasks/index.js.map +1 -1
  456. package/tasks/interfaces/compiled-task-post-hooks.d.ts +17 -0
  457. package/tasks/interfaces/compiled-task-post-hooks.js +3 -0
  458. package/tasks/interfaces/compiled-task-post-hooks.js.map +1 -0
  459. package/tasks/interfaces/index.d.ts +3 -0
  460. package/tasks/interfaces/index.js +3 -0
  461. package/tasks/interfaces/index.js.map +1 -1
  462. package/tasks/interfaces/task-hook.d.ts +16 -0
  463. package/tasks/interfaces/task-hook.js +8 -0
  464. package/tasks/interfaces/task-hook.js.map +1 -0
  465. package/tasks/interfaces/task-object.d.ts +6 -2
  466. package/tasks/interfaces/task-post-hook.d.ts +2 -0
  467. package/tasks/interfaces/task-post-hook.js +3 -0
  468. package/tasks/interfaces/task-post-hook.js.map +1 -0
  469. package/tasks/interfaces/task-post-intercept.d.ts +1 -8
  470. package/tasks/interfaces/task-runner.d.ts +2 -1
  471. package/tasks/interfaces/task-settings.d.ts +7 -0
  472. package/tasks/services/task-runner.service.d.ts +24 -3
  473. package/tasks/services/task-runner.service.js +68 -28
  474. package/tasks/services/task-runner.service.js.map +1 -1
  475. package/translations/controllers/translation.controller.js +12 -9
  476. package/translations/controllers/translation.controller.js.map +1 -1
  477. package/translations/functions/create-translation-values.js +2 -5
  478. package/translations/functions/create-translation-values.js.map +1 -1
  479. package/translations/migrations/1723760669185-CreateTranslationTables.js +3 -3
  480. package/translations/migrations/1723760669185-CreateTranslationTables.js.map +1 -1
  481. package/translations/queries/translation-config.query.d.ts +1 -1
  482. package/translations/queries/translation-values.query.d.ts +1 -1
  483. package/translations/queries/translation-values.query.js +1 -1
  484. package/translations/queries/translation-values.query.js.map +1 -1
  485. package/translations/translations.controller.d.ts +1 -1
  486. package/translations/translations.controller.js +4 -4
  487. package/translations/translations.controller.js.map +1 -1
  488. package/database/functions/generate-id.d.ts +0 -2
  489. package/database/functions/generate-id.js.map +0 -1
  490. package/database/functions/use-protector.d.ts +0 -2
  491. package/database/functions/use-protector.js +0 -11
  492. package/database/functions/use-protector.js.map +0 -1
  493. package/database/interfaces/protector.d.ts +0 -51
  494. package/database/interfaces/protector.js.map +0 -1
  495. package/database/services/protect-builder.d.ts +0 -59
  496. package/database/services/protect-builder.js +0 -524
  497. package/database/services/protect-builder.js.map +0 -1
  498. package/security/functions/add-protect.d.ts +0 -2
  499. package/security/functions/add-protect.js +0 -11
  500. package/security/functions/add-protect.js.map +0 -1
  501. package/tasks/functions/create-task-message-receptor.js.map +0 -1
@@ -0,0 +1,11 @@
1
+ import { RepositoryService } from "../../database/services/repository.service";
2
+ import { IScopeAccess } from "@rockster/common/access";
3
+ import { Repository } from "../../database/interfaces/repository";
4
+ export declare class ScopeAccessService extends RepositoryService<IScopeAccess> {
5
+ protected repository: Repository<IScopeAccess>;
6
+ protected noCtxQuery: string;
7
+ protected withCtxQuery: string;
8
+ getAllUserKeys(userId: string): Promise<string[]>;
9
+ getKeysWithCtx(contextId: string, userId: string): Promise<string[]>;
10
+ updateKeys(type: 'group' | 'user', contextName: string, contextId: string, targetId: string, keys: string[]): Promise<void>;
11
+ }
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ScopeAccessService = void 0;
13
+ const class_injector_1 = require("@rockster/class-injector");
14
+ const repository_service_1 = require("../../database/services/repository.service");
15
+ const inject_repository_decorator_1 = require("../../database/decorators/inject-repository.decorator");
16
+ const scope_access_1 = require("../entities/scope-access");
17
+ const generate_entity_id_1 = require("../../database/functions/generate-entity-id");
18
+ const normalize_scope_keys_1 = require("../functions/normalize-scope-keys");
19
+ let ScopeAccessService = class ScopeAccessService extends repository_service_1.RepositoryService {
20
+ constructor() {
21
+ super(...arguments);
22
+ this.noCtxQuery = `
23
+ select distinct sa.key
24
+ from scope_access sa
25
+ where sa.key is not null
26
+ and sa.user_id = $1
27
+
28
+ union
29
+
30
+ select distinct sa.key
31
+ from scope_access sa
32
+ join scope_group_user sgu
33
+ on sgu.group_id = sa.group_id
34
+ where sa.key is not null
35
+ and sgu.user_id = $1;
36
+ `;
37
+ this.withCtxQuery = `
38
+ select distinct sa.key
39
+ from scope_access sa
40
+ where sa.key is not null
41
+ and sa.user_id = $1
42
+ and sa.context_id = $2
43
+
44
+ union
45
+
46
+ select distinct sa.key
47
+ from scope_access sa
48
+ join scope_group_user sgu
49
+ on sgu.group_id = sa.group_id
50
+ where sa.key is not null
51
+ and sgu.user_id = $1
52
+ and sa.context_id = $2;
53
+ `;
54
+ }
55
+ async getAllUserKeys(userId) {
56
+ const rows = await this.repository.query(this.noCtxQuery, [userId]);
57
+ return rows.map(r => r.k);
58
+ }
59
+ async getKeysWithCtx(contextId, userId) {
60
+ const rows = await this.repository.query(this.withCtxQuery, [userId, contextId]);
61
+ return rows.map(row => row.key);
62
+ }
63
+ async updateKeys(type, contextName, contextId, targetId, keys) {
64
+ const keyName = type === 'group' ? 'groupId' : 'userId';
65
+ await this.repository.delete({
66
+ [keyName]: targetId,
67
+ contextId,
68
+ contextName
69
+ });
70
+ const validKeys = (0, normalize_scope_keys_1.normalizeScopeKeys)(keys);
71
+ const accessKeys = validKeys.map(key => ({
72
+ id: (0, generate_entity_id_1.generateEntityId)(scope_access_1.ScopeAccess),
73
+ [keyName]: targetId,
74
+ contextName: contextName,
75
+ contextId: contextId,
76
+ key: key
77
+ }));
78
+ await this.repository.save(accessKeys);
79
+ }
80
+ };
81
+ exports.ScopeAccessService = ScopeAccessService;
82
+ __decorate([
83
+ (0, inject_repository_decorator_1.InjectRepository)(() => scope_access_1.ScopeAccess),
84
+ __metadata("design:type", Object)
85
+ ], ScopeAccessService.prototype, "repository", void 0);
86
+ exports.ScopeAccessService = ScopeAccessService = __decorate([
87
+ (0, class_injector_1.Injectable)()
88
+ ], ScopeAccessService);
89
+ //# sourceMappingURL=scope-access.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scope-access.service.js","sourceRoot":"./","sources":["access/services/scope-access.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6DAAsD;AACtD,mFAA+E;AAE/E,uGAAyF;AAEzF,2DAAuD;AACvD,oFAA+E;AAC/E,4EAAuE;AAGhE,IAAM,kBAAkB,GAAxB,MAAM,kBAAmB,SAAQ,sCAA+B;IAAhE;;QAKM,eAAU,GAAG;;;;;;;;;;;;;;IActB,CAAC;QAEQ,iBAAY,GAAG;;;;;;;;;;;;;;;;IAgBxB,CAAC;IA+CL,CAAC;IA7CE,KAAK,CAAC,cAAc,CAAC,MAAc;QAChC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CACrC,IAAI,CAAC,UAAU,EACf,CAAC,MAAM,CAAC,CACV,CAAC;QAEF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAa,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,SAAiB,EAAE,MAAc;QACnD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CACrC,IAAI,CAAC,YAAY,EACjB,CAAC,MAAM,EAAE,SAAS,CAAC,CACrB,CAAC;QAEF,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAa,CAAA;IAC9C,CAAC;IAED,KAAK,CAAC,UAAU,CACb,IAAsB,EACtB,WAAmB,EACnB,SAAiB,EACjB,QAAgB,EAChB,IAAc;QAEd,MAAM,OAAO,GAAG,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;QAExD,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YAC1B,CAAC,OAAO,CAAC,EAAE,QAAQ;YACnB,SAAS;YACT,WAAW;SACb,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,IAAA,yCAAkB,EAAC,IAAI,CAAC,CAAC;QAE3C,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACtC,EAAE,EAAE,IAAA,qCAAgB,EAAC,0BAAW,CAAC;YACjC,CAAC,OAAO,CAAC,EAAE,QAAQ;YACnB,WAAW,EAAE,WAAW;YACxB,SAAS,EAAE,SAAS;YACpB,GAAG,EAAE,GAAG;SACO,CAAA,CAAC,CAAC;QAEpB,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1C,CAAC;CACH,CAAA;AApFY,gDAAkB;AAGlB;IADT,IAAA,8CAAgB,EAAC,GAAG,EAAE,CAAC,0BAAW,CAAC;;sDACW;6BAHrC,kBAAkB;IAD9B,IAAA,2BAAU,GAAE;GACA,kBAAkB,CAoF9B"}
@@ -0,0 +1,8 @@
1
+ import { RepositoryService } from "../../database/services/repository.service";
2
+ import { IScopeGroupUser } from "@rockster/common/access";
3
+ import { Repository } from "../../database/interfaces/repository";
4
+ export declare class ScopeGroupUserService extends RepositoryService<IScopeGroupUser> {
5
+ protected repository: Repository<IScopeGroupUser>;
6
+ addIfNotExists(groupId: string, userId: string): Promise<IScopeGroupUser>;
7
+ byContext(userId: string, contextName: string, contextId?: string): Promise<IScopeGroupUser[]>;
8
+ }
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ScopeGroupUserService = void 0;
13
+ const class_injector_1 = require("@rockster/class-injector");
14
+ const repository_service_1 = require("../../database/services/repository.service");
15
+ const inject_repository_decorator_1 = require("../../database/decorators/inject-repository.decorator");
16
+ const scope_group_user_1 = require("../entities/scope-group-user");
17
+ const generate_entity_id_1 = require("../../database/functions/generate-entity-id");
18
+ const scope_group_1 = require("../entities/scope-group");
19
+ let ScopeGroupUserService = class ScopeGroupUserService extends repository_service_1.RepositoryService {
20
+ async addIfNotExists(groupId, userId) {
21
+ const groupUser = await this.repository.findOneBy({ groupId, userId });
22
+ if (groupUser)
23
+ return groupUser;
24
+ return this.repository.save({
25
+ id: (0, generate_entity_id_1.generateEntityId)(scope_group_user_1.ScopeGroupUser),
26
+ groupId: groupId,
27
+ userId: userId
28
+ });
29
+ }
30
+ async byContext(userId, contextName, contextId) {
31
+ return this
32
+ .repository
33
+ .createQueryBuilder('scopeGroupUser')
34
+ .leftJoin(scope_group_1.ScopeGroup, 'scopeGroup', '"scopeGroup".id = "scopeGroupUser".group_id')
35
+ .where(`"scopeGroup".context_name = '${contextName}'
36
+ AND "scopeGroupUser".user_id = '${userId}'
37
+ ${!contextId ? '' : `AND "scopeGroup".context_id = '${contextId}'`}`)
38
+ .getMany();
39
+ }
40
+ };
41
+ exports.ScopeGroupUserService = ScopeGroupUserService;
42
+ __decorate([
43
+ (0, inject_repository_decorator_1.InjectRepository)(() => scope_group_user_1.ScopeGroupUser),
44
+ __metadata("design:type", Object)
45
+ ], ScopeGroupUserService.prototype, "repository", void 0);
46
+ exports.ScopeGroupUserService = ScopeGroupUserService = __decorate([
47
+ (0, class_injector_1.Injectable)()
48
+ ], ScopeGroupUserService);
49
+ //# sourceMappingURL=scope-group-user.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scope-group-user.service.js","sourceRoot":"./","sources":["access/services/scope-group-user.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6DAAsD;AACtD,mFAA+E;AAE/E,uGAAyF;AAEzF,mEAA8D;AAC9D,oFAA+E;AAC/E,yDAAqD;AAG9C,IAAM,qBAAqB,GAA3B,MAAM,qBAAsB,SAAQ,sCAAkC;IAK1E,KAAK,CAAC,cAAc,CAAC,OAAe,EAAE,MAAc;QACjD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QACvE,IAAI,SAAS;YAAE,OAAO,SAAS,CAAC;QAChC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YACzB,EAAE,EAAE,IAAA,qCAAgB,EAAC,iCAAc,CAAC;YACpC,OAAO,EAAE,OAAO;YAChB,MAAM,EAAE,MAAM;SAChB,CAAC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAAc,EAAE,WAAmB,EAAE,SAAkB;QACpE,OAAO,IAAI;aACP,UAAU;aACV,kBAAkB,CAAC,gBAAgB,CAAC;aACpC,QAAQ,CACN,wBAAU,EACV,YAAY,EACZ,6CAA6C,CAC/C;aACA,KAAK,CAAC,gCAAgC,WAAW;8CACb,MAAM;cACtC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kCAAkC,SAAS,GAAG,EAAE,CAAC;aACvE,OAAO,EAAE,CAAC;IACjB,CAAC;CACH,CAAA;AA7BY,sDAAqB;AAGrB;IADT,IAAA,8CAAgB,EAAC,GAAG,EAAE,CAAC,iCAAc,CAAC;;yDACW;gCAHxC,qBAAqB;IADjC,IAAA,2BAAU,GAAE;GACA,qBAAqB,CA6BjC"}
@@ -0,0 +1,17 @@
1
+ import { RepositoryService } from "../../database/services/repository.service";
2
+ import { IScopeGroup } from "@rockster/common/access";
3
+ import { Repository } from "../../database/interfaces/repository";
4
+ import { ScopeAccessProfileService } from "./scope-access-profile.service";
5
+ import { ScopeAccessService } from "./scope-access.service";
6
+ export declare class ScopeGroupService extends RepositoryService<IScopeGroup> {
7
+ protected readonly scopeAccessProfileService: ScopeAccessProfileService;
8
+ protected readonly scopeAccessService: ScopeAccessService;
9
+ protected repository: Repository<IScopeGroup>;
10
+ constructor(scopeAccessProfileService: ScopeAccessProfileService, scopeAccessService: ScopeAccessService);
11
+ /**
12
+ * Applies the group's linked access profile keys for the given context
13
+ * (filtered by scope_key.context_name), merging with existing group keys.
14
+ */
15
+ applyAccessProfileToGroupContext(groupId: string, contextName: string, contextId: string): Promise<string[]>;
16
+ getUserGroups(userId: string, contextName: string, contextId?: string): Promise<IScopeGroup[]>;
17
+ }
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ScopeGroupService = void 0;
13
+ const class_injector_1 = require("@rockster/class-injector");
14
+ const repository_service_1 = require("../../database/services/repository.service");
15
+ const inject_repository_decorator_1 = require("../../database/decorators/inject-repository.decorator");
16
+ const scope_group_1 = require("../entities/scope-group");
17
+ const scope_group_user_1 = require("../entities/scope-group-user");
18
+ const scope_access_profile_service_1 = require("./scope-access-profile.service");
19
+ const scope_access_service_1 = require("./scope-access.service");
20
+ const normalize_scope_keys_1 = require("../functions/normalize-scope-keys");
21
+ let ScopeGroupService = class ScopeGroupService extends repository_service_1.RepositoryService {
22
+ constructor(scopeAccessProfileService, scopeAccessService) {
23
+ super();
24
+ this.scopeAccessProfileService = scopeAccessProfileService;
25
+ this.scopeAccessService = scopeAccessService;
26
+ }
27
+ /**
28
+ * Applies the group's linked access profile keys for the given context
29
+ * (filtered by scope_key.context_name), merging with existing group keys.
30
+ */
31
+ async applyAccessProfileToGroupContext(groupId, contextName, contextId) {
32
+ const group = await this.repository.findOneBy({ id: groupId });
33
+ if (!group?.scopeAccessProfileId) {
34
+ return [];
35
+ }
36
+ const profileKeys = await this.scopeAccessProfileService.getKeysForContext(group.scopeAccessProfileId, contextName);
37
+ if (!profileKeys.length) {
38
+ return [];
39
+ }
40
+ const existingRows = await this.scopeAccessService.getMany({
41
+ where: {
42
+ groupId,
43
+ contextName,
44
+ contextId,
45
+ },
46
+ });
47
+ const existingKeys = existingRows
48
+ .map((row) => row.key)
49
+ .filter((key) => Boolean(key));
50
+ const mergedKeys = (0, normalize_scope_keys_1.normalizeScopeKeys)([...existingKeys, ...profileKeys]);
51
+ await this.scopeAccessService.updateKeys("group", contextName, contextId, groupId, mergedKeys);
52
+ return mergedKeys;
53
+ }
54
+ async getUserGroups(userId, contextName, contextId) {
55
+ return this
56
+ .repository
57
+ .createQueryBuilder('scopeGroup')
58
+ .leftJoin(scope_group_user_1.ScopeGroupUser, 'scopeGroupUser', '"scopeGroup".id = "scopeGroupUser".group_id')
59
+ .where(`"scopeGroupUser".user_id = '${userId}'
60
+ AND "scopeGroup".context_name = '${contextName}'
61
+ ${!contextId ? '' : `AND "scopeGroup".context_id = '${contextId}'`}`)
62
+ .getMany();
63
+ }
64
+ };
65
+ exports.ScopeGroupService = ScopeGroupService;
66
+ __decorate([
67
+ (0, inject_repository_decorator_1.InjectRepository)(() => scope_group_1.ScopeGroup),
68
+ __metadata("design:type", Object)
69
+ ], ScopeGroupService.prototype, "repository", void 0);
70
+ exports.ScopeGroupService = ScopeGroupService = __decorate([
71
+ (0, class_injector_1.Injectable)(),
72
+ __metadata("design:paramtypes", [scope_access_profile_service_1.ScopeAccessProfileService,
73
+ scope_access_service_1.ScopeAccessService])
74
+ ], ScopeGroupService);
75
+ //# sourceMappingURL=scope-group.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scope-group.service.js","sourceRoot":"./","sources":["access/services/scope-group.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6DAAsD;AACtD,mFAA+E;AAE/E,uGAAyF;AAEzF,yDAAqD;AACrD,mEAA8D;AAC9D,iFAA2E;AAC3E,iEAA4D;AAC5D,4EAAuE;AAGhE,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,sCAA8B;IAKlE,YACsB,yBAAoD,EACpD,kBAAsC;QAEzD,KAAK,EAAE,CAAC;QAHW,8BAAyB,GAAzB,yBAAyB,CAA2B;QACpD,uBAAkB,GAAlB,kBAAkB,CAAoB;IAG5D,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,gCAAgC,CACnC,OAAe,EACf,WAAmB,EACnB,SAAiB;QAEjB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/D,IAAI,CAAC,KAAK,EAAE,oBAAoB,EAAE,CAAC;YAChC,OAAO,EAAE,CAAC;QACb,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,iBAAiB,CACvE,KAAK,CAAC,oBAAoB,EAC1B,WAAW,CACb,CAAC;QAEF,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;YACvB,OAAO,EAAE,CAAC;QACb,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;YACxD,KAAK,EAAE;gBACJ,OAAO;gBACP,WAAW;gBACX,SAAS;aACX;SACH,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,YAAY;aAC7B,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;aACrB,MAAM,CAAC,CAAC,GAAG,EAAiB,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QAEjD,MAAM,UAAU,GAAG,IAAA,yCAAkB,EAAC,CAAC,GAAG,YAAY,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC;QAEzE,MAAM,IAAI,CAAC,kBAAkB,CAAC,UAAU,CACrC,OAAO,EACP,WAAW,EACX,SAAS,EACT,OAAO,EACP,UAAU,CACZ,CAAC;QAEF,OAAO,UAAU,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAAc,EAAE,WAAmB,EAAE,SAAkB;QACxE,OAAO,IAAI;aACP,UAAU;aACV,kBAAkB,CAAC,YAAY,CAAC;aAChC,QAAQ,CACN,iCAAc,EACd,gBAAgB,EAChB,6CAA6C,CAC/C;aACA,KAAK,CAAC,+BAA+B,MAAM;+CACN,WAAW;cAC5C,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kCAAkC,SAAS,GAAG,EAAE,CAAC;aACvE,OAAO,EAAE,CAAC;IACjB,CAAC;CACH,CAAA;AA1EY,8CAAiB;AAGjB;IADT,IAAA,8CAAgB,EAAC,GAAG,EAAE,CAAC,wBAAU,CAAC;;qDACW;4BAHpC,iBAAiB;IAD7B,IAAA,2BAAU,GAAE;qCAOuC,wDAAyB;QAChC,yCAAkB;GAPlD,iBAAiB,CA0E7B"}
@@ -0,0 +1,9 @@
1
+ import { ScopeKey } from "../entities/scope-key";
2
+ import { RepositoryService } from "../../database/services/repository.service";
3
+ import { Repository } from "../../database/interfaces/repository";
4
+ import { Logger } from "@rockster/logger";
5
+ export declare class ScopeKeyService extends RepositoryService<ScopeKey> {
6
+ protected logger: Logger;
7
+ protected repository: Repository<ScopeKey>;
8
+ updateAll(): Promise<void>;
9
+ }
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ScopeKeyService = void 0;
13
+ const class_injector_1 = require("@rockster/class-injector");
14
+ const scope_key_1 = require("../entities/scope-key");
15
+ const repository_service_1 = require("../../database/services/repository.service");
16
+ const inject_repository_decorator_1 = require("../../database/decorators/inject-repository.decorator");
17
+ const env_1 = require("../env");
18
+ const logger_1 = require("@rockster/logger");
19
+ let ScopeKeyService = class ScopeKeyService extends repository_service_1.RepositoryService {
20
+ constructor() {
21
+ super(...arguments);
22
+ this.logger = new logger_1.Logger('Access');
23
+ }
24
+ async updateAll() {
25
+ const scopes = env_1.env.scopesKeys.entries();
26
+ for (const [name, keys] of scopes) {
27
+ for (const key of keys) {
28
+ const exists = await this
29
+ .repository
30
+ .findOneBy({
31
+ contextName: name,
32
+ name: key.name
33
+ });
34
+ if (!exists)
35
+ await this.repository.save({
36
+ contextName: name,
37
+ name: key.name
38
+ });
39
+ }
40
+ this.logger.log(`Scope [${name}] keys successfully updated`);
41
+ }
42
+ }
43
+ };
44
+ exports.ScopeKeyService = ScopeKeyService;
45
+ __decorate([
46
+ (0, inject_repository_decorator_1.InjectRepository)(() => scope_key_1.ScopeKey),
47
+ __metadata("design:type", Object)
48
+ ], ScopeKeyService.prototype, "repository", void 0);
49
+ exports.ScopeKeyService = ScopeKeyService = __decorate([
50
+ (0, class_injector_1.Injectable)()
51
+ ], ScopeKeyService);
52
+ //# sourceMappingURL=scope-key.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scope-key.service.js","sourceRoot":"./","sources":["access/services/scope-key.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6DAAsD;AACtD,qDAAiD;AACjD,mFAA+E;AAC/E,uGAAyF;AAEzF,gCAA6B;AAC7B,6CAA0C;AAGnC,IAAM,eAAe,GAArB,MAAM,eAAgB,SAAQ,sCAA2B;IAAzD;;QAEM,WAAM,GAAG,IAAI,eAAM,CAAC,QAAQ,CAAC,CAAC;IA8B3C,CAAC;IAzBE,KAAK,CAAC,SAAS;QACZ,MAAM,MAAM,GAAG,SAAG,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QAExC,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,EAAE,CAAC;YAEjC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBAEtB,MAAM,MAAM,GAAG,MAAM,IAAI;qBACrB,UAAU;qBACV,SAAS,CAAC;oBACR,WAAW,EAAE,IAAI;oBACjB,IAAI,EAAE,GAAG,CAAC,IAAI;iBAChB,CAAC,CAAC;gBAEN,IAAI,CAAC,MAAM;oBAER,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;wBACxB,WAAW,EAAE,IAAI;wBACjB,IAAI,EAAE,GAAG,CAAC,IAAI;qBAChB,CAAC,CAAA;YACR,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,IAAI,6BAA6B,CAAC,CAAC;QAChE,CAAC;IACJ,CAAC;CACH,CAAA;AAhCY,0CAAe;AAKf;IADT,IAAA,8CAAgB,EAAC,GAAG,EAAE,CAAC,oBAAQ,CAAC;;mDACU;0BALjC,eAAe;IAD3B,IAAA,2BAAU,GAAE;GACA,eAAe,CAgC3B"}
@@ -0,0 +1,10 @@
1
+ import { RepositoryService } from "../../database/services/repository.service";
2
+ import { IScopeOwner } from "@rockster/common/access";
3
+ import { Repository } from "../../database/interfaces/repository";
4
+ export declare class ScopeOwnerService extends RepositoryService<IScopeOwner> {
5
+ protected repository: Repository<IScopeOwner>;
6
+ getIsOwner(contextName: string, userId: string, contextId?: string): Promise<boolean>;
7
+ findOwnerUserIds(contextName: string, contextId: string | undefined, userIds: string[]): Promise<Set<string>>;
8
+ /** True when the user owns any context (used to gate global IAM resources). */
9
+ getHasAnyOwnership(userId: string): Promise<boolean>;
10
+ }
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ScopeOwnerService = void 0;
13
+ const class_injector_1 = require("@rockster/class-injector");
14
+ const repository_service_1 = require("../../database/services/repository.service");
15
+ const inject_repository_decorator_1 = require("../../database/decorators/inject-repository.decorator");
16
+ const scope_owner_1 = require("../entities/scope-owner");
17
+ const typeorm_1 = require("typeorm");
18
+ let ScopeOwnerService = class ScopeOwnerService extends repository_service_1.RepositoryService {
19
+ async getIsOwner(contextName, userId, contextId) {
20
+ const normalizedContextId = contextId == null || contextId === "" ? undefined : contextId;
21
+ const exists = await this.repository.findOneBy({
22
+ contextId: normalizedContextId,
23
+ contextName: contextName,
24
+ userId: userId
25
+ });
26
+ return !!exists;
27
+ }
28
+ async findOwnerUserIds(contextName, contextId, userIds) {
29
+ if (!userIds.length) {
30
+ return new Set();
31
+ }
32
+ const normalizedContextId = contextId == null || contextId === "" ? undefined : contextId;
33
+ const where = {
34
+ contextName,
35
+ userId: (0, typeorm_1.In)(userIds),
36
+ };
37
+ if (normalizedContextId != null) {
38
+ where.contextId = normalizedContextId;
39
+ }
40
+ const owners = await this.repository.find({
41
+ where,
42
+ select: ['userId'],
43
+ });
44
+ return new Set(owners.map((owner) => owner.userId));
45
+ }
46
+ /** True when the user owns any context (used to gate global IAM resources). */
47
+ async getHasAnyOwnership(userId) {
48
+ const exists = await this.repository.findOneBy({ userId });
49
+ return !!exists;
50
+ }
51
+ };
52
+ exports.ScopeOwnerService = ScopeOwnerService;
53
+ __decorate([
54
+ (0, inject_repository_decorator_1.InjectRepository)(() => scope_owner_1.ScopeOwner),
55
+ __metadata("design:type", Object)
56
+ ], ScopeOwnerService.prototype, "repository", void 0);
57
+ exports.ScopeOwnerService = ScopeOwnerService = __decorate([
58
+ (0, class_injector_1.Injectable)()
59
+ ], ScopeOwnerService);
60
+ //# sourceMappingURL=scope-owner.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scope-owner.service.js","sourceRoot":"./","sources":["access/services/scope-owner.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6DAAsD;AACtD,mFAA+E;AAE/E,uGAAyF;AAEzF,yDAAqD;AACrD,qCAA6B;AAGtB,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,sCAA8B;IAKlE,KAAK,CAAC,UAAU,CACb,WAAmB,EACnB,MAAc,EACd,SAAkB;QAElB,MAAM,mBAAmB,GACtB,SAAS,IAAI,IAAI,IAAI,SAAS,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;QAEjE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;YAC5C,SAAS,EAAE,mBAAmB;YAC9B,WAAW,EAAE,WAAW;YACxB,MAAM,EAAE,MAAM;SAChB,CAAC,CAAC;QAEH,OAAO,CAAC,CAAC,MAAM,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,gBAAgB,CACnB,WAAmB,EACnB,SAA6B,EAC7B,OAAiB;QAEjB,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO,IAAI,GAAG,EAAE,CAAC;QACpB,CAAC;QAED,MAAM,mBAAmB,GACtB,SAAS,IAAI,IAAI,IAAI,SAAS,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;QAEjE,MAAM,KAAK,GAA4B;YACpC,WAAW;YACX,MAAM,EAAE,IAAA,YAAE,EAAC,OAAO,CAAC;SACrB,CAAC;QAEF,IAAI,mBAAmB,IAAI,IAAI,EAAE,CAAC;YAC/B,KAAK,CAAC,SAAS,GAAG,mBAAmB,CAAC;QACzC,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YACvC,KAAK;YACL,MAAM,EAAE,CAAC,QAAQ,CAAC;SACpB,CAAC,CAAC;QAEH,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,+EAA+E;IAC/E,KAAK,CAAC,kBAAkB,CAAC,MAAc;QACpC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QAC3D,OAAO,CAAC,CAAC,MAAM,CAAC;IACnB,CAAC;CACH,CAAA;AAxDY,8CAAiB;AAGjB;IADT,IAAA,8CAAgB,EAAC,GAAG,EAAE,CAAC,wBAAU,CAAC;;qDACW;4BAHpC,iBAAiB;IAD7B,IAAA,2BAAU,GAAE;GACA,iBAAiB,CAwD7B"}
@@ -0,0 +1,10 @@
1
+ import { ScopeGroupUserService } from "./scope-group-user.service";
2
+ import { ScopeAccessService } from "./scope-access.service";
3
+ import { ScopeOwnerService } from "./scope-owner.service";
4
+ export declare class ScopeService {
5
+ protected scopeGroupUserService: ScopeGroupUserService;
6
+ protected scopeAccessService: ScopeAccessService;
7
+ protected scopeOwnerService: ScopeOwnerService;
8
+ constructor(scopeGroupUserService: ScopeGroupUserService, scopeAccessService: ScopeAccessService, scopeOwnerService: ScopeOwnerService);
9
+ removeUser(userId: string, contextName: string, contextId?: string): Promise<void>;
10
+ }
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ScopeService = void 0;
13
+ const class_injector_1 = require("@rockster/class-injector");
14
+ const scope_group_user_service_1 = require("./scope-group-user.service");
15
+ const scope_access_service_1 = require("./scope-access.service");
16
+ const scope_owner_service_1 = require("./scope-owner.service");
17
+ let ScopeService = class ScopeService {
18
+ constructor(scopeGroupUserService, scopeAccessService, scopeOwnerService) {
19
+ this.scopeGroupUserService = scopeGroupUserService;
20
+ this.scopeAccessService = scopeAccessService;
21
+ this.scopeOwnerService = scopeOwnerService;
22
+ }
23
+ async removeUser(userId, contextName, contextId) {
24
+ const groups = await this
25
+ .scopeGroupUserService
26
+ .byContext(userId, contextName, contextId);
27
+ await Promise.all(groups.map(async (group) => {
28
+ await this.scopeGroupUserService.removeBy({
29
+ groupId: group.groupId,
30
+ userId: group.userId
31
+ });
32
+ }));
33
+ await this.scopeOwnerService.removeBy({
34
+ contextName: contextName,
35
+ contextId: contextId,
36
+ userId: userId
37
+ });
38
+ await this.scopeAccessService.removeBy({
39
+ userId: userId,
40
+ contextId: contextId,
41
+ contextName: contextName
42
+ });
43
+ }
44
+ };
45
+ exports.ScopeService = ScopeService;
46
+ exports.ScopeService = ScopeService = __decorate([
47
+ (0, class_injector_1.Injectable)(),
48
+ __metadata("design:paramtypes", [scope_group_user_service_1.ScopeGroupUserService,
49
+ scope_access_service_1.ScopeAccessService,
50
+ scope_owner_service_1.ScopeOwnerService])
51
+ ], ScopeService);
52
+ //# sourceMappingURL=scope-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scope-service.js","sourceRoot":"./","sources":["access/services/scope-service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6DAAsD;AACtD,yEAAmE;AACnE,iEAA4D;AAC5D,+DAA0D;AAGnD,IAAM,YAAY,GAAlB,MAAM,YAAY;IAEtB,YACa,qBAA4C,EAC5C,kBAAsC,EACtC,iBAAoC;QAFpC,0BAAqB,GAArB,qBAAqB,CAAuB;QAC5C,uBAAkB,GAAlB,kBAAkB,CAAoB;QACtC,sBAAiB,GAAjB,iBAAiB,CAAmB;IAC9C,CAAC;IAEJ,KAAK,CAAC,UAAU,CAAC,MAAc,EAAE,WAAmB,EAAE,SAAkB;QACrE,MAAM,MAAM,GAAG,MAAM,IAAI;aACrB,qBAAqB;aACrB,SAAS,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;QAE9C,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAC1C,MAAM,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC;gBACvC,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,MAAM,EAAE,KAAK,CAAC,MAAM;aACtB,CAAC,CAAA;QACL,CAAC,CAAC,CAAC,CAAA;QAEH,MAAM,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC;YACnC,WAAW,EAAE,WAAW;YACxB,SAAS,EAAE,SAAS;YACpB,MAAM,EAAE,MAAM;SAChB,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC;YACpC,MAAM,EAAE,MAAM;YACd,SAAS,EAAE,SAAS;YACpB,WAAW,EAAE,WAAW;SAC1B,CAAC,CAAA;IACL,CAAC;CACH,CAAA;AAhCY,oCAAY;uBAAZ,YAAY;IADxB,IAAA,2BAAU,GAAE;qCAI0B,gDAAqB;QACxB,yCAAkB;QACnB,uCAAiB;GALvC,YAAY,CAgCxB"}
@@ -1,12 +1,9 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.executePost = void 0;
7
4
  const use_repository_1 = require("../../database/functions/use-repository");
8
5
  const common_1 = require("@rockster/common");
9
- const generate_id_1 = __importDefault(require("../../database/functions/generate-id"));
6
+ const generate_entity_id_1 = require("../../database/functions/generate-entity-id");
10
7
  const deep_merge_keep_undefined_1 = require("../utils/deep-merge-keep-undefined");
11
8
  const transaction_context_1 = require("../../database/contexts/transaction-context");
12
9
  const executePost = async (content) => {
@@ -17,11 +14,12 @@ const executePost = async (content) => {
17
14
  const properties = core
18
15
  .storage
19
16
  .getProperties(content.target)
20
- .filter((property) => !isNullOrEmpty(property.columnType)
21
- || property.isRelation);
17
+ .filter((property) => (!isNullOrEmpty(property.columnType)
18
+ || property.isRelation)
19
+ && !property.isExternal);
22
20
  if (content.type === 'create') {
23
21
  if (!content.data[content.idProperty])
24
- (0, generate_id_1.default)(repository.target, content.data);
22
+ content.data[content.idProperty] = (0, generate_entity_id_1.generateEntityId)(repository.target);
25
23
  return repository.save(content.data);
26
24
  }
27
25
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"execute-post.js","sourceRoot":"./","sources":["command/functions/execute-post.ts"],"names":[],"mappings":";;;;;;AACA,4EAAwE;AACxE,6CAAmD;AACnD,uFAA8D;AAG9D,kFAA4E;AAC5E,qFAAsF;AAE/E,MAAM,WAAW,GAAG,KAAK,EAC7B,OAA6B,EAC9B,EAAE;IACD,MAAM,kBAAkB,GAAG,6CAAuB,CAAC,QAAQ,EAAE,CAAC;IAC9D,MAAM,UAAU,GAAG,kBAAkB,EAAE,aAAa;QACjD,CAAC,CAAC,kBAAkB,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC;QAChE,CAAC,CAAC,IAAA,8BAAa,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAEnC,MAAM,UAAU,GAAG,IAAI;SACnB,OAAO;SACP,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC;SAC7B,MAAM,CAAC,CAAC,QAAuC,EAAE,EAAE,CACjD,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC;WAChC,QAAQ,CAAC,UAAU,CACW,CAAC;IAExC,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;YAAE,IAAA,qBAAU,EAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACnF,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;SAAM,CAAC;QAEL,MAAM,MAAM,GAAG,MAAM,UAAU;aAC3B,OAAO,CAAC;YACN,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE;YAChD,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;SAC5D,CAAC,CAAC;QAEN,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YAC9B,OAAO,UAAU,CAAC,IAAI,CAAC;gBACpB,GAAG,OAAO,CAAC,IAAI;gBACf,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,OAAO;aACvC,CAAC,CAAC;QACN,CAAC;QAED,IAAI,CAAC,MAAM,EAAE,CAAC;YACX,MAAM,IAAI,wBAAe,CAAC;gBACvB,OAAO,EAAE,kBAAkB,OAAO,CAAC,OAAO,YAAY;aACxD,CAAC,CAAC;QACN,CAAC;QAED,MAAM,MAAM,GAAG,IAAA,kDAAsB,EAAS,MAAgB,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAE9E,MAAM,UAAU,CAAC,MAAM,CAAC;YACrB,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,OAAO;SACvC,EAAE,MAAM,CAAC,CAAC;QAEX,OAAO,MAAM,CAAC;IACjB,CAAC;AACJ,CAAC,CAAA;AAhDY,QAAA,WAAW,eAgDvB"}
1
+ {"version":3,"file":"execute-post.js","sourceRoot":"./","sources":["command/functions/execute-post.ts"],"names":[],"mappings":";;;AACA,4EAAwE;AACxE,6CAAmD;AACnD,oFAA+E;AAG/E,kFAA4E;AAC5E,qFAAsF;AAE/E,MAAM,WAAW,GAAG,KAAK,EAC7B,OAA6B,EAC9B,EAAE;IACD,MAAM,kBAAkB,GAAG,6CAAuB,CAAC,QAAQ,EAAE,CAAC;IAC9D,MAAM,UAAU,GAAG,kBAAkB,EAAE,aAAa;QACjD,CAAC,CAAC,kBAAkB,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC;QAChE,CAAC,CAAC,IAAA,8BAAa,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAEnC,MAAM,UAAU,GAAG,IAAI;SACnB,OAAO;SACP,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC;SAC7B,MAAM,CAAC,CAAC,QAAuC,EAAE,EAAE,CACjD,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC;WACjC,QAAQ,CAAC,UAAU,CAAC;WACpB,CAAC,QAAQ,CAAC,UAAU,CACU,CAAC;IAExC,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAE7B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,IAAA,qCAAgB,EAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAE1E,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAExC,CAAC;SAAM,CAAC;QAEL,MAAM,MAAM,GAAG,MAAM,UAAU;aAC3B,OAAO,CAAC;YACN,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE;YAChD,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;SAC5D,CAAC,CAAC;QAEN,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YAC9B,OAAO,UAAU,CAAC,IAAI,CAAC;gBACpB,GAAG,OAAO,CAAC,IAAI;gBACf,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,OAAO;aACvC,CAAC,CAAC;QACN,CAAC;QAED,IAAI,CAAC,MAAM,EAAE,CAAC;YACX,MAAM,IAAI,wBAAe,CAAC;gBACvB,OAAO,EAAE,kBAAkB,OAAO,CAAC,OAAO,YAAY;aACxD,CAAC,CAAC;QACN,CAAC;QAED,MAAM,MAAM,GAAG,IAAA,kDAAsB,EAAS,MAAgB,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAE9E,MAAM,UAAU,CAAC,MAAM,CAAC;YACrB,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,OAAO;SACvC,EAAE,MAAM,CAAC,CAAC;QAEX,OAAO,MAAM,CAAC;IACjB,CAAC;AACJ,CAAC,CAAA;AArDY,QAAA,WAAW,eAqDvB"}
@@ -11,10 +11,13 @@ const class_injector_1 = require("@rockster/class-injector");
11
11
  const core_1 = require("../../core");
12
12
  const class_pipe_1 = require("@rockster/class-pipe");
13
13
  const interfaces_1 = require("../../controllers/interfaces");
14
+ const resolve_action_transactional_1 = require("../../core/functions/resolve-action-transactional");
14
15
  const constants_1 = require("../constants");
15
16
  const constants_2 = require("../../controllers/constants");
16
17
  const database_1 = require("../../database");
17
- const use_protector_1 = require("../../database/functions/use-protector");
18
+ const assert_scope_action_access_1 = require("../../access/functions/assert-scope-action-access");
19
+ const warn_if_public_1 = require("../../access/functions/warn-if-public");
20
+ const describe_action_scope_1 = require("../../access/functions/describe-action-scope");
18
21
  const constants_3 = require("../../web-socket/constants");
19
22
  const global_1 = require("../../global");
20
23
  const docs_1 = require("@rockster/common/docs");
@@ -39,6 +42,7 @@ let PostActionBuilder = class PostActionBuilder {
39
42
  const isSecure = !property.public;
40
43
  const name = property.name || property.propertyKey;
41
44
  const path = (0, core_1.getActionPath)(object.alias, name);
45
+ (0, warn_if_public_1.warnIfPublic)(path, property);
42
46
  this.beforeInterceptors[path] =
43
47
  (0, core_1.createExecuteInterceptors)([core_1.commonInterceptor.onBeforeExecute], object, property);
44
48
  this.afterInterceptors[path] =
@@ -51,6 +55,7 @@ let PostActionBuilder = class PostActionBuilder {
51
55
  path: path,
52
56
  name: name,
53
57
  secure: isSecure,
58
+ transactional: (0, resolve_action_transactional_1.resolveActionTransactional)(object, property),
54
59
  execute: async (action, context) => {
55
60
  return this
56
61
  .execute(action, context, data.executors[name], property);
@@ -120,6 +125,8 @@ let PostActionBuilder = class PostActionBuilder {
120
125
  path: path,
121
126
  description: property.description,
122
127
  isSecure: isSecure,
128
+ authenticated: property.authenticated,
129
+ keys: (0, describe_action_scope_1.describeActionScopeKeys)(property),
123
130
  payload: property.data,
124
131
  response: property.data,
125
132
  hasResponse: true,
@@ -154,6 +161,19 @@ let PostActionBuilder = class PostActionBuilder {
154
161
  // End After Interceptor
155
162
  }
156
163
  async onBefore(pending, context, property) {
164
+ const groups = property.exposeGroups ?? [];
165
+ const payload = context.request[pending.requestRef];
166
+ const idProperty = (0, database_1.getIdProperty)(property.data);
167
+ const idValue = payload?.[idProperty.propertyKey];
168
+ const postType = !idValue ? 'create' : 'modify';
169
+ await (0, assert_scope_action_access_1.assertScopeActionAccess)({
170
+ property,
171
+ slot: postType === "create" ? "create" : "modify",
172
+ pending,
173
+ context,
174
+ postType,
175
+ entityId: idValue != null ? String(idValue) : undefined,
176
+ });
157
177
  // Before Validation Interceptor
158
178
  await this
159
179
  .beforeValidationInterceptors[pending.path]({
@@ -162,13 +182,7 @@ let PostActionBuilder = class PostActionBuilder {
162
182
  property: property
163
183
  });
164
184
  // End Before Validation Interceptor
165
- const groups = property.exposeGroups ?? [];
166
- const payload = context.request[pending.requestRef];
167
- const idProperty = (0, database_1.getIdProperty)(property.data);
168
- const idValue = payload[idProperty.propertyKey];
169
- const postType = !idValue ? 'create' : 'modify';
170
185
  const sanitized = {};
171
- const protector = (0, use_protector_1.useProtector)(property.data);
172
186
  const errors = await (0, class_pipe_1.validate)(property.data, payload, sanitized, {
173
187
  groups: postType === 'modify'
174
188
  ? [global_1.actionGroups.modify, ...groups]
@@ -196,16 +210,6 @@ let PostActionBuilder = class PostActionBuilder {
196
210
  errors.target = pending.requestRef;
197
211
  throw errors;
198
212
  }
199
- if (context.isAuthenticated && protector) {
200
- if (postType === 'modify') {
201
- await protector
202
- .canModify(context.session?.userId, payload, context.entityManager);
203
- }
204
- else {
205
- await protector
206
- .canCreate(context.session?.userId, payload, context.entityManager);
207
- }
208
- }
209
213
  const postContent = {
210
214
  idProperty: idProperty.propertyKey,
211
215
  data: property.content?.strict