@ozdao/martyrs 0.2.564 → 0.2.566

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 (366) 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/dist/main-B9o1iBAZ.js +943 -0
  13. package/dist/martyrs/dist/main-B9o1iBAZ.js.map +1 -0
  14. package/dist/martyrs/dist/web-BF3ijvEr.js +55 -0
  15. package/dist/martyrs/dist/web-BF3ijvEr.js.map +1 -0
  16. package/dist/martyrs/src/components/BottomSheet/BottomSheet.vue.js +96 -0
  17. package/dist/martyrs/src/components/BottomSheet/BottomSheet.vue.js.map +1 -0
  18. package/dist/martyrs/src/components/Button/{Button.vue.js → Button.vue2.js} +36 -45
  19. package/dist/martyrs/src/components/Button/Button.vue2.js.map +1 -0
  20. package/dist/martyrs/src/components/Feed/Carousel.vue.js +1 -1
  21. package/dist/martyrs/src/components/Feed/Feed.vue.js +1 -1
  22. package/dist/martyrs/src/components/Field/{Field.vue2.js → Field.vue.js} +2 -2
  23. package/dist/martyrs/src/components/Field/Field.vue.js.map +1 -0
  24. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js +2 -2
  25. package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.js +1 -1
  26. package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.js.map +1 -1
  27. package/dist/martyrs/src/components/Loader/{Loader.vue2.js → Loader.vue.js} +3 -4
  28. package/dist/martyrs/src/components/Loader/Loader.vue.js.map +1 -0
  29. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue.js +1 -1
  30. package/dist/martyrs/src/components/Media/Media.vue.js +1 -1
  31. package/dist/martyrs/src/components/Menu/{Menu.vue.js → Menu.vue2.js} +2 -2
  32. package/dist/martyrs/src/components/Menu/Menu.vue2.js.map +1 -0
  33. package/dist/martyrs/src/components/Select/{Select.vue2.js → Select.vue.js} +2 -2
  34. package/dist/martyrs/src/components/Select/Select.vue.js.map +1 -0
  35. package/dist/martyrs/src/components/SelectMulti/{SelectMulti.vue.js → SelectMulti.vue2.js} +2 -2
  36. package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue2.js.map +1 -0
  37. package/dist/martyrs/src/components/Tree/Tree.vue.js +6 -3
  38. package/dist/martyrs/src/components/Tree/Tree.vue.js.map +1 -1
  39. package/dist/martyrs/src/components/UploadImage/UploadImage.vue.js +1 -1
  40. package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.js +1 -1
  41. package/dist/martyrs/src/modules/auth/auth.client.js +10 -7
  42. package/dist/martyrs/src/modules/auth/auth.client.js.map +1 -1
  43. package/dist/martyrs/src/modules/auth/views/components/pages/EnterCode.vue.js +1 -1
  44. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js +2 -2
  45. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +2 -2
  46. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +3 -3
  47. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js +1 -1
  48. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js +1 -1
  49. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js +2 -2
  50. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +2 -2
  51. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +13 -13
  52. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js.map +1 -1
  53. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +2 -2
  54. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.js +2 -2
  55. package/dist/martyrs/src/modules/auth/views/router/auth.router.js +116 -0
  56. package/dist/martyrs/src/modules/auth/views/router/auth.router.js.map +1 -0
  57. package/dist/martyrs/src/modules/auth/views/router/users.router.js +180 -0
  58. package/dist/martyrs/src/modules/auth/views/router/users.router.js.map +1 -0
  59. package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.js +4 -4
  60. package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.js.map +1 -1
  61. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js +1 -1
  62. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +2 -2
  63. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +2 -2
  64. package/dist/martyrs/src/modules/constructor/components/elements/Card.vue.js +1 -1
  65. package/dist/martyrs/src/modules/constructor/components/elements/Embed.vue.js +1 -1
  66. package/dist/martyrs/src/modules/core/locales/en.js +45 -0
  67. package/dist/martyrs/src/modules/core/locales/en.js.map +1 -1
  68. package/dist/martyrs/src/modules/core/locales/ru.js +45 -0
  69. package/dist/martyrs/src/modules/core/locales/ru.js.map +1 -1
  70. package/dist/martyrs/src/modules/core/views/classes/i18n.manager.js +9 -0
  71. package/dist/martyrs/src/modules/core/views/classes/i18n.manager.js.map +1 -1
  72. package/dist/martyrs/src/modules/core/views/components/blocks/BlockSearch.vue.js +1 -1
  73. package/dist/martyrs/src/modules/core/views/components/blocks/CardHeader.vue.js +1 -1
  74. package/dist/martyrs/src/modules/core/views/components/blocks/PopupAuth.vue.js +1 -1
  75. package/dist/martyrs/src/modules/core/views/components/blocks/PopupDateSelector.vue.js +2 -2
  76. package/dist/martyrs/src/modules/core/views/components/layouts/App.vue.js +1 -1
  77. package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js +3 -2
  78. package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js.map +1 -1
  79. package/dist/martyrs/src/modules/core/views/components/partials/Header.vue.js +2 -2
  80. package/dist/martyrs/src/modules/core/views/components/partials/NavigationBar.vue.js +1 -1
  81. package/dist/martyrs/src/modules/core/views/components/sections/Walkthrough.vue.js +1 -1
  82. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterRange.vue.js +1 -1
  83. package/dist/martyrs/src/modules/core/views/mixins/mixins.js +1 -2
  84. package/dist/martyrs/src/modules/core/views/mixins/mixins.js.map +1 -1
  85. package/dist/martyrs/src/modules/core/views/router/addRoutes.js +6 -1
  86. package/dist/martyrs/src/modules/core/views/router/addRoutes.js.map +1 -1
  87. package/dist/martyrs/src/modules/events/components/elements/ButtonCheck.vue.js +2 -2
  88. package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.js +1 -1
  89. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +4 -4
  90. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +2 -2
  91. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +2 -2
  92. package/dist/martyrs/src/modules/events/components/sections/EditTickets.vue.js +2 -2
  93. package/dist/martyrs/src/modules/events/components/sections/Feed.vue.js +1 -1
  94. package/dist/martyrs/src/modules/events/components/sections/List.vue.js +1 -1
  95. package/dist/martyrs/src/modules/events/events.client.js +15 -12
  96. package/dist/martyrs/src/modules/events/events.client.js.map +1 -1
  97. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +4 -4
  98. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js +3 -3
  99. package/dist/martyrs/src/modules/inventory/components/forms/ColumnSettingsMenu.vue.js +1 -1
  100. package/dist/martyrs/src/modules/inventory/components/forms/HistoryView.vue.js +1 -1
  101. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js +3 -3
  102. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +5 -5
  103. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js.map +1 -1
  104. package/dist/martyrs/src/modules/marketplace/views/components/pages/Marketplace.vue.js +1 -1
  105. package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.js +1 -1
  106. package/dist/martyrs/src/modules/music/components/blocks/ActionButtons.vue.js +95 -0
  107. package/dist/martyrs/src/modules/music/components/blocks/ActionButtons.vue.js.map +1 -0
  108. package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js +6 -3
  109. package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js.map +1 -1
  110. package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js +25 -25
  111. package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js.map +1 -1
  112. package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.js +1 -1
  113. package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.js +1 -1
  114. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js +3 -3
  115. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +4 -4
  116. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js +2 -2
  117. package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.js +1 -1
  118. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js +3 -3
  119. package/dist/martyrs/src/modules/music/components/layouts/MusicBottomPlayer.vue.js +31 -6
  120. package/dist/martyrs/src/modules/music/components/layouts/MusicBottomPlayer.vue.js.map +1 -1
  121. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +121 -206
  122. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js.map +1 -1
  123. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js +2 -2
  124. package/dist/martyrs/src/modules/music/components/pages/MusicHome.vue.js +9 -13
  125. package/dist/martyrs/src/modules/music/components/pages/MusicHome.vue.js.map +1 -1
  126. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js +1 -1
  127. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +167 -246
  128. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js.map +1 -1
  129. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js +2 -2
  130. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +136 -221
  131. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js.map +1 -1
  132. package/dist/martyrs/src/modules/music/components/pages/TrackCreate.vue.js +1 -1
  133. package/dist/martyrs/src/modules/music/components/player/FullscreenPlayer.vue.js +171 -0
  134. package/dist/martyrs/src/modules/music/components/player/FullscreenPlayer.vue.js.map +1 -0
  135. package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.js +32 -154
  136. package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.js.map +1 -1
  137. package/dist/martyrs/src/modules/music/components/player/PlayerControls.vue.js +96 -0
  138. package/dist/martyrs/src/modules/music/components/player/PlayerControls.vue.js.map +1 -0
  139. package/dist/martyrs/src/modules/music/components/player/VolumeControl.vue.js +55 -27
  140. package/dist/martyrs/src/modules/music/components/player/VolumeControl.vue.js.map +1 -1
  141. package/dist/martyrs/src/modules/music/components/player/tonar.png.js +5 -0
  142. package/dist/martyrs/src/modules/music/components/player/tonar.png.js.map +1 -0
  143. package/dist/martyrs/src/modules/music/store/albums.js +8 -2
  144. package/dist/martyrs/src/modules/music/store/albums.js.map +1 -1
  145. package/dist/martyrs/src/modules/music/store/player.js +83 -65
  146. package/dist/martyrs/src/modules/music/store/player.js.map +1 -1
  147. package/dist/martyrs/src/modules/music/store/tracks.js +4 -13
  148. package/dist/martyrs/src/modules/music/store/tracks.js.map +1 -1
  149. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js +4 -4
  150. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js.map +1 -1
  151. package/dist/martyrs/src/modules/notifications/notifications.client.js +2 -2
  152. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.js +3 -0
  153. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.js.map +1 -1
  154. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js +3 -3
  155. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js +3 -3
  156. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.js +2 -2
  157. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +2 -2
  158. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js +1 -1
  159. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +2 -2
  160. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.js +1 -1
  161. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.js +1 -1
  162. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +2 -2
  163. package/dist/martyrs/src/modules/orders/components/sections/FormPayment.vue.js +1 -1
  164. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js +1 -1
  165. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js.map +1 -1
  166. package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js +1 -1
  167. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js +1 -1
  168. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js +2 -2
  169. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js +2 -2
  170. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +1 -1
  171. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +2 -2
  172. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +5 -5
  173. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js.map +1 -1
  174. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +3 -3
  175. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +3 -3
  176. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +3 -3
  177. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js +2 -2
  178. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +2 -2
  179. package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.js +1 -1
  180. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js +1 -1
  181. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js.map +1 -1
  182. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js +15 -2
  183. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js.map +1 -1
  184. package/dist/martyrs/src/modules/products/components/elements/Image360.vue.js +1 -1
  185. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +10 -7
  186. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js.map +1 -1
  187. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +7 -6
  188. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js.map +1 -1
  189. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +11 -2
  190. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js.map +1 -1
  191. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +4 -4
  192. package/dist/martyrs/src/modules/products/components/pages/ProductRecommmendation.vue.js +1 -1
  193. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +1 -1
  194. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js +2 -2
  195. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +3 -3
  196. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +3 -3
  197. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js +1 -1
  198. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js +1 -1
  199. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +11 -8
  200. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js.map +1 -1
  201. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +1 -1
  202. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js +211 -61
  203. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js.map +1 -1
  204. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js +2 -2
  205. package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.js +2 -2
  206. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js +1 -1
  207. package/dist/martyrs/src/modules/spots/components/pages/Map.vue.js +4 -4
  208. package/dist/martyrs/src/modules/spots/components/pages/Map.vue.js.map +1 -1
  209. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +3 -3
  210. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +3 -3
  211. package/dist/martyrs/src/modules/wallet/views/components/blocks/CardDeposit.vue.js +1 -1
  212. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.js +2 -2
  213. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js +2 -2
  214. package/dist/martyrs.css +1 -1
  215. package/dist/martyrs.es.js +1 -1
  216. package/dist/music.server.js +44 -18
  217. package/dist/node_modules/.pnpm/{@capacitor-mlkit_barcode-scanning@7.1.0_@capacitor_core@7.0.1 → @capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4}/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/definitions.js +1 -0
  218. package/dist/node_modules/.pnpm/@capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/definitions.js.map +1 -0
  219. package/dist/node_modules/.pnpm/{@capacitor-mlkit_barcode-scanning@7.1.0_@capacitor_core@7.0.1 → @capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4}/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/index.js +1 -1
  220. package/dist/node_modules/.pnpm/{@capacitor-mlkit_barcode-scanning@7.1.0_@capacitor_core@7.0.1 → @capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4}/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/index.js.map +1 -1
  221. package/dist/node_modules/.pnpm/{@capacitor-mlkit_barcode-scanning@7.1.0_@capacitor_core@7.0.1 → @capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4}/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/web.js +16 -1
  222. package/dist/node_modules/.pnpm/@capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/web.js.map +1 -0
  223. package/dist/node_modules/.pnpm/{@capacitor_core@7.0.1 → @capacitor_core@7.4.4}/node_modules/@capacitor/core/dist/index.js +2 -1
  224. package/dist/node_modules/.pnpm/@capacitor_core@7.4.4/node_modules/@capacitor/core/dist/index.js.map +1 -0
  225. package/dist/node_modules/.pnpm/{@capacitor_device@7.0.0_@capacitor_core@7.0.1 → @capacitor_device@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/device/dist/esm/index.js +1 -1
  226. package/dist/node_modules/.pnpm/{@capacitor_device@7.0.0_@capacitor_core@7.0.1 → @capacitor_device@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/device/dist/esm/index.js.map +1 -1
  227. package/dist/node_modules/.pnpm/{@capacitor_device@7.0.0_@capacitor_core@7.0.1 → @capacitor_device@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/device/dist/esm/web.js +1 -1
  228. package/dist/node_modules/.pnpm/{@capacitor_device@7.0.0_@capacitor_core@7.0.1 → @capacitor_device@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/device/dist/esm/web.js.map +1 -1
  229. package/dist/node_modules/.pnpm/{@capacitor_keyboard@7.0.0_@capacitor_core@7.0.1 → @capacitor_keyboard@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/keyboard/dist/esm/definitions.js.map +1 -1
  230. package/dist/node_modules/.pnpm/{@capacitor_keyboard@7.0.0_@capacitor_core@7.0.1 → @capacitor_keyboard@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/keyboard/dist/esm/index.js +1 -1
  231. package/dist/node_modules/.pnpm/{@capacitor_keyboard@7.0.0_@capacitor_core@7.0.1 → @capacitor_keyboard@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/keyboard/dist/esm/index.js.map +1 -1
  232. package/dist/node_modules/.pnpm/{@capacitor_push-notifications@7.0.0_@capacitor_core@7.0.1 → @capacitor_push-notifications@7.0.3_@capacitor_core@7.4.4}/node_modules/@capacitor/push-notifications/dist/esm/index.js +1 -1
  233. package/dist/node_modules/.pnpm/{@capacitor_push-notifications@7.0.0_@capacitor_core@7.0.1 → @capacitor_push-notifications@7.0.3_@capacitor_core@7.4.4}/node_modules/@capacitor/push-notifications/dist/esm/index.js.map +1 -1
  234. package/dist/node_modules/.pnpm/{capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.0.1 → capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.4.4}/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/index.js +1 -1
  235. package/dist/node_modules/.pnpm/{capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.0.1 → capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.4.4}/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/index.js.map +1 -1
  236. package/dist/node_modules/.pnpm/{capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.0.1 → capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.4.4}/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/web.js +1 -1
  237. package/dist/node_modules/.pnpm/{capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.0.1 → capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.4.4}/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/web.js.map +1 -1
  238. package/dist/notifications.server.js +0 -3
  239. package/dist/orders.server.js +5 -6
  240. package/dist/organizations.server.js +9 -10
  241. package/dist/products.server.js +27 -26
  242. package/dist/{queryProcessor-CBQgZycY.js → queryProcessor-C_5Iipam.js} +4 -1
  243. package/dist/rents.server.js +2 -3
  244. package/dist/spots.server.js +1 -1
  245. package/dist/style.css +252 -161
  246. package/dist/{web-cNKIl_cL.js → web-BF3ijvEr.js} +1 -1
  247. package/package.json +1 -1
  248. package/src/builder/modes/ssr.rspack.dev.js +4 -3
  249. package/src/builder/rspack/rspack.config.api.js +15 -4
  250. package/src/builder/rspack/rspack.config.base.js +3 -3
  251. package/src/builder/rspack/rspack.config.ssr.client.js +28 -28
  252. package/src/builder/templates/page.js +2 -2
  253. package/src/components/BottomSheet/BottomSheet.vue +4 -4
  254. package/src/components/Button/Button.vue +50 -37
  255. package/src/components/FieldPhone/FieldPhone.vue +1 -1
  256. package/src/components/Loader/Loader.vue +1 -1
  257. package/src/components/Tree/Tree.vue +6 -3
  258. package/src/modules/LAYOUT.MD +767 -0
  259. package/src/modules/PROCESS.md +0 -0
  260. package/src/modules/TASKS.MD +17 -0
  261. package/src/modules/auth/auth.client.js +11 -7
  262. package/src/modules/auth/views/components/pages/SignIn.vue +1 -1
  263. package/src/modules/auth/views/router/auth.router.js +94 -0
  264. package/src/modules/auth/views/router/users.router.js +153 -0
  265. package/src/modules/backoffice/components/partials/Sidebar.vue +7 -7
  266. package/src/modules/community/community.server.js +8 -0
  267. package/src/modules/community/policies/blog.policies.js +55 -0
  268. package/src/modules/community/routes/blog.routes.js +1 -1
  269. package/src/modules/community/routes/comments.routes.js +1 -1
  270. package/src/modules/community/routes/reactions.routes.js +1 -4
  271. package/src/modules/core/controllers/classes/abac/abac.adapter.express.js +206 -124
  272. package/src/modules/core/controllers/classes/abac/abac.adapter.ws.js +203 -50
  273. package/src/modules/core/controllers/classes/abac/abac.core.js +127 -36
  274. package/src/modules/core/controllers/classes/abac/abac.fields.js +144 -179
  275. package/src/modules/core/controllers/classes/abac/abac.js +201 -10
  276. package/src/modules/core/controllers/classes/abac/abac.policies.js +147 -57
  277. package/src/modules/core/controllers/classes/crud/crud.policies.js +5 -5
  278. package/src/modules/core/controllers/policies/core.policies.js +5 -2
  279. package/src/modules/core/controllers/utils/queryProcessor.js +4 -1
  280. package/src/modules/core/core.server.js +1 -0
  281. package/src/modules/core/locales/en.js +45 -0
  282. package/src/modules/core/locales/ru.js +45 -0
  283. package/src/modules/core/models/schemas/common.schema.js +1 -1
  284. package/src/modules/core/views/classes/i18n.manager.js +13 -0
  285. package/src/modules/core/views/components/layouts/Client.vue +1 -1
  286. package/src/modules/core/views/components/sections/filters/FilterPrice.vue +81 -0
  287. package/src/modules/core/views/mixins/mixins.js +1 -2
  288. package/src/modules/core/views/router/addRoutes.js +6 -1
  289. package/src/modules/events/events.client.js +3 -0
  290. package/src/modules/events/routes/events.routes.js +1 -1
  291. package/src/modules/inventory/components/pages/InventoryEdit.vue +3 -3
  292. package/src/modules/inventory/policies/inventory.policies.js +1 -1
  293. package/src/modules/inventory/routes/inventory.routes.js +1 -1
  294. package/src/modules/marketplace/marketplace.router.js +66 -0
  295. package/src/modules/marketplace/views/components/layouts/Marketplace.vue +363 -0
  296. package/src/modules/marketplace/views/components/pages/Catalog.vue +73 -0
  297. package/src/modules/music/components/blocks/ActionButtons.vue +74 -0
  298. package/src/modules/music/components/cards/AlbumCard.vue +1 -1
  299. package/src/modules/music/components/cards/ArtistCardSmall.vue +8 -6
  300. package/src/modules/music/components/layouts/MusicBottomPlayer.vue +94 -4
  301. package/src/modules/music/components/pages/Album.vue +55 -67
  302. package/src/modules/music/components/pages/MusicHome.vue +4 -6
  303. package/src/modules/music/components/pages/Playlist.vue +61 -70
  304. package/src/modules/music/components/pages/Track.vue +54 -71
  305. package/src/modules/music/components/player/FullscreenPlayer.vue +248 -0
  306. package/src/modules/music/components/player/MusicPlayer.vue +21 -216
  307. package/src/modules/music/components/player/PlayerControls.vue +112 -0
  308. package/src/modules/music/components/player/Visualizer.vue +151 -0
  309. package/src/modules/music/components/player/VolumeControl.vue +75 -23
  310. package/src/modules/music/components/player/tonar.png +0 -0
  311. package/src/modules/music/controllers/stream.controller.js +1 -1
  312. package/src/modules/music/music.server.js +1 -1
  313. package/src/modules/music/policies/music.policies.js +3 -2
  314. package/src/modules/music/router/library.router.js +26 -0
  315. package/src/modules/music/router/music.router.js +176 -0
  316. package/src/modules/music/routes/albums.routes.js +13 -12
  317. package/src/modules/music/routes/tracks.routes.js +39 -0
  318. package/src/modules/music/store/albums.js +10 -2
  319. package/src/modules/music/store/player.js +101 -89
  320. package/src/modules/music/store/tracks.js +5 -21
  321. package/src/modules/notifications/components/elements/NotificationBadge.vue +5 -6
  322. package/src/modules/notifications/notifications.server.js +1 -3
  323. package/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue +5 -0
  324. package/src/modules/orders/orders.server.js +0 -1
  325. package/src/modules/organizations/components/blocks/CardOrganization.vue +2 -2
  326. package/src/modules/organizations/components/pages/DepartmentEdit.vue +2 -2
  327. package/src/modules/organizations/components/pages/OrganizationEdit.vue +2 -2
  328. package/src/modules/organizations/policies/organizations.policies.js +12 -6
  329. package/src/modules/organizations/routes/organizations.routes.js +1 -3
  330. package/src/modules/products/components/blocks/CardCategory.vue +1 -1
  331. package/src/modules/products/components/blocks/CardProduct.vue +16 -2
  332. package/src/modules/products/components/pages/Categories.vue +9 -6
  333. package/src/modules/products/components/pages/CategoryEdit.vue +8 -4
  334. package/src/modules/products/components/pages/Product.vue +11 -5
  335. package/src/modules/products/components/sections/SectionProduct.vue +11 -7
  336. package/src/modules/products/controllers/categories.controller.js +32 -27
  337. package/src/modules/products/routes/categories.routes.js +1 -1
  338. package/src/modules/rents/controllers/routes/rents.routes.js +1 -1
  339. package/src/modules/rents/views/components/pages/RentsEdit.vue +208 -49
  340. package/src/modules/spots/components/pages/Map.vue +2 -2
  341. package/src/styles/config.scss +6 -6
  342. package/dist/abac-DYoheWuc.js +0 -1031
  343. package/dist/core.abac-DUPBnlk6.js +0 -298
  344. package/dist/core.logger-C3q8A9dl.js +0 -51
  345. package/dist/martyrs/src/components/Button/Button.vue.js.map +0 -1
  346. package/dist/martyrs/src/components/Field/Field.vue2.js.map +0 -1
  347. package/dist/martyrs/src/components/Loader/Loader.vue2.js.map +0 -1
  348. package/dist/martyrs/src/components/Menu/Menu.vue.js.map +0 -1
  349. package/dist/martyrs/src/components/Select/Select.vue2.js.map +0 -1
  350. package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue.js.map +0 -1
  351. package/dist/martyrs/src/modules/auth/auth.router.js +0 -342
  352. package/dist/martyrs/src/modules/auth/auth.router.js.map +0 -1
  353. package/dist/node_modules/.pnpm/@capacitor-mlkit_barcode-scanning@7.1.0_@capacitor_core@7.0.1/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/definitions.js.map +0 -1
  354. package/dist/node_modules/.pnpm/@capacitor-mlkit_barcode-scanning@7.1.0_@capacitor_core@7.0.1/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/web.js.map +0 -1
  355. package/dist/node_modules/.pnpm/@capacitor_core@7.0.1/node_modules/@capacitor/core/dist/index.js.map +0 -1
  356. package/src/modules/auth/auth.router.js +0 -262
  357. package/src/modules/core/controllers/classes/abac/v2/abac-core-fixed.js +0 -313
  358. package/src/modules/core/controllers/classes/abac/v2/abac-express-fixed.js +0 -276
  359. package/src/modules/core/controllers/classes/abac/v2/abac-fields-fixed.js +0 -425
  360. package/src/modules/core/controllers/classes/abac/v2/abac-main-fixed.js +0 -295
  361. package/src/modules/core/controllers/classes/abac/v2/abac-policies-fixed.js +0 -316
  362. package/src/modules/core/controllers/classes/abac/v2/abac-ws-fixed.js +0 -237
  363. package/src/modules/core/controllers/classes/core.abac.js +0 -310
  364. package/src/modules/core/controllers/classes/core.crud.js +0 -89
  365. package/src/modules/governance/reactcode/eslint.config.js +0 -28
  366. /package/dist/node_modules/.pnpm/{@capacitor_keyboard@7.0.0_@capacitor_core@7.0.1 → @capacitor_keyboard@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/keyboard/dist/esm/definitions.js +0 -0
File without changes
@@ -0,0 +1,17 @@
1
+ ## TODO: Архитектурные задачи
2
+
3
+ ### Рефакторинг featured в категориях
4
+
5
+ **Проблема**: `featured` находится в enum статусов категории, но это архитектурная ошибка.
6
+
7
+ **Решение**: Вынести `featured` из статусов в отдельное поле:
8
+ - Удалить `featured` из `enum: ['draft', 'published', 'internal', 'archived', 'removed']`
9
+ - Добавить в модель категории: `featured: { type: Boolean, default: false }`
10
+ - Обновить все контроллеры и компоненты, использующие `status: 'featured'`
11
+ - Добавить фильтрацию по `featured: true/false`
12
+
13
+ **Затронутые файлы**:
14
+ - `/Users/magicofoz/Development/OZDAO/ozdao.dev/app/martyrs/src/modules/core/models/schemas/common.schema.js`
15
+ - `/Users/magicofoz/Development/OZDAO/ozdao.dev/app/martyrs/src/modules/products/models/category.model.js`
16
+ - `/Users/magicofoz/Development/OZDAO/ozdao.dev/app/martyrs/src/modules/products/controllers/categories.controller.js`
17
+ - Все компоненты фронтенда, использующие статус 'featured'
@@ -13,7 +13,8 @@ console.log(`[LOADING 36] Store imports completed in ${storesTime.duration.toFix
13
13
 
14
14
  // Router
15
15
  import addRoutes from '@martyrs/src/modules/core/views/router/addRoutes.js';
16
- import { getRoutes } from './auth.router.js';
16
+ import { getAuthRoutes } from './views/router/auth.router.js';
17
+ import { getUsersRoutes } from './views/router/users.router.js';
17
18
 
18
19
  // Middlewares
19
20
  import * as validationAuth from '@martyrs/src/modules/auth/views/middlewares/auth.validation.js';
@@ -43,10 +44,11 @@ export { default as SliderFeatures } from './views/components/sections/SliderFea
43
44
  function initializeAuth(app, store, router, options = {}) {
44
45
  i18nManager.register('auth', locales);
45
46
 
46
- const routes = getRoutes(options);
47
- routes.forEach(({ parentName, config }) => {
48
- addRoutes(router, { ...config, parentName });
49
- });
47
+ const authRoute = getAuthRoutes(options);
48
+ const usersRoute = getUsersRoutes(options);
49
+
50
+ addRoutes(router, { ...authRoute.config, parentName: authRoute.parentName });
51
+ addRoutes(router, { ...usersRoute.config, parentName: usersRoute.parentName });
50
52
 
51
53
  store.addStore('auth', storeAuth);
52
54
  store.addStore('twofa', storeTwofa);
@@ -64,7 +66,8 @@ const ModuleAuth = {
64
66
  storeUsers,
65
67
  },
66
68
  router: {
67
- getRoutes,
69
+ getAuthRoutes,
70
+ getUsersRoutes,
68
71
  },
69
72
  middlewares: {
70
73
  validationAuth,
@@ -77,7 +80,8 @@ export {
77
80
  storeAuth,
78
81
  storeTwofa,
79
82
  storeUsers,
80
- getRoutes,
83
+ getAuthRoutes,
84
+ getUsersRoutes,
81
85
  validationAuth,
82
86
  initializeAuth as initialize,
83
87
  };
@@ -113,12 +113,12 @@ import { useRoute, useRouter } from 'vue-router'
113
113
  import { useI18n } from 'vue-i18n'
114
114
  // Import store
115
115
  import { useStore } from '@martyrs/src/modules/core/views/store/core.store.js'
116
+ import * as auth from '@martyrs/src/modules/auth/views/store/auth.js'
116
117
  // Import validation
117
118
  import * as inputsValidation from '@martyrs/src/modules/auth/views/validations/inputs.validation'
118
119
 
119
120
  // Get store
120
121
  const store = useStore()
121
- const auth = store.auth
122
122
  const core = store.core
123
123
 
124
124
  // Init validation
@@ -0,0 +1,94 @@
1
+ // auth.router.js - Authentication routes
2
+ import { requiresNoAuth, resetUser, checkUser } from '../middlewares/auth.validation.js';
3
+
4
+ export function getAuthRoutes(options = {}) {
5
+ const route = options.route || 'Home';
6
+
7
+ return {
8
+ parentName: route,
9
+ config: {
10
+ basePath: 'auth',
11
+ component: () => import(/* webpackChunkName: "auth-layout" */ '../components/layouts/Auth.vue'),
12
+ meta: {
13
+ title: {
14
+ en: 'Аутентификация',
15
+ ru: 'Authentication',
16
+ },
17
+ },
18
+ routes: [
19
+ {
20
+ path: 'signin',
21
+ name: 'Sign In',
22
+ beforeEnter: [requiresNoAuth, resetUser],
23
+ meta: {
24
+ title: {
25
+ en: 'Sign In',
26
+ ru: 'Вход',
27
+ },
28
+ },
29
+ component: () => import(/* webpackChunkName: "signin" */ '../components/pages/SignIn.vue'),
30
+ },
31
+ {
32
+ path: 'reset-password',
33
+ name: 'Reset Password',
34
+ beforeEnter: [requiresNoAuth, resetUser],
35
+ meta: {
36
+ title: {
37
+ en: 'Reset Password',
38
+ ru: 'Сбросить Пароль',
39
+ },
40
+ },
41
+ component: () => import(/* webpackChunkName: "reset-password" */ '../components/pages/ResetPassword.vue'),
42
+ },
43
+ {
44
+ path: 'signup',
45
+ name: 'Sign Up',
46
+ beforeEnter: [requiresNoAuth, resetUser],
47
+ meta: {
48
+ title: {
49
+ en: 'Sign Up',
50
+ ru: 'Регистрация',
51
+ },
52
+ },
53
+ component: () => import(/* webpackChunkName: "signup" */ '../components/pages/SignUp.vue'),
54
+ },
55
+ {
56
+ path: 'enter-code',
57
+ name: 'Enter Code',
58
+ beforeEnter: [requiresNoAuth, checkUser],
59
+ meta: {
60
+ title: {
61
+ en: 'Enter Code',
62
+ ru: 'Введите Код',
63
+ },
64
+ },
65
+ component: () => import(/* webpackChunkName: "signup" */ '../components/pages/EnterCode.vue'),
66
+ },
67
+ {
68
+ path: 'enter-password',
69
+ name: 'Enter Password',
70
+ beforeEnter: [requiresNoAuth, checkUser],
71
+ meta: {
72
+ title: {
73
+ en: 'Enter Password',
74
+ ru: 'Введите Пароль',
75
+ },
76
+ },
77
+ component: () => import(/* webpackChunkName: "signup" */ '../components/pages/EnterPassword.vue'),
78
+ },
79
+ {
80
+ path: 'invite',
81
+ name: 'Invite',
82
+ beforeEnter: [requiresNoAuth, resetUser],
83
+ meta: {
84
+ title: {
85
+ en: 'Invite',
86
+ ru: 'Приглашение',
87
+ },
88
+ },
89
+ component: () => import(/* webpackChunkName: "signup" */ '../components/pages/Invite.vue'),
90
+ },
91
+ ],
92
+ }
93
+ };
94
+ }
@@ -0,0 +1,153 @@
1
+ // users.router.js - User profile routes
2
+ import * as auth from '@martyrs/src/modules/auth/views/store/auth.js';
3
+ import { useGlobalMixins } from '@martyrs/src/modules/core/views/mixins/mixins.js';
4
+ import { requiresAuth } from '../middlewares/auth.validation.js';
5
+ import IconPlus from '@martyrs/src/modules/icons/navigation/IconPlus.vue';
6
+ import { navigationItems } from '@martyrs/src/modules/auth/views/configs/navigation.user.config.js';
7
+ import ProfileCard from '@martyrs/src/modules/auth/views/components/blocks/ProfileCard.vue';
8
+ import HelpCard from '@martyrs/src/modules/core/views/components/blocks/HelpCard.vue';
9
+
10
+ const { isPhone, isTablet } = useGlobalMixins();
11
+
12
+ export function getUsersRoutes(options = {}) {
13
+ const route = options.route || 'Home';
14
+
15
+ return {
16
+ parentName: route,
17
+ config: {
18
+ basePath: 'users',
19
+ meta: {
20
+ title: {
21
+ en: 'Users',
22
+ ru: 'Пользователи',
23
+ },
24
+ },
25
+ routes: [
26
+ {
27
+ path: ':_id',
28
+ name: 'User Profile Root',
29
+ meta: {
30
+ title: {
31
+ en: 'Profile',
32
+ ru: 'Профиль',
33
+ },
34
+ sidebar_hover: false,
35
+ sidebar_navigation_items: navigationItems,
36
+ sidebar_header_component: ProfileCard,
37
+ sidebar_footer_component: HelpCard,
38
+ sidebarOpenOnEnter: true,
39
+ sidebarCloseOnLeave: true
40
+ },
41
+ children: [
42
+ {
43
+ path: '',
44
+ name: 'User Profile',
45
+ meta: {
46
+ title: {
47
+ en: 'Profile',
48
+ ru: 'Профиль',
49
+ },
50
+ title_hide: true,
51
+ hideNavigationBar: route => route.params._id === auth.state.user._id,
52
+ },
53
+ component: () => import(/* webpackChunkName: "profile" */ '../components/pages/Profile.vue'),
54
+ children: [
55
+ {
56
+ path: 'edit',
57
+ name: 'User Edit Profile',
58
+ beforeEnter: [requiresAuth],
59
+ component: () => import(/* webpackChunkName: "profile-edit" */ '../components/pages/ProfileEdit.vue'),
60
+ children: [
61
+ {
62
+ path: 'profile',
63
+ name: 'Profile Edit Profile',
64
+ component: () => import(/* webpackChunkName: "profile-edit-profile" */ '../components/pages/ProfileEditProfile.vue')
65
+ },
66
+ {
67
+ path: 'account',
68
+ name: 'Profile Edit Account',
69
+ component: () => import(/* webpackChunkName: "profile-edit-account" */ '../components/pages/ProfileEditAccount.vue')
70
+ }
71
+ ]
72
+ }
73
+ ]
74
+ },
75
+ {
76
+ path: 'dashboard',
77
+ name: 'User Dashboard',
78
+ beforeEnter: [
79
+ requiresAuth,
80
+ (to) => {
81
+ if (to.params._id !== auth.state.user._id) {
82
+ return { name: 'User Profile', params: { _id: to.params._id } };
83
+ }
84
+ }
85
+ ],
86
+ meta: {
87
+ title: {
88
+ en: 'Dashboard',
89
+ ru: 'Дашборд',
90
+ },
91
+ },
92
+ component: () => import(/* webpackChunkName: "profile-dashboard" */ '../components/pages/UserDashboard.vue'),
93
+ },
94
+ {
95
+ path: 'blogposts',
96
+ name: 'User Posts',
97
+ meta: {
98
+ title: {
99
+ en: 'Posts',
100
+ ru: 'Посты',
101
+ },
102
+ },
103
+ component: () => import(/* webpackChunkName: "profile" */ '../components/pages/ProfileBlogposts.vue'),
104
+ },
105
+ {
106
+ path: 'events',
107
+ name: 'User Events',
108
+ meta: {
109
+ title: {
110
+ en: 'Events',
111
+ ru: 'События',
112
+ },
113
+ },
114
+ component: () => import(/* webpackChunkName: "profile" */ '@martyrs/src/modules/events/components/pages/EventsBackoffice.vue'),
115
+ },
116
+ {
117
+ path: 'organizations',
118
+ name: 'User Organizations',
119
+ meta: {
120
+ title: {
121
+ en: 'Groups',
122
+ ru: 'Группы',
123
+ },
124
+ actions: [
125
+ {
126
+ component: IconPlus,
127
+ props: {
128
+ fill: 'rgb(var(--main))',
129
+ },
130
+ condition: () => auth.state.user && auth.state.user._id,
131
+ action: router => router.push({ name: 'Create Organization' }),
132
+ },
133
+ ],
134
+ },
135
+ component: () => import(/* webpackChunkName: "profile" */ '@martyrs/src/modules/organizations/components/pages/Organizations.vue'),
136
+ },
137
+ {
138
+ path: 'wallet',
139
+ name: 'User Wallet',
140
+ meta: {
141
+ title: {
142
+ en: 'Wallet',
143
+ ru: 'Кошелек',
144
+ },
145
+ },
146
+ component: () => import(/* webpackChunkName: "profile" */ '@martyrs/src/modules/wallet/views/components/pages/Wallet.vue'),
147
+ },
148
+ ],
149
+ },
150
+ ],
151
+ }
152
+ };
153
+ }
@@ -3,10 +3,10 @@
3
3
  <div class="br-b h3 h-4r pd-semi br-solid br-black-transp-10">Backoffice</div>
4
4
  <div class="pd-semi">
5
5
  <span class="pd-thin uppercase t-medium t-transp">Menu</span>
6
- <div
7
- v-for="item in menuItems"
6
+ <div
7
+ v-for="item in menuItems"
8
8
  :key="item.name"
9
- @click="router.push({ name: item.routeName })"
9
+ @click="router.push(item.to || { name: item.routeName })"
10
10
  class="flex pd-thin flex-v-center cursor-pointer">
11
11
  <component
12
12
  v-if="item.icon"
@@ -19,10 +19,10 @@
19
19
  </div>
20
20
 
21
21
  <span class="pd-thin d-block mn-t-medium uppercase t-medium t-transp">General</span>
22
- <div
23
- v-for="item in generalItems"
22
+ <div
23
+ v-for="item in generalItems"
24
24
  :key="item.name"
25
- @click="router.push({ name: item.routeName })"
25
+ @click="router.push(item.to || { name: item.routeName })"
26
26
  class="flex pd-thin flex-v-center cursor-pointer">
27
27
  <component
28
28
  v-if="item.icon"
@@ -79,7 +79,7 @@ const menuItems = [
79
79
  {
80
80
  name: 'organizations',
81
81
  title: 'Organizations',
82
- routeName: 'Backoffice Organizations',
82
+ to: '/backoffice/organizations',
83
83
  icon: IconGroups
84
84
  },
85
85
  {
@@ -7,11 +7,19 @@ import ReactionModel from './models/reaction.model.js';
7
7
  import blogRoutes from './routes/blog.routes.js';
8
8
  import commentsRoutes from './routes/comments.routes.js';
9
9
  import reactionsRoutes from './routes/reactions.routes.js';
10
+ import coreabac from '@martyrs/src/modules/core/controllers/classes/abac/abac.js';
11
+ import initBlogPolicies from './policies/blog.policies.js';
10
12
  function initializeCommunity(app, db, origins, publicPath) {
11
13
  // Настраиваем модели в объекте базы данных
12
14
  db.blogpost = BlogpostModel(db);
13
15
  db.comment = CommentModel(db);
14
16
  db.reaction = ReactionModel(db);
17
+
18
+ // Инициализируем политики ABAC
19
+ const { getInstance } = coreabac;
20
+ const abac = getInstance(db);
21
+ initBlogPolicies(abac, db);
22
+
15
23
  // Настраиваем маршруты, если объект приложения передан
16
24
  if (app) {
17
25
  blogRoutes(app, db, origins, publicPath);
@@ -0,0 +1,55 @@
1
+ export default function initBlogPolicies(abac, db) {
2
+ abac.registerResourcePolicy(
3
+ 'blogposts',
4
+ async context => {
5
+ const allowed = ['published', 'active', 'featured'];
6
+
7
+ // 1. Анонимный read — обрезаем статусы прямо в политике
8
+ if (
9
+ context.action === 'read' &&
10
+ !context.user &&
11
+ (context.options?.allowPublished || context.req?.method === 'GET')
12
+ ) {
13
+ const current = context.data?.query?.status;
14
+ const list = Array.isArray(current) ? current : (current ? [current] : []);
15
+ const filtered = list.filter(s => allowed.includes(s));
16
+ context.req.query.status = filtered.length ? filtered : allowed;
17
+ context.data.query.status = context.req.query.status;
18
+ }
19
+
20
+ // 2. Проверка доступа к draft/archived постам
21
+ if (context.action === 'read' && context.currentResource) {
22
+ const status = context.currentResource.status;
23
+ if (!allowed.includes(status)) {
24
+ // Если статус draft/archived, проверяем права доступа
25
+ if (!context.user) {
26
+ return { allow: false, reason: 'DRAFT_POST_REQUIRES_AUTH' };
27
+ }
28
+
29
+ const ownerId = context.currentResource.owner?.target || context.currentResource.creator?.target;
30
+
31
+ // Проверяем владельца
32
+ if (String(ownerId) === String(context.user)) {
33
+ return { allow: true };
34
+ }
35
+
36
+ // Проверяем права организации
37
+ if (context.currentResource.owner?.type === 'organization' && context.checkOrganizationRight) {
38
+ const hasOrgAccess = await context.checkOrganizationRight('blogposts', 'read');
39
+ if (hasOrgAccess) {
40
+ return { allow: true, reason: 'ORGANIZATION_MEMBER_ACCESS' };
41
+ }
42
+ }
43
+
44
+ return { allow: false, reason: 'DRAFT_POST_ACCESS_DENIED' };
45
+ }
46
+ }
47
+
48
+ // 3. Остальные проверки можешь расширять позже
49
+ return { allow: true };
50
+ },
51
+ { modelName: 'blogpost' } // важно для loadResource
52
+ );
53
+
54
+ return abac;
55
+ }
@@ -1,5 +1,5 @@
1
1
  import middlewareFactoryAuth from '@martyrs/src/modules/auth/controllers/middlewares/index.js';
2
- import coreabac from '@martyrs/src/modules/core/controllers/classes/core.abac.js';
2
+ import coreabac from '@martyrs/src/modules/core/controllers/classes/abac/abac.js';
3
3
  import controllerFactory from '../controllers/blog.controller.js';
4
4
  import middlewareFactoryCommunity from '../middlewares/server/index.js';
5
5
  // ABAC
@@ -1,5 +1,5 @@
1
1
  import middlewareFactoryAuth from '@martyrs/src/modules/auth/controllers/middlewares/index.js';
2
- import coreabac from '@martyrs/src/modules/core/controllers/classes/core.abac.js';
2
+ import coreabac from '@martyrs/src/modules/core/controllers/classes/abac/abac.js';
3
3
  import controllerFactory from '../controllers/comments.controller.js';
4
4
  // ABAC
5
5
  const { getInstance } = coreabac;
@@ -1,11 +1,8 @@
1
1
  import middlewareFactoryAuth from '@martyrs/src/modules/auth/controllers/middlewares/index.js';
2
- import coreabac from '@martyrs/src/modules/core/controllers/classes/core.abac.js';
3
2
  import controllerFactory from '../controllers/reactions.controller.js';
4
- // ABAC
5
- const { getInstance } = coreabac;
3
+
6
4
  export default (function (app, db) {
7
5
  const controller = controllerFactory(db);
8
- const abac = getInstance(db);
9
6
  const { authJwt } = middlewareFactoryAuth(db);
10
7
  app.get('/api/reactions/read', [authJwt.verifyToken(true)], controller.read);
11
8
  app.post('/api/reactions/create', [authJwt.verifyToken()], controller.create);