@ozdao/martyrs 0.2.564 → 0.2.565

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 (279) hide show
  1. package/dist/abac-BPl9Bmf9.js +1527 -0
  2. package/dist/builder.js +51 -39
  3. package/dist/{common.schema-GFSlNJo7.js → common.schema-DswiUXKB.js} +1 -1
  4. package/dist/community.server.js +48 -9
  5. package/dist/core.server.js +6 -4
  6. package/dist/{crud-C7FSTUes.js → crud-q1ye5IhV.js} +7 -7
  7. package/dist/events.server.js +3 -3
  8. package/dist/gallery.server.js +2 -2
  9. package/dist/inventory.server.js +4 -6
  10. package/dist/{main-CmjWiDVF.js → main-B9o1iBAZ.js} +1279 -1287
  11. package/dist/marketplace.server.js +1 -1
  12. package/dist/martyrs/src/components/Button/{Button.vue.js → Button.vue2.js} +36 -45
  13. package/dist/martyrs/src/components/Button/Button.vue2.js.map +1 -0
  14. package/dist/martyrs/src/components/Feed/Carousel.vue.js +1 -1
  15. package/dist/martyrs/src/components/Feed/Feed.vue.js +1 -1
  16. package/dist/martyrs/src/components/Field/{Field.vue2.js → Field.vue.js} +2 -2
  17. package/dist/martyrs/src/components/Field/Field.vue.js.map +1 -0
  18. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js +2 -2
  19. package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.js +1 -1
  20. package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.js.map +1 -1
  21. package/dist/martyrs/src/components/Loader/{Loader.vue2.js → Loader.vue.js} +3 -4
  22. package/dist/martyrs/src/components/Loader/Loader.vue.js.map +1 -0
  23. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue.js +1 -1
  24. package/dist/martyrs/src/components/Media/Media.vue.js +1 -1
  25. package/dist/martyrs/src/components/Menu/{Menu.vue.js → Menu.vue2.js} +2 -2
  26. package/dist/martyrs/src/components/Menu/Menu.vue2.js.map +1 -0
  27. package/dist/martyrs/src/components/Select/{Select.vue2.js → Select.vue.js} +2 -2
  28. package/dist/martyrs/src/components/Select/Select.vue.js.map +1 -0
  29. package/dist/martyrs/src/components/SelectMulti/{SelectMulti.vue.js → SelectMulti.vue2.js} +2 -2
  30. package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue2.js.map +1 -0
  31. package/dist/martyrs/src/components/Tree/Tree.vue.js +6 -3
  32. package/dist/martyrs/src/components/Tree/Tree.vue.js.map +1 -1
  33. package/dist/martyrs/src/components/UploadImage/UploadImage.vue.js +1 -1
  34. package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.js +1 -1
  35. package/dist/martyrs/src/modules/auth/auth.client.js +10 -7
  36. package/dist/martyrs/src/modules/auth/auth.client.js.map +1 -1
  37. package/dist/martyrs/src/modules/auth/views/components/pages/EnterCode.vue.js +1 -1
  38. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js +2 -2
  39. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +2 -2
  40. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +3 -3
  41. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js +1 -1
  42. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js +1 -1
  43. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js +2 -2
  44. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +2 -2
  45. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +13 -13
  46. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js.map +1 -1
  47. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +2 -2
  48. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.js +2 -2
  49. package/dist/martyrs/src/modules/auth/views/router/auth.router.js +116 -0
  50. package/dist/martyrs/src/modules/auth/views/router/auth.router.js.map +1 -0
  51. package/dist/martyrs/src/modules/auth/views/router/users.router.js +180 -0
  52. package/dist/martyrs/src/modules/auth/views/router/users.router.js.map +1 -0
  53. package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.js +4 -4
  54. package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.js.map +1 -1
  55. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js +1 -1
  56. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +2 -2
  57. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +2 -2
  58. package/dist/martyrs/src/modules/constructor/components/elements/Card.vue.js +1 -1
  59. package/dist/martyrs/src/modules/constructor/components/elements/Embed.vue.js +1 -1
  60. package/dist/martyrs/src/modules/core/locales/en.js +45 -0
  61. package/dist/martyrs/src/modules/core/locales/en.js.map +1 -1
  62. package/dist/martyrs/src/modules/core/locales/ru.js +45 -0
  63. package/dist/martyrs/src/modules/core/locales/ru.js.map +1 -1
  64. package/dist/martyrs/src/modules/core/views/classes/i18n.manager.js +9 -0
  65. package/dist/martyrs/src/modules/core/views/classes/i18n.manager.js.map +1 -1
  66. package/dist/martyrs/src/modules/core/views/components/blocks/BlockSearch.vue.js +1 -1
  67. package/dist/martyrs/src/modules/core/views/components/blocks/CardHeader.vue.js +1 -1
  68. package/dist/martyrs/src/modules/core/views/components/blocks/PopupAuth.vue.js +1 -1
  69. package/dist/martyrs/src/modules/core/views/components/blocks/PopupDateSelector.vue.js +2 -2
  70. package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js +2 -2
  71. package/dist/martyrs/src/modules/core/views/components/partials/Header.vue.js +2 -2
  72. package/dist/martyrs/src/modules/core/views/components/partials/NavigationBar.vue.js +1 -1
  73. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterRange.vue.js +1 -1
  74. package/dist/martyrs/src/modules/core/views/mixins/mixins.js +1 -2
  75. package/dist/martyrs/src/modules/core/views/mixins/mixins.js.map +1 -1
  76. package/dist/martyrs/src/modules/core/views/router/addRoutes.js +6 -1
  77. package/dist/martyrs/src/modules/core/views/router/addRoutes.js.map +1 -1
  78. package/dist/martyrs/src/modules/events/components/elements/ButtonCheck.vue.js +1 -1
  79. package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.js +1 -1
  80. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +4 -4
  81. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +2 -2
  82. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +2 -2
  83. package/dist/martyrs/src/modules/events/components/sections/EditTickets.vue.js +2 -2
  84. package/dist/martyrs/src/modules/events/components/sections/Feed.vue.js +1 -1
  85. package/dist/martyrs/src/modules/events/components/sections/List.vue.js +1 -1
  86. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +4 -4
  87. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js +3 -3
  88. package/dist/martyrs/src/modules/inventory/components/forms/ColumnSettingsMenu.vue.js +1 -1
  89. package/dist/martyrs/src/modules/inventory/components/forms/HistoryView.vue.js +1 -1
  90. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js +3 -3
  91. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +5 -5
  92. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js.map +1 -1
  93. package/dist/martyrs/src/modules/marketplace/views/components/pages/Marketplace.vue.js +1 -1
  94. package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.js +1 -1
  95. package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js +1 -1
  96. package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js +1 -1
  97. package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.js +1 -1
  98. package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.js +1 -1
  99. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js +3 -3
  100. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +4 -4
  101. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js +2 -2
  102. package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.js +1 -1
  103. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js +3 -3
  104. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +2 -2
  105. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js +2 -2
  106. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js +1 -1
  107. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +2 -2
  108. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js +2 -2
  109. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +2 -2
  110. package/dist/martyrs/src/modules/music/components/pages/TrackCreate.vue.js +1 -1
  111. package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.js +1 -1
  112. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js +4 -4
  113. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js.map +1 -1
  114. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.js +3 -0
  115. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.js.map +1 -1
  116. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js +3 -3
  117. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js +3 -3
  118. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.js +2 -2
  119. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +2 -2
  120. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js +1 -1
  121. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +2 -2
  122. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.js +1 -1
  123. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.js +1 -1
  124. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +2 -2
  125. package/dist/martyrs/src/modules/orders/components/sections/FormPayment.vue.js +1 -1
  126. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js +1 -1
  127. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js.map +1 -1
  128. package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js +1 -1
  129. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js +1 -1
  130. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js +2 -2
  131. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js +2 -2
  132. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +1 -1
  133. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +2 -2
  134. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +5 -5
  135. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js.map +1 -1
  136. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +3 -3
  137. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +3 -3
  138. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +3 -3
  139. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js +2 -2
  140. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +2 -2
  141. package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.js +1 -1
  142. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js +1 -1
  143. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js.map +1 -1
  144. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js +15 -2
  145. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js.map +1 -1
  146. package/dist/martyrs/src/modules/products/components/elements/Image360.vue.js +1 -1
  147. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +10 -7
  148. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js.map +1 -1
  149. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +7 -6
  150. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js.map +1 -1
  151. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +11 -2
  152. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js.map +1 -1
  153. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +4 -4
  154. package/dist/martyrs/src/modules/products/components/pages/ProductRecommmendation.vue.js +1 -1
  155. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +1 -1
  156. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js +2 -2
  157. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +3 -3
  158. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +3 -3
  159. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js +1 -1
  160. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js +1 -1
  161. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +11 -8
  162. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js.map +1 -1
  163. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +1 -1
  164. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js +211 -61
  165. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js.map +1 -1
  166. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js +2 -2
  167. package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.js +2 -2
  168. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js +1 -1
  169. package/dist/martyrs/src/modules/spots/components/pages/Map.vue.js +4 -4
  170. package/dist/martyrs/src/modules/spots/components/pages/Map.vue.js.map +1 -1
  171. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +3 -3
  172. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +3 -3
  173. package/dist/martyrs/src/modules/wallet/views/components/blocks/CardDeposit.vue.js +1 -1
  174. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.js +2 -2
  175. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js +2 -2
  176. package/dist/martyrs.css +1 -1
  177. package/dist/martyrs.es.js +1 -1
  178. package/dist/music.server.js +11 -12
  179. package/dist/notifications.server.js +0 -3
  180. package/dist/orders.server.js +5 -6
  181. package/dist/organizations.server.js +9 -10
  182. package/dist/products.server.js +27 -26
  183. package/dist/{queryProcessor-CBQgZycY.js → queryProcessor-C_5Iipam.js} +4 -1
  184. package/dist/rents.server.js +2 -3
  185. package/dist/spots.server.js +1 -1
  186. package/dist/style.css +38 -23
  187. package/dist/{web-cNKIl_cL.js → web-BF3ijvEr.js} +1 -1
  188. package/package.json +1 -1
  189. package/src/builder/modes/ssr.rspack.dev.js +4 -3
  190. package/src/builder/rspack/rspack.config.api.js +15 -4
  191. package/src/builder/rspack/rspack.config.base.js +3 -3
  192. package/src/builder/rspack/rspack.config.ssr.client.js +28 -28
  193. package/src/builder/templates/page.js +2 -2
  194. package/src/components/Button/Button.vue +50 -37
  195. package/src/components/FieldPhone/FieldPhone.vue +1 -1
  196. package/src/components/Loader/Loader.vue +1 -1
  197. package/src/components/Tree/Tree.vue +6 -3
  198. package/src/modules/PROCESS.md +0 -0
  199. package/src/modules/TASKS.MD +17 -0
  200. package/src/modules/auth/auth.client.js +11 -7
  201. package/src/modules/auth/views/components/pages/SignIn.vue +1 -1
  202. package/src/modules/auth/views/router/auth.router.js +94 -0
  203. package/src/modules/auth/views/router/users.router.js +153 -0
  204. package/src/modules/backoffice/components/partials/Sidebar.vue +7 -7
  205. package/src/modules/community/community.server.js +8 -0
  206. package/src/modules/community/policies/blog.policies.js +55 -0
  207. package/src/modules/community/routes/blog.routes.js +1 -1
  208. package/src/modules/community/routes/comments.routes.js +1 -1
  209. package/src/modules/community/routes/reactions.routes.js +1 -4
  210. package/src/modules/core/controllers/classes/abac/abac.adapter.express.js +206 -124
  211. package/src/modules/core/controllers/classes/abac/abac.adapter.ws.js +203 -50
  212. package/src/modules/core/controllers/classes/abac/abac.core.js +127 -36
  213. package/src/modules/core/controllers/classes/abac/abac.fields.js +144 -179
  214. package/src/modules/core/controllers/classes/abac/abac.js +201 -10
  215. package/src/modules/core/controllers/classes/abac/abac.policies.js +147 -57
  216. package/src/modules/core/controllers/classes/crud/crud.policies.js +5 -5
  217. package/src/modules/core/controllers/policies/core.policies.js +5 -2
  218. package/src/modules/core/controllers/utils/queryProcessor.js +4 -1
  219. package/src/modules/core/core.server.js +1 -0
  220. package/src/modules/core/locales/en.js +45 -0
  221. package/src/modules/core/locales/ru.js +45 -0
  222. package/src/modules/core/models/schemas/common.schema.js +1 -1
  223. package/src/modules/core/views/classes/i18n.manager.js +13 -0
  224. package/src/modules/core/views/components/sections/filters/FilterPrice.vue +81 -0
  225. package/src/modules/core/views/mixins/mixins.js +1 -2
  226. package/src/modules/core/views/router/addRoutes.js +6 -1
  227. package/src/modules/events/routes/events.routes.js +1 -1
  228. package/src/modules/inventory/components/pages/InventoryEdit.vue +3 -3
  229. package/src/modules/inventory/policies/inventory.policies.js +1 -1
  230. package/src/modules/inventory/routes/inventory.routes.js +1 -1
  231. package/src/modules/marketplace/marketplace.router.js +66 -0
  232. package/src/modules/marketplace/views/components/layouts/Marketplace.vue +363 -0
  233. package/src/modules/marketplace/views/components/pages/Catalog.vue +73 -0
  234. package/src/modules/music/controllers/stream.controller.js +1 -1
  235. package/src/modules/music/music.server.js +1 -1
  236. package/src/modules/music/policies/music.policies.js +3 -2
  237. package/src/modules/music/router/library.router.js +26 -0
  238. package/src/modules/music/router/music.router.js +176 -0
  239. package/src/modules/notifications/components/elements/NotificationBadge.vue +5 -6
  240. package/src/modules/notifications/notifications.server.js +1 -3
  241. package/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue +5 -0
  242. package/src/modules/orders/orders.server.js +0 -1
  243. package/src/modules/organizations/components/blocks/CardOrganization.vue +2 -2
  244. package/src/modules/organizations/components/pages/DepartmentEdit.vue +2 -2
  245. package/src/modules/organizations/components/pages/OrganizationEdit.vue +2 -2
  246. package/src/modules/organizations/policies/organizations.policies.js +12 -6
  247. package/src/modules/organizations/routes/organizations.routes.js +1 -3
  248. package/src/modules/products/components/blocks/CardCategory.vue +1 -1
  249. package/src/modules/products/components/blocks/CardProduct.vue +16 -2
  250. package/src/modules/products/components/pages/Categories.vue +9 -6
  251. package/src/modules/products/components/pages/CategoryEdit.vue +8 -4
  252. package/src/modules/products/components/pages/Product.vue +11 -5
  253. package/src/modules/products/components/sections/SectionProduct.vue +11 -7
  254. package/src/modules/products/controllers/categories.controller.js +32 -27
  255. package/src/modules/products/routes/categories.routes.js +1 -1
  256. package/src/modules/rents/controllers/routes/rents.routes.js +1 -1
  257. package/src/modules/rents/views/components/pages/RentsEdit.vue +208 -49
  258. package/src/modules/spots/components/pages/Map.vue +2 -2
  259. package/dist/abac-DYoheWuc.js +0 -1031
  260. package/dist/core.abac-DUPBnlk6.js +0 -298
  261. package/dist/core.logger-C3q8A9dl.js +0 -51
  262. package/dist/martyrs/src/components/Button/Button.vue.js.map +0 -1
  263. package/dist/martyrs/src/components/Field/Field.vue2.js.map +0 -1
  264. package/dist/martyrs/src/components/Loader/Loader.vue2.js.map +0 -1
  265. package/dist/martyrs/src/components/Menu/Menu.vue.js.map +0 -1
  266. package/dist/martyrs/src/components/Select/Select.vue2.js.map +0 -1
  267. package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue.js.map +0 -1
  268. package/dist/martyrs/src/modules/auth/auth.router.js +0 -342
  269. package/dist/martyrs/src/modules/auth/auth.router.js.map +0 -1
  270. package/src/modules/auth/auth.router.js +0 -262
  271. package/src/modules/core/controllers/classes/abac/v2/abac-core-fixed.js +0 -313
  272. package/src/modules/core/controllers/classes/abac/v2/abac-express-fixed.js +0 -276
  273. package/src/modules/core/controllers/classes/abac/v2/abac-fields-fixed.js +0 -425
  274. package/src/modules/core/controllers/classes/abac/v2/abac-main-fixed.js +0 -295
  275. package/src/modules/core/controllers/classes/abac/v2/abac-policies-fixed.js +0 -316
  276. package/src/modules/core/controllers/classes/abac/v2/abac-ws-fixed.js +0 -237
  277. package/src/modules/core/controllers/classes/core.abac.js +0 -310
  278. package/src/modules/core/controllers/classes/core.crud.js +0 -89
  279. package/src/modules/governance/reactcode/eslint.config.js +0 -28
@@ -2,48 +2,62 @@
2
2
  export default class ABACCore {
3
3
  constructor(abac) {
4
4
  this.abac = abac;
5
- this.runningPolicies = new Map(); // Для контроля параллельности
5
+ this.runningPolicies = new Map();
6
6
  }
7
7
 
8
- // Нормализация контекста
8
+ /**
9
+ * Нормализация контекста
10
+ */
9
11
  normalizeContext(input) {
10
12
  const context = {
11
13
  user: null,
12
14
  action: null,
13
15
  resource: null,
14
16
  currentResource: null,
17
+ resourceId: null, // Добавляем ID ресурса для кэша
15
18
  data: {},
16
19
  req: null,
17
20
  socket: null,
18
21
  params: {},
19
22
  _cache: new Map(),
20
23
  _abac: this.abac,
21
- // Добавляем флаг для пропуска field policies (например, для админов)
22
24
  skipFieldPolicies: input.skipFieldPolicies || false,
23
25
  };
24
26
 
25
27
  if (input.req) {
26
- // Express context
28
+ // Express context - НЕ смешиваем body и query!
27
29
  context.user = input.user || input.req.userId;
28
30
  context.data = {
29
- ...input.req.body,
30
- ...input.req.query,
31
- params: input.req.params,
31
+ body: input.req.body || {},
32
+ query: input.req.query || {},
33
+ params: input.req.params || {},
32
34
  };
33
35
  context.params = input.req.params;
34
36
  context.req = input.req;
37
+
38
+ // Извлекаем ID ресурса для кэша
39
+ context.resourceId = input.req.params?._id ||
40
+ input.req.params?.id ||
41
+ input.req.body?._id ||
42
+ input.req.body?.id;
35
43
  } else if (input.socket) {
36
44
  // WebSocket context
37
45
  context.user = input.user || input.socket.userId;
38
46
  context.socket = input.socket;
39
47
  context.data = input.data || {};
48
+ context.resourceId = input.data?._id || input.data?.id;
40
49
  }
41
50
 
42
- // Merge остальные поля
43
- return Object.assign(context, input);
51
+ // Merge остальные поля (но не перезаписываем data)
52
+ return Object.assign(context, {
53
+ ...input,
54
+ data: context.data // Сохраняем структурированную data
55
+ });
44
56
  }
45
57
 
46
- // Выполнение политики с кэшированием
58
+ /**
59
+ * Выполнение политики с кэшированием
60
+ */
47
61
  async executePolicyWithCache(policyName, policyFn, context) {
48
62
  // Проверяем контекстный кэш
49
63
  const contextCacheKey = `${policyName}_${context.action}`;
@@ -51,8 +65,9 @@ export default class ABACCore {
51
65
  return context._cache.get(contextCacheKey);
52
66
  }
53
67
 
54
- // Проверяем глобальный кэш
55
- const globalCacheKey = `policy_${policyName}_${context.user}_${context.resource}_${context.action}`;
68
+ // Улучшенный глобальный кэш-ключ с ID ресурса
69
+ const globalCacheKey = this._buildCacheKey(policyName, context);
70
+
56
71
  if (this.abac.options.cacheEnabled) {
57
72
  const cached = await this.abac.cache.get(globalCacheKey);
58
73
  if (cached !== undefined) {
@@ -67,17 +82,45 @@ export default class ABACCore {
67
82
  // Сохраняем в кэш
68
83
  context._cache.set(contextCacheKey, result);
69
84
  if (this.abac.options.cacheEnabled) {
70
- await this.abac.cache.setWithTags(globalCacheKey, result, [
85
+ const tags = [
71
86
  `user_${context.user}`,
72
87
  `resource_${context.resource}`,
73
88
  `policy_${policyName}`
74
- ]);
89
+ ];
90
+
91
+ if (context.resourceId) {
92
+ tags.push(`resourceId_${context.resourceId}`);
93
+ }
94
+
95
+ await this.abac.cache.setWithTags(globalCacheKey, result, tags);
75
96
  }
76
97
 
77
98
  return result;
78
99
  }
79
100
 
80
- // Выполнение политик с ограничением параллельности
101
+ /**
102
+ * Построение ключа кэша с учетом ID ресурса
103
+ * @private
104
+ */
105
+ _buildCacheKey(policyName, context) {
106
+ const parts = [
107
+ 'policy',
108
+ policyName,
109
+ context.user,
110
+ context.resource,
111
+ context.action
112
+ ];
113
+
114
+ if (context.resourceId) {
115
+ parts.push(context.resourceId);
116
+ }
117
+
118
+ return parts.join('_');
119
+ }
120
+
121
+ /**
122
+ * Выполнение политик с ограничением параллельности
123
+ */
81
124
  async executePoliciesLimited(policies, context, stopOnDeny = false) {
82
125
  const results = [];
83
126
  const limit = this.abac.options.concurrencyLimit;
@@ -95,7 +138,12 @@ export default class ABACCore {
95
138
  const result = await this.executePolicyWithCache(name, policyFn, context);
96
139
  return { name, result: this.normalizeResult(result, name) };
97
140
  } catch (error) {
98
- console.error(`Error in policy ${name}:`, error);
141
+ this.abac.logger?.error('Policy execution error', {
142
+ policy: name,
143
+ error: error.message,
144
+ stack: error.stack
145
+ });
146
+
99
147
  return {
100
148
  name,
101
149
  result: {
@@ -120,10 +168,16 @@ export default class ABACCore {
120
168
  return results;
121
169
  }
122
170
 
123
- // Нормализация результата политики
171
+ /**
172
+ * Нормализация результата политики
173
+ */
124
174
  normalizeResult(result, policyName) {
125
175
  if (this.abac.options.strictMode && result === undefined) {
126
- return { allow: false, force: false, reason: `UNDEFINED_IN_STRICT_MODE_${policyName.toUpperCase()}` };
176
+ return {
177
+ allow: false,
178
+ force: false,
179
+ reason: `UNDEFINED_IN_STRICT_MODE_${policyName.toUpperCase()}`
180
+ };
127
181
  }
128
182
 
129
183
  if (result && typeof result === 'object' && ('allow' in result || 'force' in result)) {
@@ -135,16 +189,30 @@ export default class ABACCore {
135
189
  }
136
190
 
137
191
  if (result === true) {
138
- return { allow: true, force: false, reason: `ALLOWED_BY_${policyName.toUpperCase()}` };
192
+ return {
193
+ allow: true,
194
+ force: false,
195
+ reason: `ALLOWED_BY_${policyName.toUpperCase()}`
196
+ };
139
197
  }
140
198
  if (result === false) {
141
- return { allow: false, force: false, reason: `DENIED_BY_${policyName.toUpperCase()}` };
199
+ return {
200
+ allow: false,
201
+ force: false,
202
+ reason: `DENIED_BY_${policyName.toUpperCase()}`
203
+ };
142
204
  }
143
205
 
144
- return { allow: !this.abac.options.strictMode, force: false, reason: `NEUTRAL_${policyName.toUpperCase()}` };
206
+ return {
207
+ allow: !this.abac.options.strictMode,
208
+ force: false,
209
+ reason: `NEUTRAL_${policyName.toUpperCase()}`
210
+ };
145
211
  }
146
212
 
147
- // Основной метод проверки доступа
213
+ /**
214
+ * Основной метод проверки доступа
215
+ */
148
216
  async checkAccess(rawContext, customPolicies = {}) {
149
217
  const startTime = Date.now();
150
218
  const context = this.normalizeContext(rawContext);
@@ -160,7 +228,7 @@ export default class ABACCore {
160
228
  }
161
229
 
162
230
  // Предзагрузка ресурса
163
- if (!context.currentResource && (context.data?._id || context.data?.params?._id || context.data?.url)) {
231
+ if (!context.currentResource) {
164
232
  await this.loadResource(context);
165
233
  }
166
234
 
@@ -171,52 +239,75 @@ export default class ABACCore {
171
239
  if (this.abac.options.enableAudit) {
172
240
  await this.audit(context, result, Date.now() - startTime);
173
241
  }
174
- console.error('result logging:', result);
242
+
175
243
  return result;
176
244
  }
177
245
 
178
- // Загрузка ресурса
246
+ /**
247
+ * Загрузка ресурса
248
+ */
179
249
  async loadResource(context) {
180
250
  const resourceModel = this.abac.getResourceModel(context.resource);
181
251
  if (!resourceModel) return;
182
252
 
183
253
  try {
184
254
  let currentResource;
185
- const id = context.data._id || context.data.params?._id;
255
+ // Ищем ID в структурированной data
256
+ const id = context.resourceId ||
257
+ context.data?.body?._id ||
258
+ context.data?.params?._id;
186
259
 
187
260
  if (id) {
188
261
  currentResource = await resourceModel.findById(id);
189
- } else if (context.data.url) {
190
- currentResource = await resourceModel.findOne({ url: context.data.url });
262
+ } else if (context.data?.body?.url || context.data?.params?.url) {
263
+ const url = context.data.body?.url || context.data.params?.url;
264
+ currentResource = await resourceModel.findOne({ url });
191
265
  }
192
266
 
193
267
  if (currentResource) {
194
268
  context.currentResource = currentResource;
195
269
  context.resourceModel = resourceModel;
270
+ context.resourceId = currentResource._id?.toString();
196
271
  }
197
272
  } catch (error) {
198
- console.error('Resource loading error:', error);
273
+ this.abac.logger?.error('Resource loading error', {
274
+ resource: context.resource,
275
+ error: error.message
276
+ });
199
277
  }
200
278
  }
201
279
 
202
- // Аудит
280
+ /**
281
+ * Структурированный аудит
282
+ */
203
283
  async audit(context, result, duration) {
204
284
  try {
205
- let info = JSON.stringify({
285
+ const auditEntry = {
206
286
  type: 'ACCESS_CHECK',
207
- timestamp: new Date(),
287
+ timestamp: new Date().toISOString(),
208
288
  user: context.user,
209
289
  resource: context.resource,
290
+ resourceId: context.resourceId,
210
291
  action: context.action,
211
292
  result: result.allow,
212
293
  reason: result.reason,
213
294
  duration: duration,
295
+ ip: context.req?.ip,
296
+ userAgent: context.req?.get?.('user-agent'),
214
297
  metadata: context.auditMetadata || {}
215
- })
216
- await this.abac.logger.log('info', info);
217
- console.error('Audit logging:', info);
298
+ };
299
+
300
+ // Используем структурированное логирование
301
+ await this.abac.logger.info('Access check', auditEntry);
302
+
303
+ // Если критическое действие - дополнительный алерт
304
+ if (['delete', 'admin', 'export'].includes(context.action)) {
305
+ await this.abac.logger.warn('Critical action attempt', auditEntry);
306
+ }
218
307
  } catch (error) {
219
- console.error('Audit logging error:', error);
308
+ this.abac.logger?.error('Audit logging error', {
309
+ error: error.message
310
+ });
220
311
  }
221
312
  }
222
313
  }