@ozdao/martyrs 0.2.477 → 0.2.479
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.
- package/README.md +17 -10
- package/dist/Media-B1ZP3D7B.cjs +1 -0
- package/dist/{Media-CecrG6g6.mjs → Media-CKk33U4A.js} +1 -1
- package/dist/abac-BuL5pUZ4.js +949 -0
- package/dist/abac-XF1JVCLI.cjs +948 -0
- package/dist/addUserStatusFields-B8g3DAuZ.js +88 -0
- package/dist/addUserStatusFields-DP_0f12s.cjs +104 -0
- package/dist/auth.server.cjs +600 -0
- package/dist/auth.server.js +546 -709
- package/dist/authJwt-DBB51Iql.cjs +73 -0
- package/dist/authJwt-DcYNNwcr.js +74 -0
- package/dist/builder.cjs +1356 -0
- package/dist/builder.js +1193 -1377
- package/dist/chats.server.cjs +106 -0
- package/dist/chats.server.js +99 -129
- package/dist/common.schema-Bw1O5_2Q.js +13 -0
- package/dist/common.schema-BzFEVNn3.cjs +12 -0
- package/dist/community.server.cjs +840 -0
- package/dist/community.server.js +722 -949
- package/dist/credentials.schema-C9FB2EyY.js +10 -0
- package/dist/credentials.schema-DwhGdrwC.cjs +9 -0
- package/dist/engagement.schema-Dh1adRsn.js +24 -0
- package/dist/engagement.schema-JADHu8pj.cjs +23 -0
- package/dist/events.server.cjs +856 -0
- package/dist/events.server.js +713 -916
- package/dist/files.server.cjs +275 -0
- package/dist/files.server.js +233 -315
- package/dist/gallery.server.cjs +270 -0
- package/dist/gallery.server.js +245 -311
- package/dist/globals.abac-Cm9e8Jdk.cjs +297 -0
- package/dist/globals.abac-DBV_kaOq.js +298 -0
- package/dist/globals.logger-Bf6rRU7j.js +156 -0
- package/dist/globals.logger-CZMgIMlM.cjs +155 -0
- package/dist/globals.observer-CDqUjVU5.js +44 -0
- package/dist/globals.observer-CV2wCzzh.cjs +43 -0
- package/dist/globals.server.cjs +446 -0
- package/dist/globals.server.js +376 -399
- package/dist/globals.verifier-CWFz5Gh2.js +614 -0
- package/dist/globals.verifier-D68mHEBl.cjs +613 -0
- package/dist/index-CsJwdsBW.js +170 -0
- package/dist/index-YNOkL1mu.cjs +186 -0
- package/dist/mailing-C11EYWm-.js +85 -0
- package/dist/mailing-q7sR8gCV.cjs +101 -0
- package/dist/{main-DmznvhMM.mjs → main-BhAiwmnI.js} +4270 -4674
- package/dist/main-C75EcBpE.cjs +11 -0
- package/dist/martyrs/src/components/Block/Block.vue.cjs +1 -1
- package/dist/martyrs/src/components/Block/Block.vue.js +1 -1
- package/dist/martyrs/src/components/Button/Button.vue2.cjs +0 -1
- package/dist/martyrs/src/components/Button/Button.vue2.cjs.map +1 -1
- package/dist/martyrs/src/components/Button/Button.vue2.js +0 -1
- package/dist/martyrs/src/components/Button/Button.vue2.js.map +1 -1
- package/dist/martyrs/src/components/Chips/{Chips.vue.cjs → Chips.vue2.cjs} +3 -3
- package/dist/martyrs/src/components/Chips/Chips.vue2.cjs.map +1 -0
- package/dist/martyrs/src/components/Chips/{Chips.vue.js → Chips.vue2.js} +3 -3
- package/dist/martyrs/src/components/Chips/Chips.vue2.js.map +1 -0
- package/dist/martyrs/src/components/Dropdown/{Dropdown.vue.cjs → Dropdown.vue2.cjs} +2 -2
- package/dist/martyrs/src/components/Dropdown/Dropdown.vue2.cjs.map +1 -0
- package/dist/martyrs/src/components/Dropdown/{Dropdown.vue.js → Dropdown.vue2.js} +2 -2
- package/dist/martyrs/src/components/Dropdown/Dropdown.vue2.js.map +1 -0
- package/dist/martyrs/src/components/Feed/Feed.vue.cjs +127 -74
- package/dist/martyrs/src/components/Feed/Feed.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/Feed/Feed.vue.js +136 -83
- package/dist/martyrs/src/components/Feed/Feed.vue.js.map +1 -1
- package/dist/martyrs/src/components/Field/Field.vue.cjs +20 -22
- package/dist/martyrs/src/components/Field/Field.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/Field/Field.vue.js +21 -23
- package/dist/martyrs/src/components/Field/Field.vue.js.map +1 -1
- package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.js.map +1 -1
- package/dist/martyrs/src/components/FieldPhone/all-countries.cjs +245 -1
- package/dist/martyrs/src/components/FieldPhone/all-countries.cjs.map +1 -1
- package/dist/martyrs/src/components/FieldPhone/all-countries.js +245 -1
- package/dist/martyrs/src/components/FieldPhone/all-countries.js.map +1 -1
- package/dist/martyrs/src/components/FieldPhone/click-outside.cjs.map +1 -1
- package/dist/martyrs/src/components/FieldPhone/click-outside.js.map +1 -1
- package/dist/martyrs/src/components/FieldTags/BlockTags.vue.js +2 -2
- package/dist/martyrs/src/components/FieldTags/FieldTags.vue.cjs +451 -176
- package/dist/martyrs/src/components/FieldTags/FieldTags.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/FieldTags/FieldTags.vue.js +451 -176
- package/dist/martyrs/src/components/FieldTags/FieldTags.vue.js.map +1 -1
- package/dist/martyrs/src/components/FieldTags/create-tags.cjs.map +1 -1
- package/dist/martyrs/src/components/FieldTags/create-tags.js.map +1 -1
- package/dist/martyrs/src/components/FieldTags/vue-tags-input.props.cjs +1 -4
- package/dist/martyrs/src/components/FieldTags/vue-tags-input.props.cjs.map +1 -1
- package/dist/martyrs/src/components/FieldTags/vue-tags-input.props.js +1 -4
- package/dist/martyrs/src/components/FieldTags/vue-tags-input.props.js.map +1 -1
- package/dist/martyrs/src/components/Menu/{Menu.vue.cjs → Menu.vue2.cjs} +2 -2
- package/dist/martyrs/src/components/Menu/Menu.vue2.cjs.map +1 -0
- package/dist/martyrs/src/components/Menu/{Menu.vue.js → Menu.vue2.js} +2 -2
- package/dist/martyrs/src/components/Menu/Menu.vue2.js.map +1 -0
- package/dist/martyrs/src/components/Popup/Popup.vue2.cjs +27 -5
- package/dist/martyrs/src/components/Popup/Popup.vue2.cjs.map +1 -1
- package/dist/martyrs/src/components/Popup/Popup.vue2.js +28 -6
- package/dist/martyrs/src/components/Popup/Popup.vue2.js.map +1 -1
- package/dist/martyrs/src/components/Select/Select.vue.cjs +2 -4
- package/dist/martyrs/src/components/Select/Select.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/Select/Select.vue.js +2 -4
- package/dist/martyrs/src/components/Select/Select.vue.js.map +1 -1
- package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue2.cjs +639 -0
- package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue2.cjs.map +1 -0
- package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue2.js +639 -0
- package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue2.js.map +1 -0
- package/dist/martyrs/src/components/Table/Table.vue.cjs +23 -38
- package/dist/martyrs/src/components/Table/Table.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/Table/Table.vue.js +24 -39
- package/dist/martyrs/src/components/Table/Table.vue.js.map +1 -1
- package/dist/martyrs/src/components/Tooltip/{Tooltip.vue.cjs → Tooltip.vue2.cjs} +2 -2
- package/dist/martyrs/src/components/Tooltip/Tooltip.vue2.cjs.map +1 -0
- package/dist/martyrs/src/components/Tooltip/{Tooltip.vue.js → Tooltip.vue2.js} +2 -2
- package/dist/martyrs/src/components/Tooltip/{Tooltip.vue.cjs.map → Tooltip.vue2.js.map} +1 -1
- package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.cjs +4 -4
- package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.js +4 -4
- package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/auth.client.cjs +5 -5
- package/dist/martyrs/src/modules/auth/auth.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/auth.client.js +5 -5
- package/dist/martyrs/src/modules/auth/auth.client.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/EnterCode.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/EnterCode.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs +2 -2
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +2 -2
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.cjs +2 -2
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.js +2 -2
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/sections/FeaturedUsers.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/sections/FeaturedUsers.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/middlewares/auth.validation.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/middlewares/auth.validation.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/middlewares/ownership.validation.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/middlewares/ownership.validation.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/router/auth.cjs +87 -98
- package/dist/martyrs/src/modules/auth/views/router/auth.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/router/auth.js +87 -98
- package/dist/martyrs/src/modules/auth/views/router/auth.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/router/users.cjs +105 -106
- package/dist/martyrs/src/modules/auth/views/router/users.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/router/users.js +105 -106
- package/dist/martyrs/src/modules/auth/views/router/users.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/store/auth.cjs +7 -1
- package/dist/martyrs/src/modules/auth/views/store/auth.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/store/auth.js +7 -1
- package/dist/martyrs/src/modules/auth/views/store/auth.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/store/twofa.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/store/twofa.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/store/users.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/store/users.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/store/users.js +1 -1
- package/dist/martyrs/src/modules/auth/views/store/users.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/validations/inputs.validation.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/validations/inputs.validation.js.map +1 -1
- package/dist/martyrs/src/modules/backoffice/backoffice.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/backoffice/backoffice.client.js.map +1 -1
- package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.js.map +1 -1
- package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.cjs +1 -1
- package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.js +1 -1
- package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.js.map +1 -1
- package/dist/martyrs/src/modules/backoffice/router/backoffice.cjs +1 -4
- package/dist/martyrs/src/modules/backoffice/router/backoffice.cjs.map +1 -1
- package/dist/martyrs/src/modules/backoffice/router/backoffice.js +1 -4
- package/dist/martyrs/src/modules/backoffice/router/backoffice.js.map +1 -1
- package/dist/martyrs/src/modules/chats/chats.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/chats/chats.client.js.map +1 -1
- package/dist/martyrs/src/modules/chats/store/chat.store.cjs +10 -6
- package/dist/martyrs/src/modules/chats/store/chat.store.cjs.map +1 -1
- package/dist/martyrs/src/modules/chats/store/chat.store.js +10 -6
- package/dist/martyrs/src/modules/chats/store/chat.store.js.map +1 -1
- package/dist/martyrs/src/modules/community/community.client.cjs +14 -14
- package/dist/martyrs/src/modules/community/community.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/community/community.client.js +3 -3
- package/dist/martyrs/src/modules/community/community.client.js.map +1 -1
- package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.cjs +1 -1
- package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js +1 -1
- package/dist/martyrs/src/modules/community/components/blocks/FooterBlogpost.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/community/components/blocks/FooterBlogpost.vue.js.map +1 -1
- package/dist/martyrs/src/modules/community/components/layouts/Community.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js.map +1 -1
- package/dist/martyrs/src/modules/community/components/pages/Blog.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/community/components/pages/Blog.vue.js.map +1 -1
- package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.cjs +1 -1
- package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +1 -1
- package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js.map +1 -1
- package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.cjs +16 -10
- package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +16 -10
- package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js.map +1 -1
- package/dist/martyrs/src/modules/community/components/sections/Comment.vue.cjs +2 -2
- package/dist/martyrs/src/modules/community/components/sections/Comment.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/community/components/sections/Comment.vue.js +2 -2
- package/dist/martyrs/src/modules/community/components/sections/Comment.vue.js.map +1 -1
- package/dist/martyrs/src/modules/community/components/sections/HotPosts.vue.cjs +1 -1
- package/dist/martyrs/src/modules/community/components/sections/HotPosts.vue.js +1 -1
- package/dist/martyrs/src/modules/community/router/blogposts.cjs +61 -59
- package/dist/martyrs/src/modules/community/router/blogposts.cjs.map +1 -1
- package/dist/martyrs/src/modules/community/router/blogposts.js +61 -59
- package/dist/martyrs/src/modules/community/router/blogposts.js.map +1 -1
- package/dist/martyrs/src/modules/community/store/blogposts.cjs +14 -10
- package/dist/martyrs/src/modules/community/store/blogposts.cjs.map +1 -1
- package/dist/martyrs/src/modules/community/store/blogposts.js +14 -10
- package/dist/martyrs/src/modules/community/store/blogposts.js.map +1 -1
- package/dist/martyrs/src/modules/community/store/reactions.cjs.map +1 -1
- package/dist/martyrs/src/modules/community/store/reactions.js.map +1 -1
- package/dist/martyrs/src/modules/constructor/components/elements/Embed.vue.cjs +5 -3
- package/dist/martyrs/src/modules/constructor/components/elements/Embed.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/constructor/components/elements/Embed.vue.js +5 -3
- package/dist/martyrs/src/modules/constructor/components/elements/Embed.vue.js.map +1 -1
- package/dist/martyrs/src/modules/constructor/components/elements/ImageUpload.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/constructor/components/elements/ImageUpload.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.cjs +1 -1
- package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/elements/ButtonCheck.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/events/components/elements/ButtonCheck.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.cjs +1 -1
- package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.cjs +12 -6
- package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +12 -6
- package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs +3 -4
- package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +3 -4
- package/dist/martyrs/src/modules/events/components/pages/Event.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/Events.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/Events.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EventsSearch.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EventsSearch.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/sections/EventsHot.vue.cjs +1 -1
- package/dist/martyrs/src/modules/events/components/sections/EventsHot.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/sections/FeaturedEvents.vue.cjs +1 -1
- package/dist/martyrs/src/modules/events/components/sections/FeaturedEvents.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/events/components/sections/FeaturedEvents.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/sections/FeaturedEvents.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/events.client.cjs +17 -17
- package/dist/martyrs/src/modules/events/events.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/events/events.client.js +4 -4
- package/dist/martyrs/src/modules/events/events.client.js.map +1 -1
- package/dist/martyrs/src/modules/events/router/events.cjs +11 -21
- package/dist/martyrs/src/modules/events/router/events.cjs.map +1 -1
- package/dist/martyrs/src/modules/events/router/events.js +11 -21
- package/dist/martyrs/src/modules/events/router/events.js.map +1 -1
- package/dist/martyrs/src/modules/events/store/events.cjs.map +1 -1
- package/dist/martyrs/src/modules/events/store/events.js.map +1 -1
- package/dist/martyrs/src/modules/events/store/tickets.cjs +3 -1
- package/dist/martyrs/src/modules/events/store/tickets.cjs.map +1 -1
- package/dist/martyrs/src/modules/events/store/tickets.js +3 -1
- package/dist/martyrs/src/modules/events/store/tickets.js.map +1 -1
- package/dist/martyrs/src/modules/gallery/components/pages/Gallery.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/gallery/components/pages/Gallery.vue.js.map +1 -1
- package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.cjs +2 -2
- package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +2 -2
- package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js.map +1 -1
- package/dist/martyrs/src/modules/gallery/gallery.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/gallery/gallery.client.js.map +1 -1
- package/dist/martyrs/src/modules/gallery/router/gallery.backoffice.router.cjs +17 -17
- package/dist/martyrs/src/modules/gallery/router/gallery.backoffice.router.cjs.map +1 -1
- package/dist/martyrs/src/modules/gallery/router/gallery.backoffice.router.js +17 -17
- package/dist/martyrs/src/modules/gallery/router/gallery.backoffice.router.js.map +1 -1
- package/dist/martyrs/src/modules/gallery/router/gallery.router.cjs.map +1 -1
- package/dist/martyrs/src/modules/gallery/router/gallery.router.js.map +1 -1
- package/dist/martyrs/src/modules/gallery/store/gallery.cjs.map +1 -1
- package/dist/martyrs/src/modules/gallery/store/gallery.js.map +1 -1
- package/dist/martyrs/src/modules/globals/globals.client.cjs +24 -8
- package/dist/martyrs/src/modules/globals/globals.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/globals.client.js +22 -6
- package/dist/martyrs/src/modules/globals/globals.client.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/classes/globals.store.cjs +9 -7
- package/dist/martyrs/src/modules/globals/views/classes/globals.store.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/classes/globals.store.js +9 -7
- package/dist/martyrs/src/modules/globals/views/classes/globals.store.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/classes/globals.websocket.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/classes/globals.websocket.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/classes/store.cjs +2 -2
- package/dist/martyrs/src/modules/globals/views/classes/store.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/classes/store.js +2 -2
- package/dist/martyrs/src/modules/globals/views/classes/store.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/{plugins → components/blocks}/AlertDialog.vue.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/components/blocks/AlertDialog.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/globals/views/{plugins → components/blocks}/AlertDialog.vue.js +1 -1
- package/dist/martyrs/src/modules/globals/views/components/blocks/AlertDialog.vue.js.map +1 -0
- package/dist/martyrs/src/modules/globals/views/components/blocks/BlockMultiselect.vue.cjs +308 -0
- package/dist/martyrs/src/modules/globals/views/components/blocks/BlockMultiselect.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/globals/views/components/blocks/BlockMultiselect.vue.js +308 -0
- package/dist/martyrs/src/modules/globals/views/components/blocks/BlockMultiselect.vue.js.map +1 -0
- package/dist/martyrs/src/modules/globals/views/components/blocks/Card.vue.cjs +61 -49
- package/dist/martyrs/src/modules/globals/views/components/blocks/Card.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/blocks/Card.vue.js +62 -50
- package/dist/martyrs/src/modules/globals/views/components/blocks/Card.vue.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.cjs +2 -2
- package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.js +2 -2
- package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/elements/ButtonDate.vue.cjs +2 -2
- package/dist/martyrs/src/modules/globals/views/components/elements/ButtonDate.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/elements/ButtonDate.vue.js +2 -2
- package/dist/martyrs/src/modules/globals/views/components/elements/ButtonDate.vue.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/layouts/App.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/layouts/App.vue.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.js +1 -1
- package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/BottomNavigationBar.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/BottomNavigationBar.vue.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/LocationSelection.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/LocationSelection.vue.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.cjs +9 -10
- package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.js +9 -10
- package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/NavigationBar.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/NavigationBar.vue.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Sidebar.vue.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Sidebar.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Sidebar.vue.js +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Sidebar.vue.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/localization/get-browser-locale.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/localization/get-browser-locale.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/mixins/mixins.cjs +24 -5
- package/dist/martyrs/src/modules/globals/views/mixins/mixins.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/mixins/mixins.js +24 -5
- package/dist/martyrs/src/modules/globals/views/mixins/mixins.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/plugins/alert.plugin.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/plugins/alert.plugin.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/plugins/alert.plugin.js +1 -1
- package/dist/martyrs/src/modules/globals/views/plugins/alert.plugin.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/plugins/date-picker.plugin.cjs +74 -0
- package/dist/martyrs/src/modules/globals/views/plugins/date-picker.plugin.cjs.map +1 -0
- package/dist/martyrs/src/modules/globals/views/plugins/date-picker.plugin.js +74 -0
- package/dist/martyrs/src/modules/globals/views/plugins/date-picker.plugin.js.map +1 -0
- package/dist/martyrs/src/modules/globals/views/plugins/store-debugger/StoreDebugger.vue.cjs +200 -0
- package/dist/martyrs/src/modules/globals/views/plugins/store-debugger/StoreDebugger.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/globals/views/plugins/store-debugger/StoreDebugger.vue.js +200 -0
- package/dist/martyrs/src/modules/globals/views/plugins/store-debugger/StoreDebugger.vue.js.map +1 -0
- package/dist/martyrs/src/modules/globals/views/plugins/store-debugger/store-debugger.plugin.cjs +21 -0
- package/dist/martyrs/src/modules/globals/views/plugins/store-debugger/store-debugger.plugin.cjs.map +1 -0
- package/dist/martyrs/src/modules/globals/views/plugins/store-debugger/store-debugger.plugin.js +21 -0
- package/dist/martyrs/src/modules/globals/views/plugins/store-debugger/store-debugger.plugin.js.map +1 -0
- package/dist/martyrs/src/modules/globals/views/router/addRoutes.cjs +1 -4
- package/dist/martyrs/src/modules/globals/views/router/addRoutes.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/router/addRoutes.js +1 -4
- package/dist/martyrs/src/modules/globals/views/router/addRoutes.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/router/scrollBehavior.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/router/scrollBehavior.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/store/globals.cjs +4 -14
- package/dist/martyrs/src/modules/globals/views/store/globals.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/store/globals.js +4 -14
- package/dist/martyrs/src/modules/globals/views/store/globals.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/utils/axios-instance.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/utils/axios-instance.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/utils/vue-app-renderer.cjs +2 -2
- package/dist/martyrs/src/modules/globals/views/utils/vue-app-renderer.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/utils/vue-app-renderer.js +2 -2
- package/dist/martyrs/src/modules/globals/views/utils/vue-app-renderer.js.map +1 -1
- package/dist/martyrs/src/modules/icons/actions/IconDuplicate.vue.cjs +39 -0
- package/dist/martyrs/src/modules/icons/actions/IconDuplicate.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/icons/actions/IconDuplicate.vue.js +39 -0
- package/dist/martyrs/src/modules/icons/actions/IconDuplicate.vue.js.map +1 -0
- package/dist/martyrs/src/modules/icons/entities/IconDiscount.vue.cjs +57 -0
- package/dist/martyrs/src/modules/icons/entities/IconDiscount.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/icons/entities/IconDiscount.vue.js +57 -0
- package/dist/martyrs/src/modules/icons/entities/IconDiscount.vue.js.map +1 -0
- package/dist/martyrs/src/modules/icons/entities/IconFile.vue.cjs +33 -0
- package/dist/martyrs/src/modules/icons/entities/IconFile.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/icons/entities/IconFile.vue.js +33 -0
- package/dist/martyrs/src/modules/icons/entities/IconFile.vue.js.map +1 -0
- package/dist/martyrs/src/modules/icons/entities/IconMusic.vue.cjs +33 -0
- package/dist/martyrs/src/modules/icons/entities/IconMusic.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/icons/entities/IconMusic.vue.js +33 -0
- package/dist/martyrs/src/modules/icons/entities/IconMusic.vue.js.map +1 -0
- package/dist/martyrs/src/modules/icons/entities/IconSettings.vue.cjs +35 -0
- package/dist/martyrs/src/modules/icons/entities/IconSettings.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/icons/entities/IconSettings.vue.js +35 -0
- package/dist/martyrs/src/modules/icons/entities/IconSettings.vue.js.map +1 -0
- package/dist/martyrs/src/modules/icons/icons.client.cjs +97 -79
- package/dist/martyrs/src/modules/icons/icons.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/icons/icons.client.js +140 -122
- package/dist/martyrs/src/modules/icons/icons.client.js.map +1 -1
- package/dist/martyrs/src/modules/icons/logos/Logotype.vue.cjs +25 -0
- package/dist/martyrs/src/modules/icons/logos/Logotype.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/icons/logos/Logotype.vue.js +25 -0
- package/dist/martyrs/src/modules/icons/logos/Logotype.vue.js.map +1 -0
- package/dist/martyrs/src/modules/icons/navigation/IconAttach.vue.cjs +35 -0
- package/dist/martyrs/src/modules/icons/navigation/IconAttach.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/icons/navigation/IconAttach.vue.js +35 -0
- package/dist/martyrs/src/modules/icons/navigation/IconAttach.vue.js.map +1 -0
- package/dist/martyrs/src/modules/icons/navigation/IconCheck.vue.cjs +39 -0
- package/dist/martyrs/src/modules/icons/navigation/IconCheck.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/icons/navigation/IconCheck.vue.js +39 -0
- package/dist/martyrs/src/modules/icons/navigation/IconCheck.vue.js.map +1 -0
- package/dist/martyrs/src/modules/icons/navigation/IconDoubleCheck.vue.cjs +39 -0
- package/dist/martyrs/src/modules/icons/navigation/IconDoubleCheck.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/icons/navigation/IconDoubleCheck.vue.js +39 -0
- package/dist/martyrs/src/modules/icons/navigation/IconDoubleCheck.vue.js.map +1 -0
- package/dist/martyrs/src/modules/icons/navigation/IconHeart.vue.cjs +34 -0
- package/dist/martyrs/src/modules/icons/navigation/IconHeart.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/icons/navigation/IconHeart.vue.js +34 -0
- package/dist/martyrs/src/modules/icons/navigation/IconHeart.vue.js.map +1 -0
- package/dist/martyrs/src/modules/icons/navigation/IconPause.vue.cjs +39 -0
- package/dist/martyrs/src/modules/icons/navigation/IconPause.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/icons/navigation/IconPause.vue.js +39 -0
- package/dist/martyrs/src/modules/icons/navigation/IconPause.vue.js.map +1 -0
- package/dist/martyrs/src/modules/icons/navigation/IconPlay.vue.cjs +31 -0
- package/dist/martyrs/src/modules/icons/navigation/IconPlay.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/icons/navigation/IconPlay.vue.js +31 -0
- package/dist/martyrs/src/modules/icons/navigation/IconPlay.vue.js.map +1 -0
- package/dist/martyrs/src/modules/icons/navigation/IconRefresh.vue.cjs +39 -0
- package/dist/martyrs/src/modules/icons/navigation/IconRefresh.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/icons/navigation/IconRefresh.vue.js +39 -0
- package/dist/martyrs/src/modules/icons/navigation/IconRefresh.vue.js.map +1 -0
- package/dist/martyrs/src/modules/icons/navigation/IconSend.vue.cjs +31 -0
- package/dist/martyrs/src/modules/icons/navigation/IconSend.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/icons/navigation/IconSend.vue.js +31 -0
- package/dist/martyrs/src/modules/icons/navigation/IconSend.vue.js.map +1 -0
- package/dist/martyrs/src/modules/icons/navigation/IconShuffle.vue.cjs +39 -0
- package/dist/martyrs/src/modules/icons/navigation/IconShuffle.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/icons/navigation/IconShuffle.vue.js +39 -0
- package/dist/martyrs/src/modules/icons/navigation/IconShuffle.vue.js.map +1 -0
- package/dist/martyrs/src/modules/icons/navigation/IconVolume.vue.cjs +39 -0
- package/dist/martyrs/src/modules/icons/navigation/IconVolume.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/icons/navigation/IconVolume.vue.js +39 -0
- package/dist/martyrs/src/modules/icons/navigation/IconVolume.vue.js.map +1 -0
- package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.cjs +278 -0
- package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.js +278 -0
- package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.js.map +1 -0
- package/dist/martyrs/src/modules/icons/router/icons.router.cjs +33 -0
- package/dist/martyrs/src/modules/icons/router/icons.router.cjs.map +1 -0
- package/dist/martyrs/src/modules/icons/router/icons.router.js +33 -0
- package/dist/martyrs/src/modules/icons/router/icons.router.js.map +1 -0
- package/dist/martyrs/src/modules/icons/socials/dribbble.vue.cjs +2 -2
- package/dist/martyrs/src/modules/icons/socials/dribbble.vue.js +2 -2
- package/dist/martyrs/src/modules/icons/socials/facebook.vue.cjs +2 -2
- package/dist/martyrs/src/modules/icons/socials/facebook.vue.js +2 -2
- package/dist/martyrs/src/modules/icons/socials/instagram.vue.cjs +2 -2
- package/dist/martyrs/src/modules/icons/socials/instagram.vue.js +2 -2
- package/dist/martyrs/src/modules/icons/socials/line.vue.cjs +2 -2
- package/dist/martyrs/src/modules/icons/socials/line.vue.js +2 -2
- package/dist/martyrs/src/modules/icons/socials/linkedin.vue.cjs +2 -2
- package/dist/martyrs/src/modules/icons/socials/linkedin.vue.js +2 -2
- package/dist/martyrs/src/modules/icons/socials/reddit.vue.cjs +2 -2
- package/dist/martyrs/src/modules/icons/socials/reddit.vue.js +2 -2
- package/dist/martyrs/src/modules/icons/socials/telegram.vue.cjs +2 -2
- package/dist/martyrs/src/modules/icons/socials/telegram.vue.js +2 -2
- package/dist/martyrs/src/modules/icons/socials/twitter.vue.cjs +2 -2
- package/dist/martyrs/src/modules/icons/socials/twitter.vue.js +2 -2
- package/dist/martyrs/src/modules/icons/socials/vk.vue.cjs +2 -2
- package/dist/martyrs/src/modules/icons/socials/vk.vue.js +2 -2
- package/dist/martyrs/src/modules/icons/socials/youtube.vue.cjs +2 -2
- package/dist/martyrs/src/modules/icons/socials/youtube.vue.js +2 -2
- package/dist/martyrs/src/modules/landing/landing.client.cjs +12 -12
- package/dist/martyrs/src/modules/landing/landing.client.js +22 -22
- package/dist/martyrs/src/modules/marketplace/marketplace.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/marketplace/marketplace.client.js.map +1 -1
- package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.js.map +1 -1
- package/dist/martyrs/src/modules/marketplace/views/components/pages/Catalog.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/marketplace/views/components/pages/Catalog.vue.js.map +1 -1
- package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.js.map +1 -1
- package/dist/martyrs/src/modules/marketplace/views/router/marketplace.router.cjs +0 -1
- package/dist/martyrs/src/modules/marketplace/views/router/marketplace.router.cjs.map +1 -1
- package/dist/martyrs/src/modules/marketplace/views/router/marketplace.router.js +0 -1
- package/dist/martyrs/src/modules/marketplace/views/router/marketplace.router.js.map +1 -1
- package/dist/martyrs/src/modules/marketplace/views/store/marketplace.cjs +25 -19
- package/dist/martyrs/src/modules/marketplace/views/store/marketplace.cjs.map +1 -1
- package/dist/martyrs/src/modules/marketplace/views/store/marketplace.js +25 -19
- package/dist/martyrs/src/modules/marketplace/views/store/marketplace.js.map +1 -1
- package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.cjs +1 -1
- package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js +1 -1
- package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js.map +1 -1
- package/dist/martyrs/src/modules/notifications/components/sections/NotificationsList.vue.cjs +1 -1
- package/dist/martyrs/src/modules/notifications/components/sections/NotificationsList.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/notifications/components/sections/NotificationsList.vue.js +1 -1
- package/dist/martyrs/src/modules/notifications/components/sections/NotificationsList.vue.js.map +1 -1
- package/dist/martyrs/src/modules/notifications/notifications.client.cjs +18 -27
- package/dist/martyrs/src/modules/notifications/notifications.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/notifications/notifications.client.js +16 -25
- package/dist/martyrs/src/modules/notifications/notifications.client.js.map +1 -1
- package/dist/martyrs/src/modules/notifications/router/notifications.router.cjs +1 -1
- package/dist/martyrs/src/modules/notifications/router/notifications.router.cjs.map +1 -1
- package/dist/martyrs/src/modules/notifications/router/notifications.router.js +1 -1
- package/dist/martyrs/src/modules/notifications/router/notifications.router.js.map +1 -1
- package/dist/martyrs/src/modules/notifications/store/notifications.store.cjs.map +1 -1
- package/dist/martyrs/src/modules/notifications/store/notifications.store.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.cjs +1 -1
- package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.cjs +2 -2
- package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +2 -2
- package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs +1 -3
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +1 -3
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/partials/ShopCart.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/components/partials/ShopCart.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormAddCustomer.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormAddCustomer.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/orders.client.cjs +5 -5
- package/dist/martyrs/src/modules/orders/orders.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/orders.client.js +5 -5
- package/dist/martyrs/src/modules/orders/orders.client.js.map +1 -1
- package/dist/martyrs/src/modules/orders/router/orders.router.cjs +2 -3
- package/dist/martyrs/src/modules/orders/router/orders.router.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/router/orders.router.js +2 -3
- package/dist/martyrs/src/modules/orders/router/orders.router.js.map +1 -1
- package/dist/martyrs/src/modules/orders/store/applications.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/store/applications.js.map +1 -1
- package/dist/martyrs/src/modules/orders/store/customers.store.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/store/customers.store.js.map +1 -1
- package/dist/martyrs/src/modules/orders/store/models/customer.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/store/models/customer.js.map +1 -1
- package/dist/martyrs/src/modules/orders/store/models/order.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/store/models/order.js.map +1 -1
- package/dist/martyrs/src/modules/orders/store/orders.cjs +23 -26
- package/dist/martyrs/src/modules/orders/store/orders.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/store/orders.js +23 -26
- package/dist/martyrs/src/modules/orders/store/orders.js.map +1 -1
- package/dist/martyrs/src/modules/orders/store/shopcart.cjs +94 -47
- package/dist/martyrs/src/modules/orders/store/shopcart.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/store/shopcart.js +94 -47
- package/dist/martyrs/src/modules/orders/store/shopcart.js.map +1 -1
- package/dist/martyrs/src/modules/orders/store/testimonials.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/store/testimonials.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/blocks/Socials.vue.js +16 -16
- package/dist/martyrs/src/modules/organizations/components/blocks/Socials.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.cjs +2 -2
- package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +2 -2
- package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs +5 -5
- package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +5 -5
- package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.cjs +2 -2
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +2 -2
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +8 -8
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.vue.cjs +2 -2
- package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.vue.js +2 -2
- package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.cjs +5 -5
- package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/Publics.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/Publics.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.cjs +225 -0
- package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.cjs.map +1 -0
- package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.js +225 -0
- package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.js.map +1 -0
- package/dist/martyrs/src/modules/organizations/organizations.client.cjs +28 -28
- package/dist/martyrs/src/modules/organizations/organizations.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/organizations.client.js +10 -10
- package/dist/martyrs/src/modules/organizations/organizations.client.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/router/backoffice.router.cjs +26 -23
- package/dist/martyrs/src/modules/organizations/router/backoffice.router.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/router/backoffice.router.js +26 -23
- package/dist/martyrs/src/modules/organizations/router/backoffice.router.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/router/departments.router.cjs +27 -23
- package/dist/martyrs/src/modules/organizations/router/departments.router.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/router/departments.router.js +27 -23
- package/dist/martyrs/src/modules/organizations/router/departments.router.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/router/members.router.cjs +17 -15
- package/dist/martyrs/src/modules/organizations/router/members.router.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/router/members.router.js +17 -15
- package/dist/martyrs/src/modules/organizations/router/members.router.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/router/organizations.cjs +73 -60
- package/dist/martyrs/src/modules/organizations/router/organizations.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/router/organizations.js +73 -60
- package/dist/martyrs/src/modules/organizations/router/organizations.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/store/departments.cjs +3 -1
- package/dist/martyrs/src/modules/organizations/store/departments.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/store/departments.js +3 -1
- package/dist/martyrs/src/modules/organizations/store/departments.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/store/invites.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/store/invites.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/store/memberships.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/store/memberships.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/store/organizations.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/store/organizations.js.map +1 -1
- package/dist/martyrs/src/modules/pages/pages.client.cjs +2 -2
- package/dist/martyrs/src/modules/pages/pages.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/pages/pages.client.js +2 -2
- package/dist/martyrs/src/modules/pages/pages.client.js.map +1 -1
- package/dist/martyrs/src/modules/pages/views/components/pages/Page.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/pages/views/components/pages/Page.vue.js.map +1 -1
- package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/pages/views/components/pages/Pages.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/pages/views/components/pages/Pages.vue.js.map +1 -1
- package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.js.map +1 -1
- package/dist/martyrs/src/modules/pages/views/router/pages.backoffice.router.cjs +35 -31
- package/dist/martyrs/src/modules/pages/views/router/pages.backoffice.router.cjs.map +1 -1
- package/dist/martyrs/src/modules/pages/views/router/pages.backoffice.router.js +35 -31
- package/dist/martyrs/src/modules/pages/views/router/pages.backoffice.router.js.map +1 -1
- package/dist/martyrs/src/modules/pages/views/router/pages.router.cjs +16 -14
- package/dist/martyrs/src/modules/pages/views/router/pages.router.cjs.map +1 -1
- package/dist/martyrs/src/modules/pages/views/router/pages.router.js +16 -14
- package/dist/martyrs/src/modules/pages/views/router/pages.router.js.map +1 -1
- package/dist/martyrs/src/modules/pages/views/store/pages.cjs +5 -2
- package/dist/martyrs/src/modules/pages/views/store/pages.cjs.map +1 -1
- package/dist/martyrs/src/modules/pages/views/store/pages.js +5 -2
- package/dist/martyrs/src/modules/pages/views/store/pages.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/CardLeftover.vue.cjs +2 -2
- package/dist/martyrs/src/modules/products/components/blocks/CardLeftover.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/CardLeftover.vue.js +2 -2
- package/dist/martyrs/src/modules/products/components/blocks/CardLeftover.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.cjs +76 -135
- package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.js +77 -136
- package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.cjs +4 -4
- package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js +4 -4
- package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.cjs +128 -0
- package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js +128 -0
- package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js.map +1 -0
- package/dist/martyrs/src/modules/products/components/blocks/{ImagesThumbnails.vue.cjs → ProductImages.vue.cjs} +7 -7
- package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/products/components/blocks/{ImagesThumbnails.vue.js → ProductImages.vue.js} +7 -7
- package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.js.map +1 -0
- package/dist/martyrs/src/modules/products/components/blocks/ProductVariants.vue.cjs +141 -0
- package/dist/martyrs/src/modules/products/components/blocks/ProductVariants.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/products/components/blocks/ProductVariants.vue.js +141 -0
- package/dist/martyrs/src/modules/products/components/blocks/ProductVariants.vue.js.map +1 -0
- package/dist/martyrs/src/modules/products/components/{blocks/Images360.vue.cjs → elements/Image360.vue.cjs} +5 -5
- package/dist/martyrs/src/modules/products/components/{blocks/Images360.vue.cjs.map → elements/Image360.vue.cjs.map} +1 -1
- package/dist/martyrs/src/modules/products/components/{blocks/Images360.vue.js → elements/Image360.vue.js} +5 -5
- package/dist/martyrs/src/modules/products/components/{blocks/Images360.vue.js.map → elements/Image360.vue.js.map} +1 -1
- package/dist/martyrs/src/modules/products/components/elements/Price.vue.cjs +19 -20
- package/dist/martyrs/src/modules/products/components/elements/Price.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/elements/Price.vue.js +20 -21
- package/dist/martyrs/src/modules/products/components/elements/Price.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/elements/QuantitySelector.vue.cjs +71 -0
- package/dist/martyrs/src/modules/products/components/elements/QuantitySelector.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/products/components/elements/QuantitySelector.vue.js +71 -0
- package/dist/martyrs/src/modules/products/components/elements/QuantitySelector.vue.js.map +1 -0
- package/dist/martyrs/src/modules/products/components/elements/THC.vue.cjs +6 -6
- package/dist/martyrs/src/modules/products/components/elements/THC.vue.js +6 -6
- package/dist/martyrs/src/modules/products/components/forms/ColumnSettingsMenu.vue.cjs +73 -0
- package/dist/martyrs/src/modules/products/components/forms/ColumnSettingsMenu.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/products/components/forms/ColumnSettingsMenu.vue.js +73 -0
- package/dist/martyrs/src/modules/products/components/forms/ColumnSettingsMenu.vue.js.map +1 -0
- package/dist/martyrs/src/modules/products/components/forms/ReorderSettingsForm.vue.cjs +101 -0
- package/dist/martyrs/src/modules/products/components/forms/ReorderSettingsForm.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/products/components/forms/ReorderSettingsForm.vue.js +101 -0
- package/dist/martyrs/src/modules/products/components/forms/ReorderSettingsForm.vue.js.map +1 -0
- package/dist/martyrs/src/modules/products/components/forms/StockAuditForm.vue.cjs +135 -0
- package/dist/martyrs/src/modules/products/components/forms/StockAuditForm.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/products/components/forms/StockAuditForm.vue.js +135 -0
- package/dist/martyrs/src/modules/products/components/forms/StockAuditForm.vue.js.map +1 -0
- package/dist/martyrs/src/modules/products/components/forms/StockHistoryView.vue.cjs +148 -0
- package/dist/martyrs/src/modules/products/components/forms/StockHistoryView.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/products/components/forms/StockHistoryView.vue.js +148 -0
- package/dist/martyrs/src/modules/products/components/forms/StockHistoryView.vue.js.map +1 -0
- package/dist/martyrs/src/modules/products/components/pages/Categories.vue.cjs +2 -2
- package/dist/martyrs/src/modules/products/components/pages/Categories.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +2 -2
- package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs +6 -6
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +6 -6
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/LeftoverEdit.vue.cjs +345 -0
- package/dist/martyrs/src/modules/products/components/pages/LeftoverEdit.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/products/components/pages/LeftoverEdit.vue.js +345 -0
- package/dist/martyrs/src/modules/products/components/pages/LeftoverEdit.vue.js.map +1 -0
- package/dist/martyrs/src/modules/products/components/pages/Leftovers.vue.cjs +279 -55
- package/dist/martyrs/src/modules/products/components/pages/Leftovers.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Leftovers.vue.js +282 -58
- package/dist/martyrs/src/modules/products/components/pages/Leftovers.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs +107 -116
- package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +116 -125
- package/dist/martyrs/src/modules/products/components/pages/Product.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs +257 -312
- package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +262 -317
- package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/ProductRecommmendation.vue.cjs +2 -2
- package/dist/martyrs/src/modules/products/components/pages/ProductRecommmendation.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/ProductRecommmendation.vue.js +2 -2
- package/dist/martyrs/src/modules/products/components/pages/ProductRecommmendation.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs +2 -2
- package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +2 -2
- package/dist/martyrs/src/modules/products/components/pages/Products.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.cjs +168 -0
- package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js +168 -0
- package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js.map +1 -0
- package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.cjs +319 -0
- package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +319 -0
- package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js.map +1 -0
- package/dist/martyrs/src/modules/products/components/sections/EditIngredients.vue.cjs +140 -0
- package/dist/martyrs/src/modules/products/components/sections/EditIngredients.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/products/components/sections/EditIngredients.vue.js +140 -0
- package/dist/martyrs/src/modules/products/components/sections/EditIngredients.vue.js.map +1 -0
- package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.cjs +468 -0
- package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +468 -0
- package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js.map +1 -0
- package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.cjs +2 -2
- package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.js +2 -2
- package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/sections/HeroRecommendation.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/sections/HeroRecommendation.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/sections/PopularProducts.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/sections/PopularProducts.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/sections/PopularProducts.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/sections/PopularProducts.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.cjs +134 -0
- package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js +134 -0
- package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js.map +1 -0
- package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.cjs +13 -13
- package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +13 -13
- package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/products.client.cjs +20 -29
- package/dist/martyrs/src/modules/products/products.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/products.client.js +37 -46
- package/dist/martyrs/src/modules/products/products.client.js.map +1 -1
- package/dist/martyrs/src/modules/products/router/categories.router.cjs +34 -30
- package/dist/martyrs/src/modules/products/router/categories.router.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/router/categories.router.js +34 -30
- package/dist/martyrs/src/modules/products/router/categories.router.js.map +1 -1
- package/dist/martyrs/src/modules/products/router/leftovers.router.cjs +42 -39
- package/dist/martyrs/src/modules/products/router/leftovers.router.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/router/leftovers.router.js +42 -39
- package/dist/martyrs/src/modules/products/router/leftovers.router.js.map +1 -1
- package/dist/martyrs/src/modules/products/router/products.router.cjs +0 -1
- package/dist/martyrs/src/modules/products/router/products.router.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/router/products.router.js +0 -1
- package/dist/martyrs/src/modules/products/router/products.router.js.map +1 -1
- package/dist/martyrs/src/modules/products/store/categories.cjs +7 -3
- package/dist/martyrs/src/modules/products/store/categories.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/store/categories.js +7 -3
- package/dist/martyrs/src/modules/products/store/categories.js.map +1 -1
- package/dist/martyrs/src/modules/products/store/leftovers.cjs +42 -3
- package/dist/martyrs/src/modules/products/store/leftovers.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/store/leftovers.js +42 -3
- package/dist/martyrs/src/modules/products/store/leftovers.js.map +1 -1
- package/dist/martyrs/src/modules/products/store/products.cjs +32 -60
- package/dist/martyrs/src/modules/products/store/products.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/store/products.js +32 -60
- package/dist/martyrs/src/modules/products/store/products.js.map +1 -1
- package/dist/martyrs/src/modules/products/store/variants.store.cjs +6 -0
- package/dist/martyrs/src/modules/products/store/variants.store.cjs.map +1 -0
- package/dist/martyrs/src/modules/products/store/variants.store.js +6 -0
- package/dist/martyrs/src/modules/products/store/variants.store.js.map +1 -0
- package/dist/martyrs/src/modules/rents/rents.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/rents/rents.client.js.map +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.cjs +1 -2
- package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js +1 -2
- package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/rents/views/router/rents.router.cjs +3 -11
- package/dist/martyrs/src/modules/rents/views/router/rents.router.cjs.map +1 -1
- package/dist/martyrs/src/modules/rents/views/router/rents.router.js +3 -11
- package/dist/martyrs/src/modules/rents/views/router/rents.router.js.map +1 -1
- package/dist/martyrs/src/modules/rents/views/store/rents.store.cjs.map +1 -1
- package/dist/martyrs/src/modules/rents/views/store/rents.store.js.map +1 -1
- package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js.map +1 -1
- package/dist/martyrs/src/modules/reports/reports.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/reports/reports.client.js.map +1 -1
- package/dist/martyrs/src/modules/reports/store/reports.cjs +1 -1
- package/dist/martyrs/src/modules/reports/store/reports.cjs.map +1 -1
- package/dist/martyrs/src/modules/reports/store/reports.js +1 -1
- package/dist/martyrs/src/modules/reports/store/reports.js.map +1 -1
- package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.cjs +74 -51
- package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.js +75 -52
- package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.js.map +1 -1
- package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.cjs +1 -1
- package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js +1 -1
- package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js.map +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/Map.vue.cjs +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/Map.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/Map.vue.js +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/Map.vue.js.map +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/spots/router/spots.cjs +3 -9
- package/dist/martyrs/src/modules/spots/router/spots.cjs.map +1 -1
- package/dist/martyrs/src/modules/spots/router/spots.js +3 -9
- package/dist/martyrs/src/modules/spots/router/spots.js.map +1 -1
- package/dist/martyrs/src/modules/spots/spots.client.cjs +1 -1
- package/dist/martyrs/src/modules/spots/spots.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/spots/spots.client.js +1 -1
- package/dist/martyrs/src/modules/spots/spots.client.js.map +1 -1
- package/dist/martyrs/src/modules/spots/store/spots.cjs.map +1 -1
- package/dist/martyrs/src/modules/spots/store/spots.js.map +1 -1
- package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.cjs +3 -3
- package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js +3 -3
- package/dist/martyrs/src/modules/wallet/views/router/payments.router.cjs +26 -23
- package/dist/martyrs/src/modules/wallet/views/router/payments.router.cjs.map +1 -1
- package/dist/martyrs/src/modules/wallet/views/router/payments.router.js +26 -23
- package/dist/martyrs/src/modules/wallet/views/router/payments.router.js.map +1 -1
- package/dist/martyrs/src/modules/wallet/views/store/payments.store.cjs +2 -2
- package/dist/martyrs/src/modules/wallet/views/store/payments.store.cjs.map +1 -1
- package/dist/martyrs/src/modules/wallet/views/store/payments.store.js +2 -2
- package/dist/martyrs/src/modules/wallet/views/store/payments.store.js.map +1 -1
- package/dist/martyrs/src/modules/wallet/views/store/wallet.store.cjs +11 -12
- package/dist/martyrs/src/modules/wallet/views/store/wallet.store.cjs.map +1 -1
- package/dist/martyrs/src/modules/wallet/views/store/wallet.store.js +11 -12
- package/dist/martyrs/src/modules/wallet/views/store/wallet.store.js.map +1 -1
- package/dist/martyrs.cjs.js +1 -1
- package/dist/martyrs.css +1 -1
- package/dist/martyrs.es.js +1 -1
- package/dist/metadata.schema-CWmcDJN7.js +268 -0
- package/dist/metadata.schema-RlxNv46L.cjs +267 -0
- package/dist/node_modules/date-fns/_lib/addLeadingZeros.cjs +9 -0
- package/dist/node_modules/date-fns/_lib/addLeadingZeros.cjs.map +1 -0
- package/dist/node_modules/date-fns/_lib/addLeadingZeros.js +9 -0
- package/dist/node_modules/date-fns/_lib/addLeadingZeros.js.map +1 -0
- package/dist/node_modules/date-fns/_lib/defaultOptions.cjs +8 -0
- package/dist/node_modules/date-fns/_lib/defaultOptions.cjs.map +1 -0
- package/dist/node_modules/date-fns/_lib/defaultOptions.js +8 -0
- package/dist/node_modules/date-fns/_lib/defaultOptions.js.map +1 -0
- package/dist/node_modules/date-fns/_lib/format/formatters.cjs +653 -0
- package/dist/node_modules/date-fns/_lib/format/formatters.cjs.map +1 -0
- package/dist/node_modules/date-fns/_lib/format/formatters.js +653 -0
- package/dist/node_modules/date-fns/_lib/format/formatters.js.map +1 -0
- package/dist/node_modules/date-fns/_lib/format/lightFormatters.cjs +63 -0
- package/dist/node_modules/date-fns/_lib/format/lightFormatters.cjs.map +1 -0
- package/dist/node_modules/date-fns/_lib/format/lightFormatters.js +63 -0
- package/dist/node_modules/date-fns/_lib/format/lightFormatters.js.map +1 -0
- package/dist/node_modules/date-fns/_lib/format/longFormatters.cjs +59 -0
- package/dist/node_modules/date-fns/_lib/format/longFormatters.cjs.map +1 -0
- package/dist/node_modules/date-fns/_lib/format/longFormatters.js +59 -0
- package/dist/node_modules/date-fns/_lib/format/longFormatters.js.map +1 -0
- package/dist/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.cjs +21 -0
- package/dist/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.cjs.map +1 -0
- package/dist/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js +21 -0
- package/dist/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js.map +1 -0
- package/dist/node_modules/date-fns/_lib/normalizeDates.cjs +12 -0
- package/dist/node_modules/date-fns/_lib/normalizeDates.cjs.map +1 -0
- package/dist/node_modules/date-fns/_lib/normalizeDates.js +12 -0
- package/dist/node_modules/date-fns/_lib/normalizeDates.js.map +1 -0
- package/dist/node_modules/date-fns/_lib/protectedTokens.cjs +24 -0
- package/dist/node_modules/date-fns/_lib/protectedTokens.cjs.map +1 -0
- package/dist/node_modules/date-fns/_lib/protectedTokens.js +24 -0
- package/dist/node_modules/date-fns/_lib/protectedTokens.js.map +1 -0
- package/dist/node_modules/date-fns/constants.cjs +9 -0
- package/dist/node_modules/date-fns/constants.cjs.map +1 -0
- package/dist/node_modules/date-fns/constants.js +9 -0
- package/dist/node_modules/date-fns/constants.js.map +1 -0
- package/dist/node_modules/date-fns/constructFrom.cjs +13 -0
- package/dist/node_modules/date-fns/constructFrom.cjs.map +1 -0
- package/dist/node_modules/date-fns/constructFrom.js +13 -0
- package/dist/node_modules/date-fns/constructFrom.js.map +1 -0
- package/dist/node_modules/date-fns/differenceInCalendarDays.cjs +21 -0
- package/dist/node_modules/date-fns/differenceInCalendarDays.cjs.map +1 -0
- package/dist/node_modules/date-fns/differenceInCalendarDays.js +21 -0
- package/dist/node_modules/date-fns/differenceInCalendarDays.js.map +1 -0
- package/dist/node_modules/date-fns/format.cjs +80 -0
- package/dist/node_modules/date-fns/format.cjs.map +1 -0
- package/dist/node_modules/date-fns/format.js +80 -0
- package/dist/node_modules/date-fns/format.js.map +1 -0
- package/dist/node_modules/date-fns/getDayOfYear.cjs +14 -0
- package/dist/node_modules/date-fns/getDayOfYear.cjs.map +1 -0
- package/dist/node_modules/date-fns/getDayOfYear.js +14 -0
- package/dist/node_modules/date-fns/getDayOfYear.js.map +1 -0
- package/dist/node_modules/date-fns/getISOWeek.cjs +14 -0
- package/dist/node_modules/date-fns/getISOWeek.cjs.map +1 -0
- package/dist/node_modules/date-fns/getISOWeek.js +14 -0
- package/dist/node_modules/date-fns/getISOWeek.js.map +1 -0
- package/dist/node_modules/date-fns/getISOWeekYear.cjs +27 -0
- package/dist/node_modules/date-fns/getISOWeekYear.cjs.map +1 -0
- package/dist/node_modules/date-fns/getISOWeekYear.js +27 -0
- package/dist/node_modules/date-fns/getISOWeekYear.js.map +1 -0
- package/dist/node_modules/date-fns/getWeek.cjs +14 -0
- package/dist/node_modules/date-fns/getWeek.cjs.map +1 -0
- package/dist/node_modules/date-fns/getWeek.js +14 -0
- package/dist/node_modules/date-fns/getWeek.js.map +1 -0
- package/dist/node_modules/date-fns/getWeekYear.cjs +31 -0
- package/dist/node_modules/date-fns/getWeekYear.cjs.map +1 -0
- package/dist/node_modules/date-fns/getWeekYear.js +31 -0
- package/dist/node_modules/date-fns/getWeekYear.js.map +1 -0
- package/dist/node_modules/date-fns/isDate.cjs +8 -0
- package/dist/node_modules/date-fns/isDate.cjs.map +1 -0
- package/dist/node_modules/date-fns/isDate.js +8 -0
- package/dist/node_modules/date-fns/isDate.js.map +1 -0
- package/dist/node_modules/date-fns/isValid.cjs +10 -0
- package/dist/node_modules/date-fns/isValid.cjs.map +1 -0
- package/dist/node_modules/date-fns/isValid.js +10 -0
- package/dist/node_modules/date-fns/isValid.js.map +1 -0
- package/dist/node_modules/date-fns/locale/_lib/buildFormatLongFn.cjs +11 -0
- package/dist/node_modules/date-fns/locale/_lib/buildFormatLongFn.cjs.map +1 -0
- package/dist/node_modules/date-fns/locale/_lib/buildFormatLongFn.js +11 -0
- package/dist/node_modules/date-fns/locale/_lib/buildFormatLongFn.js.map +1 -0
- package/dist/node_modules/date-fns/locale/_lib/buildLocalizeFn.cjs +21 -0
- package/dist/node_modules/date-fns/locale/_lib/buildLocalizeFn.cjs.map +1 -0
- package/dist/node_modules/date-fns/locale/_lib/buildLocalizeFn.js +21 -0
- package/dist/node_modules/date-fns/locale/_lib/buildLocalizeFn.js.map +1 -0
- package/dist/node_modules/date-fns/locale/_lib/buildMatchFn.cjs +44 -0
- package/dist/node_modules/date-fns/locale/_lib/buildMatchFn.cjs.map +1 -0
- package/dist/node_modules/date-fns/locale/_lib/buildMatchFn.js +44 -0
- package/dist/node_modules/date-fns/locale/_lib/buildMatchFn.js.map +1 -0
- package/dist/node_modules/date-fns/locale/_lib/buildMatchPatternFn.cjs +17 -0
- package/dist/node_modules/date-fns/locale/_lib/buildMatchPatternFn.cjs.map +1 -0
- package/dist/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js +17 -0
- package/dist/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js.map +1 -0
- package/dist/node_modules/date-fns/locale/en-US/_lib/formatDistance.cjs +86 -0
- package/dist/node_modules/date-fns/locale/en-US/_lib/formatDistance.cjs.map +1 -0
- package/dist/node_modules/date-fns/locale/en-US/_lib/formatDistance.js +86 -0
- package/dist/node_modules/date-fns/locale/en-US/_lib/formatDistance.js.map +1 -0
- package/dist/node_modules/date-fns/locale/en-US/_lib/formatLong.cjs +37 -0
- package/dist/node_modules/date-fns/locale/en-US/_lib/formatLong.cjs.map +1 -0
- package/dist/node_modules/date-fns/locale/en-US/_lib/formatLong.js +37 -0
- package/dist/node_modules/date-fns/locale/en-US/_lib/formatLong.js.map +1 -0
- package/dist/node_modules/date-fns/locale/en-US/_lib/formatRelative.cjs +13 -0
- package/dist/node_modules/date-fns/locale/en-US/_lib/formatRelative.cjs.map +1 -0
- package/dist/node_modules/date-fns/locale/en-US/_lib/formatRelative.js +13 -0
- package/dist/node_modules/date-fns/locale/en-US/_lib/formatRelative.js.map +1 -0
- package/dist/node_modules/date-fns/locale/en-US/_lib/localize.cjs +165 -0
- package/dist/node_modules/date-fns/locale/en-US/_lib/localize.cjs.map +1 -0
- package/dist/node_modules/date-fns/locale/en-US/_lib/localize.js +165 -0
- package/dist/node_modules/date-fns/locale/en-US/_lib/localize.js.map +1 -0
- package/dist/node_modules/date-fns/locale/en-US/_lib/match.cjs +123 -0
- package/dist/node_modules/date-fns/locale/en-US/_lib/match.cjs.map +1 -0
- package/dist/node_modules/date-fns/locale/en-US/_lib/match.js +123 -0
- package/dist/node_modules/date-fns/locale/en-US/_lib/match.js.map +1 -0
- package/dist/node_modules/date-fns/locale/en-US.cjs +22 -0
- package/dist/node_modules/date-fns/locale/en-US.cjs.map +1 -0
- package/dist/node_modules/date-fns/locale/en-US.js +22 -0
- package/dist/node_modules/date-fns/locale/en-US.js.map +1 -0
- package/dist/node_modules/date-fns/startOfDay.cjs +11 -0
- package/dist/node_modules/date-fns/startOfDay.cjs.map +1 -0
- package/dist/node_modules/date-fns/startOfDay.js +11 -0
- package/dist/node_modules/date-fns/startOfDay.js.map +1 -0
- package/dist/node_modules/date-fns/startOfISOWeek.cjs +9 -0
- package/dist/node_modules/date-fns/startOfISOWeek.cjs.map +1 -0
- package/dist/node_modules/date-fns/startOfISOWeek.js +9 -0
- package/dist/node_modules/date-fns/startOfISOWeek.js.map +1 -0
- package/dist/node_modules/date-fns/startOfISOWeekYear.cjs +15 -0
- package/dist/node_modules/date-fns/startOfISOWeekYear.cjs.map +1 -0
- package/dist/node_modules/date-fns/startOfISOWeekYear.js +15 -0
- package/dist/node_modules/date-fns/startOfISOWeekYear.js.map +1 -0
- package/dist/node_modules/date-fns/startOfWeek.cjs +18 -0
- package/dist/node_modules/date-fns/startOfWeek.cjs.map +1 -0
- package/dist/node_modules/date-fns/startOfWeek.js +18 -0
- package/dist/node_modules/date-fns/startOfWeek.js.map +1 -0
- package/dist/node_modules/date-fns/startOfWeekYear.cjs +20 -0
- package/dist/node_modules/date-fns/startOfWeekYear.cjs.map +1 -0
- package/dist/node_modules/date-fns/startOfWeekYear.js +20 -0
- package/dist/node_modules/date-fns/startOfWeekYear.js.map +1 -0
- package/dist/node_modules/date-fns/startOfYear.cjs +12 -0
- package/dist/node_modules/date-fns/startOfYear.cjs.map +1 -0
- package/dist/node_modules/date-fns/startOfYear.js +12 -0
- package/dist/node_modules/date-fns/startOfYear.js.map +1 -0
- package/dist/node_modules/date-fns/toDate.cjs +9 -0
- package/dist/node_modules/date-fns/toDate.cjs.map +1 -0
- package/dist/node_modules/date-fns/toDate.js +9 -0
- package/dist/node_modules/date-fns/toDate.js.map +1 -0
- package/dist/notifications.server.cjs +552 -0
- package/dist/notifications.server.js +511 -621
- package/dist/orders.server.cjs +820 -0
- package/dist/orders.server.js +733 -838
- package/dist/organizations.server.cjs +1493 -0
- package/dist/organizations.server.js +1301 -1414
- package/dist/ownership.schema-CCZX5vfw.js +43 -0
- package/dist/ownership.schema-DCosqOc1.cjs +42 -0
- package/dist/pages.server.cjs +142 -0
- package/dist/pages.server.js +125 -160
- package/dist/products.server.cjs +2635 -0
- package/dist/products.server.js +2528 -1273
- package/dist/profile.schema-DchVS-Jr.js +21 -0
- package/dist/profile.schema-yQuIzngl.cjs +20 -0
- package/dist/queryProcessor-B_X680wC.cjs +332 -0
- package/dist/queryProcessor-CVcLPEnv.js +333 -0
- package/dist/rents.server.cjs +487 -0
- package/dist/rents.server.js +462 -480
- package/dist/reports.server.cjs +133 -0
- package/dist/reports.server.js +97 -150
- package/dist/spots.server.cjs +331 -0
- package/dist/spots.server.js +301 -349
- package/dist/style.css +854 -724
- package/dist/{tickets.controller-zEHIAe_B.js → tickets.controller-D0V0gJCA.cjs} +239 -263
- package/dist/{tickets.controller-BIhfgjNb.mjs → tickets.controller-DQQcjyui.js} +222 -263
- package/dist/wallet.server.cjs +528 -0
- package/dist/wallet.server.js +473 -666
- package/package.json +7 -6
- package/src/builder/builder.js +19 -14
- package/src/builder/modes/spa.dev.js +16 -39
- package/src/builder/modes/spa.prod.js +15 -26
- package/src/builder/modes/ssr.dev.js +123 -107
- package/src/builder/modes/ssr.prod.js +19 -38
- package/src/builder/modes/ssr.rspack.dev.js +70 -66
- package/src/builder/modes/ssr.vite.dev.js +45 -71
- package/src/builder/rspack/index.js +10 -8
- package/src/builder/rspack/rspack.config.api.js +59 -0
- package/src/builder/rspack/rspack.config.base.js +28 -11
- package/src/builder/rspack/{rspack.config.spa.js → rspack.config.spa.client.js} +21 -26
- package/src/builder/rspack/{rspack.config.client.js → rspack.config.ssr.client.js} +9 -13
- package/src/builder/rspack/{rspack.config.ssr.js → rspack.config.ssr.server.js} +22 -10
- package/src/builder/ssr/ssr-render-html.js +13 -12
- package/src/builder/ssr/ssr-transform-webpack-stats.js +37 -25
- package/src/builder/ssr/utils.js +7 -14
- package/src/builder/templates/page.js +2 -2
- package/src/builder/templates/screen.js +2 -2
- package/src/builder/utils/hot-reload.js +1 -1
- package/src/builder/vite/index.js +8 -8
- package/src/builder/vite/vite.config.base.js +37 -47
- package/src/builder/vite/vite.config.client.js +42 -64
- package/src/builder/vite/vite.config.server.js +14 -24
- package/src/builder/vite/vite.config.spa.js +37 -46
- package/src/builder/vite/vite.config.ssr.js +44 -60
- package/src/builder/webpack/index.js +7 -7
- package/src/builder/webpack/webpack.config.base.js +54 -39
- package/src/builder/webpack/webpack.config.client.js +36 -47
- package/src/builder/webpack/webpack.config.server.js +23 -17
- package/src/builder/webpack/webpack.config.spa.js +22 -28
- package/src/builder/webpack/webpack.config.ssr.js +33 -30
- package/src/components/Button/Button.vue +8 -3
- package/src/components/Chips/Chips.vue +1 -1
- package/src/components/Dropdown/Dropdown.vue +1 -1
- package/src/components/Feed/Feed.vue +156 -63
- package/src/components/Field/Field.vue +82 -75
- package/src/components/FieldPhone/FieldPhone.vue +2 -2
- package/src/components/FieldPhone/all-countries.js +247 -3
- package/src/components/FieldPhone/click-outside.js +1 -1
- package/src/components/FieldPhone/utils.js +263 -262
- package/src/components/FieldTags/FieldTags.vue +375 -25
- package/src/components/FieldTags/create-tags.js +15 -15
- package/src/components/FieldTags/vue-tags-input.props.js +2 -9
- package/src/components/Map/LoaderGMaps.js +4 -4
- package/src/components/Popup/Popup.vue +142 -89
- package/src/components/Select/Select.vue +2 -4
- package/src/components/SelectMulti/SelectMulti.vue +911 -656
- package/src/components/Table/Table.vue +21 -64
- package/src/components/UploadImageMultiple/UploadImageMultiple.vue +4 -4
- package/src/components/index.js +10 -10
- package/src/configurator/router/configurator.router.js +10 -8
- package/src/main.js +79 -80
- package/src/modules/auth/auth.client.js +17 -18
- package/src/modules/auth/auth.server.js +32 -42
- package/src/modules/auth/controllers/middlewares/authJwt.js +16 -34
- package/src/modules/auth/controllers/middlewares/authSecret.js +2 -8
- package/src/modules/auth/controllers/middlewares/index.js +15 -10
- package/src/modules/auth/controllers/middlewares/verifyInvites.js +13 -21
- package/src/modules/auth/controllers/middlewares/verifySignUp.js +7 -16
- package/src/modules/auth/controllers/middlewares/verifyUser.js +20 -31
- package/src/modules/auth/controllers/middlewares/visitor.logger.js +10 -23
- package/src/modules/auth/controllers/routes/auth.routes.js +9 -29
- package/src/modules/auth/controllers/routes/twofa.routes.js +6 -23
- package/src/modules/auth/controllers/routes/users.routes.js +8 -39
- package/src/modules/auth/controllers/services/auth.service.js +49 -82
- package/src/modules/auth/controllers/services/twofa.service.js +6 -13
- package/src/modules/auth/controllers/services/users.service.js +31 -70
- package/src/modules/auth/controllers/utils/verifyAppleIdToken.js +47 -54
- package/src/modules/auth/models/request.model.js +5 -9
- package/src/modules/auth/models/role.model.js +3 -7
- package/src/modules/auth/models/user.model.js +39 -41
- package/src/modules/auth/models/visitor.model.js +3 -6
- package/src/modules/auth/views/components/layouts/Auth.vue +1 -1
- package/src/modules/auth/views/components/pages/EnterCode.vue +3 -3
- package/src/modules/auth/views/components/pages/EnterPassword.vue +1 -1
- package/src/modules/auth/views/components/pages/Invite.vue +2 -2
- package/src/modules/auth/views/components/pages/Profile.vue +3 -3
- package/src/modules/auth/views/components/pages/ProfileBlogposts.vue +3 -3
- package/src/modules/auth/views/components/pages/ProfileEdit.vue +3 -3
- package/src/modules/auth/views/components/pages/ResetPassword.vue +3 -3
- package/src/modules/auth/views/components/pages/SignIn.vue +2 -2
- package/src/modules/auth/views/components/pages/SignUp.vue +3 -3
- package/src/modules/auth/views/components/sections/FeaturedUsers.vue +1 -1
- package/src/modules/auth/views/components/sections/ProfileEditCredentials.vue +2 -2
- package/src/modules/auth/views/localization/EnterCode.json +1 -1
- package/src/modules/auth/views/localization/EnterPassword.json +1 -1
- package/src/modules/auth/views/localization/ResetPassword.json +1 -1
- package/src/modules/auth/views/localization/SignUp.json +1 -1
- package/src/modules/auth/views/middlewares/auth.validation.js +16 -29
- package/src/modules/auth/views/middlewares/ownership.validation.js +9 -14
- package/src/modules/auth/views/router/auth.js +66 -77
- package/src/modules/auth/views/router/users.js +87 -89
- package/src/modules/auth/views/store/auth.js +41 -39
- package/src/modules/auth/views/store/twofa.js +44 -42
- package/src/modules/auth/views/store/users.js +22 -26
- package/src/modules/auth/views/validations/inputs.validation.js +53 -59
- package/src/modules/backoffice/backoffice.client.js +8 -8
- package/src/modules/backoffice/components/pages/Dashboard.vue +3 -3
- package/src/modules/backoffice/components/partials/Sidebar.vue +2 -2
- package/src/modules/backoffice/router/backoffice.js +49 -49
- package/src/modules/chats/chats.client.js +9 -9
- package/src/modules/chats/chats.server.js +18 -23
- package/src/modules/chats/controllers/chats.controller.js +8 -15
- package/src/modules/chats/models/chat.model.js +6 -9
- package/src/modules/chats/routes/chats.routes.js +12 -20
- package/src/modules/chats/store/chat.store.js +14 -11
- package/src/modules/community/community.client.js +13 -26
- package/src/modules/community/community.server.js +30 -35
- package/src/modules/community/components/blocks/FooterBlogpost.vue +1 -1
- package/src/modules/community/components/layouts/Community.vue +6 -4
- package/src/modules/community/components/pages/Blog.vue +1 -1
- package/src/modules/community/components/pages/BlogPost.vue +1 -1
- package/src/modules/community/components/pages/CreateBlogPost.vue +5 -5
- package/src/modules/community/components/sections/Comment.vue +2 -2
- package/src/modules/community/components/sections/HotPosts.vue +1 -1
- package/src/modules/community/controllers/blog.controller.js +103 -139
- package/src/modules/community/controllers/comments.controller.js +79 -124
- package/src/modules/community/controllers/reactions.controller.js +32 -59
- package/src/modules/community/controllers/utils/queryProcessor.js +13 -17
- package/src/modules/community/controllers/utils/queryProcessorReactions.js +28 -34
- package/src/modules/community/middlewares/server/index.js +7 -5
- package/src/modules/community/middlewares/server/verifyBlogpost.js +9 -14
- package/src/modules/community/models/blogpost.model.js +33 -34
- package/src/modules/community/models/comment.model.js +48 -50
- package/src/modules/community/models/reaction.model.js +48 -46
- package/src/modules/community/router/blogposts.js +52 -50
- package/src/modules/community/routes/blog.routes.js +15 -49
- package/src/modules/community/routes/comments.routes.js +14 -44
- package/src/modules/community/routes/reactions.routes.js +10 -43
- package/src/modules/community/store/blogposts.js +54 -59
- package/src/modules/community/store/reactions.js +9 -13
- package/src/modules/constructor/components/elements/Embed.vue +3 -3
- package/src/modules/constructor/components/elements/ImageUpload.vue +3 -3
- package/src/modules/core/classes/event.js +48 -0
- package/src/modules/core/classes/memory-tracker.js +1063 -0
- package/src/modules/{globals/views/core → core/classes}/module-manager.js +43 -46
- package/src/modules/{globals/views/core → core/classes}/module.js +52 -53
- package/src/modules/core/model/Adapter.js +17 -0
- package/src/modules/core/model/Adapter.mogodb.js +65 -0
- package/src/modules/core/model/Adapter.postgre.js +127 -0
- package/src/modules/core/model/Model.js +99 -0
- package/src/modules/core/model/Schema.js +70 -0
- package/src/modules/core/model/Validation.js +97 -0
- package/src/modules/events/components/elements/ButtonCheck.vue +1 -1
- package/src/modules/events/components/elements/ButtonJoin.vue +2 -2
- package/src/modules/events/components/pages/EditEvent.vue +5 -5
- package/src/modules/events/components/pages/EditEventTickets.vue +3 -3
- package/src/modules/events/components/pages/Event.vue +1 -2
- package/src/modules/events/components/pages/Events.vue +3 -3
- package/src/modules/events/components/pages/EventsBackoffice.vue +1 -1
- package/src/modules/events/components/pages/EventsSearch.vue +1 -1
- package/src/modules/events/components/sections/EventsHot.vue +1 -1
- package/src/modules/events/components/sections/FeaturedEvents.vue +1 -1
- package/src/modules/events/controllers/events.controller.js +90 -155
- package/src/modules/events/controllers/tickets.controller.js +157 -220
- package/src/modules/events/controllers/utils/queryProcessor.js +117 -123
- package/src/modules/events/controllers/utils/templateEmail.js +6 -7
- package/src/modules/events/controllers/utils/templateTicket.js +6 -7
- package/src/modules/events/events.client.js +22 -28
- package/src/modules/events/events.server.js +25 -32
- package/src/modules/events/middlewares/server/index.js +6 -5
- package/src/modules/events/middlewares/server/verifyEvent.js +29 -31
- package/src/modules/events/models/event.model.js +68 -70
- package/src/modules/events/models/ticket.model.js +55 -55
- package/src/modules/events/router/events.js +28 -38
- package/src/modules/events/routes/events.routes.js +15 -49
- package/src/modules/events/routes/tickets.routes.js +7 -21
- package/src/modules/events/store/events.js +41 -50
- package/src/modules/events/store/tickets.js +11 -14
- package/src/modules/files/controllers/files.controller.js +5 -17
- package/src/modules/files/files.server.js +13 -16
- package/src/modules/files/middlewares/server/index.js +7 -5
- package/src/modules/files/middlewares/server/middlewareBusboy.js +62 -123
- package/src/modules/files/routes/files.routes.js +11 -40
- package/src/modules/gallery/components/pages/Gallery.vue +1 -1
- package/src/modules/gallery/components/sections/BackofficeGallery.vue +3 -3
- package/src/modules/gallery/controllers/gallery.controller.js +27 -58
- package/src/modules/gallery/gallery.client.js +11 -11
- package/src/modules/gallery/gallery.server.js +18 -23
- package/src/modules/gallery/models/photo.model.js +27 -29
- package/src/modules/gallery/router/gallery.backoffice.router.js +14 -14
- package/src/modules/gallery/router/gallery.router.js +2 -2
- package/src/modules/gallery/routes/gallery.routes.js +12 -44
- package/src/modules/gallery/store/gallery.js +3 -3
- package/src/modules/globals/controllers/classes/abac/abac.adapter.express.js +194 -0
- package/src/modules/globals/controllers/classes/abac/abac.adapter.ws.js +84 -0
- package/src/modules/globals/controllers/classes/abac/abac.core.js +220 -0
- package/src/modules/globals/controllers/classes/abac/abac.fields.js +376 -0
- package/src/modules/globals/controllers/classes/abac/abac.js +104 -0
- package/src/modules/globals/controllers/classes/abac/abac.policies.js +226 -0
- package/src/modules/globals/controllers/classes/crud/crud.controller.js +314 -0
- package/src/modules/globals/controllers/classes/crud/crud.core.js +230 -0
- package/src/modules/globals/controllers/classes/crud/crud.events.js +209 -0
- package/src/modules/globals/controllers/classes/crud/crud.js +169 -0
- package/src/modules/globals/controllers/classes/crud/crud.policies.js +256 -0
- package/src/modules/globals/controllers/classes/crud/crud.service.js +285 -0
- package/src/modules/globals/controllers/classes/globals.abac.js +69 -120
- package/src/modules/globals/controllers/classes/globals.cache.js +2 -15
- package/src/modules/globals/controllers/classes/globals.crud.js +15 -43
- package/src/modules/globals/controllers/classes/globals.logger.js +2 -6
- package/src/modules/globals/controllers/classes/globals.observer.js +36 -43
- package/src/modules/globals/controllers/classes/globals.validator.js +62 -88
- package/src/modules/globals/controllers/classes/globals.verifier.js +144 -128
- package/src/modules/globals/controllers/classes/globals.webhook.js +1 -3
- package/src/modules/globals/controllers/classes/globals.websocket.js +29 -89
- package/src/modules/globals/controllers/classes/globals.websocket.ws.js +6 -28
- package/src/modules/globals/controllers/policies/globals.policies.js +33 -50
- package/src/modules/globals/controllers/utils/mailing.js +26 -34
- package/src/modules/globals/controllers/utils/parseCookie.js +2 -5
- package/src/modules/globals/controllers/utils/queryProcessor.js +188 -127
- package/src/modules/globals/controllers/utils/seo-friendly-url.js +195 -48
- package/src/modules/globals/controllers/utils/sitemap.js +14 -20
- package/src/modules/globals/globals.client.js +55 -53
- package/src/modules/globals/globals.server.js +22 -14
- package/src/modules/globals/models/schemas/common.schema.js +4 -4
- package/src/modules/globals/models/schemas/credentials.schema.js +3 -3
- package/src/modules/globals/models/schemas/engagement.schema.js +6 -16
- package/src/modules/globals/models/schemas/metadata.schema.js +16 -20
- package/src/modules/globals/models/schemas/ownership.schema.js +16 -13
- package/src/modules/globals/models/schemas/profile.schema.js +6 -7
- package/src/modules/globals/models/schemas/socials.schema.js +9 -9
- package/src/modules/globals/views/classes/globals.store.js +25 -22
- package/src/modules/globals/views/classes/globals.websocket.js +16 -16
- package/src/modules/globals/views/classes/globals.websocket.ws.js +1 -1
- package/src/modules/globals/views/classes/store.js +18 -19
- package/src/modules/globals/views/components/blocks/BlockMultiselect.vue +364 -0
- package/src/modules/globals/views/components/blocks/Card.vue +75 -46
- package/src/modules/globals/views/components/blocks/CardFooter.vue +1 -1
- package/src/modules/globals/views/components/blocks/CardHeader.vue +0 -1
- package/src/modules/globals/views/components/elements/ButtonDate.vue +2 -2
- package/src/modules/globals/views/components/layouts/App.vue +2 -2
- package/src/modules/globals/views/components/layouts/Client.vue +2 -2
- package/src/modules/globals/views/components/partials/BottomNavigationBar.vue +1 -1
- package/src/modules/globals/views/components/partials/Footer.vue +1 -1
- package/src/modules/globals/views/components/partials/Header.vue +3 -3
- package/src/modules/globals/views/components/partials/LocationSelection.vue +1 -1
- package/src/modules/globals/views/components/partials/Navigation.vue +11 -19
- package/src/modules/globals/views/components/partials/NavigationBar.vue +3 -3
- package/src/modules/globals/views/components/partials/Sidebar.vue +1 -1
- package/src/modules/globals/views/localization/get-browser-locale.js +7 -12
- package/src/modules/globals/views/middlewares/localization.js +3 -6
- package/src/modules/globals/views/mixins/mixins.js +152 -134
- package/src/modules/globals/views/plugins/alert.plugin.js +28 -28
- package/src/modules/globals/views/plugins/date-picker.plugin.js +85 -0
- package/src/modules/globals/views/plugins/store-debugger/StoreDebugger.vue +284 -0
- package/src/modules/globals/views/plugins/store-debugger/store-debugger.plugin.js +24 -0
- package/src/modules/globals/views/router/addRoutes.js +15 -17
- package/src/modules/globals/views/router/scrollBehavior.js +17 -13
- package/src/modules/globals/views/store/globals.js +64 -78
- package/src/modules/globals/views/utils/axios-instance.js +1 -1
- package/src/modules/globals/views/utils/vue-app-renderer.js +23 -26
- package/src/modules/governance/controllers/factories/initiatives.controller.js +23 -29
- package/src/modules/governance/controllers/factories/tasks.controller.js +21 -27
- package/src/modules/governance/controllers/factories/votes.controller.js +17 -21
- package/src/modules/governance/controllers/factories/votings.controller.js +25 -32
- package/src/modules/governance/controllers/routes/initiatives.routes.js +10 -12
- package/src/modules/governance/controllers/routes/tasks.routes.js +10 -12
- package/src/modules/governance/controllers/routes/votes.routes.js +8 -10
- package/src/modules/governance/controllers/routes/votings.routes.js +11 -13
- package/src/modules/governance/governance.client.js +7 -7
- package/src/modules/governance/governance.server.js +36 -39
- package/src/modules/governance/models/initiative.model.js +26 -22
- package/src/modules/governance/models/milestone.model.js +86 -82
- package/src/modules/governance/models/task.model.js +48 -45
- package/src/modules/governance/models/vote.model.js +18 -16
- package/src/modules/governance/models/voting.model.js +23 -19
- package/src/modules/governance/views/router/goverance.router.js +56 -80
- package/src/modules/governance/views/store/initiatives.js +8 -11
- package/src/modules/governance/views/store/projects.js +57 -66
- package/src/modules/governance/views/store/tasks.js +9 -14
- package/src/modules/governance/views/store/votes.js +8 -13
- package/src/modules/governance/views/store/votings.js +7 -11
- package/src/modules/icons/actions/IconDuplicate.vue +17 -0
- package/src/modules/icons/entities/IconDiscount.vue +23 -0
- package/src/modules/icons/entities/IconSettings.vue +32 -0
- package/src/modules/icons/icons.client.js +118 -96
- package/src/modules/icons/pages/IconsPage.vue +300 -0
- package/src/modules/icons/router/icons.router.js +34 -0
- package/src/modules/integrations/integrations.service.js +34 -91
- package/src/modules/integrations/openai/openai.globals.js +116 -0
- package/src/modules/integrations/paypal/controllers/webhooks/paypal.webhook.js +15 -19
- package/src/modules/integrations/stripe/controllers/services/stripe.service.js +241 -285
- package/src/modules/integrations/stripe/controllers/webhooks/stripe.webhook.js +8 -17
- package/src/modules/integrations/tinkoff/controllers/services/tinkoff.service.js +111 -119
- package/src/modules/integrations/tinkoff/models/tinkoff.payment.model.js +12 -13
- package/src/modules/inventory/inventory.server.js +23 -0
- package/src/modules/inventory/models/stock.adjustment.model.js +63 -0
- package/src/modules/inventory/models/stock.availability.model.js +56 -0
- package/src/modules/inventory/models/stock.balance.model.js +43 -0
- package/src/modules/inventory/models/stock.inventory.model.js +38 -0
- package/src/modules/inventory/policies/inventory.policies.js +47 -0
- package/src/modules/inventory/routes/inventory.routes.js +61 -0
- package/src/modules/inventory/services/inventory.crud.js +527 -0
- package/src/modules/inventory/services/inventory.verifier.js +81 -0
- package/src/modules/inventory/store/ inventory.store.js +131 -0
- package/src/modules/inventory/workers/inventory.availability.worker.js +300 -0
- package/src/modules/landing/landing.client.js +16 -16
- package/src/modules/marketplace/marketplace.client.js +12 -13
- package/src/modules/marketplace/views/components/layouts/Marketplace.vue +2 -2
- package/src/modules/marketplace/views/components/pages/Catalog.vue +2 -2
- package/src/modules/marketplace/views/components/sections/SectionMenu.vue +2 -2
- package/src/modules/marketplace/views/router/marketplace.router.js +9 -11
- package/src/modules/marketplace/views/store/marketplace.js +33 -29
- package/src/modules/music/components/cards/ArtistCard.vue +62 -15
- package/src/modules/music/components/lists/ArtistList.vue +267 -12
- package/src/modules/music/components/pages/ArtistDetail.vue +375 -189
- package/src/modules/music/components/pages/ArtistForm.vue +426 -0
- package/src/modules/music/components/pages/ArtistManager.vue +277 -0
- package/src/modules/music/components/pages/MusicLibrary.vue +5 -8
- package/src/modules/music/controllers/album.controller.js +15 -31
- package/src/modules/music/controllers/artist.controller.js +29 -41
- package/src/modules/music/controllers/genre.controller.js +23 -31
- package/src/modules/music/controllers/music.controller.js +28 -57
- package/src/modules/music/controllers/playlist.controller.js +20 -56
- package/src/modules/music/controllers/search.controller.js +37 -62
- package/src/modules/music/controllers/stream.controller.js +16 -32
- package/src/modules/music/models/album.model.js +54 -51
- package/src/modules/music/models/artist.model.js +50 -52
- package/src/modules/music/models/genre.model.js +27 -31
- package/src/modules/music/models/play-history.model.js +41 -42
- package/src/modules/music/models/playlist.model.js +54 -54
- package/src/modules/music/models/track.model.js +65 -69
- package/src/modules/music/music.client.js +55 -52
- package/src/modules/music/music.server.js +62 -77
- package/src/modules/music/policies/music.policies.js +9 -29
- package/src/modules/music/router/music.js +38 -19
- package/src/modules/music/routes/album.routes.js +21 -55
- package/src/modules/music/routes/artist.routes.js +22 -59
- package/src/modules/music/routes/genre.routes.js +21 -53
- package/src/modules/music/routes/music.routes.js +74 -113
- package/src/modules/music/routes/playlist.routes.js +36 -88
- package/src/modules/music/routes/search.routes.js +5 -9
- package/src/modules/music/routes/stream.routes.js +23 -34
- package/src/modules/music/store/albums.js +34 -34
- package/src/modules/music/store/artists.js +31 -28
- package/src/modules/music/store/player.js +71 -73
- package/src/modules/music/store/playlists.js +37 -37
- package/src/modules/music/store/search.js +25 -25
- package/src/modules/music/store/tracks.js +40 -45
- package/src/modules/music/websocket/streaming.handler.js +58 -76
- package/src/modules/notifications/components/elements/NotificationBadge.vue +1 -1
- package/src/modules/notifications/components/sections/NotificationsList.vue +1 -1
- package/src/modules/notifications/controllers/notifications.controller.js +32 -62
- package/src/modules/notifications/middlewares/notifications.abac.js +1 -5
- package/src/modules/notifications/models/notification-log.model.js +8 -5
- package/src/modules/notifications/models/notification-preference.model.js +8 -6
- package/src/modules/notifications/models/notification.model.js +2 -3
- package/src/modules/notifications/models/user-device.model.js +3 -5
- package/src/modules/notifications/notifications.client.js +65 -75
- package/src/modules/notifications/notifications.server.js +31 -44
- package/src/modules/notifications/router/notifications.router.js +8 -8
- package/src/modules/notifications/routes/notifications.routes.js +4 -11
- package/src/modules/notifications/services/apns.service.js +4 -13
- package/src/modules/notifications/services/email.service.js +4 -8
- package/src/modules/notifications/services/fcm.service.js +4 -11
- package/src/modules/notifications/services/notification.service.js +49 -84
- package/src/modules/notifications/services/sms.service.js +4 -7
- package/src/modules/notifications/services/telegram.service.js +4 -7
- package/src/modules/notifications/services/web-push.service.js +14 -23
- package/src/modules/notifications/services/whatsapp.service.js +4 -11
- package/src/modules/notifications/store/notifications.store.js +50 -55
- package/src/modules/orders/components/pages/OrderBackoffice.vue +5 -5
- package/src/modules/orders/components/pages/OrderCreate.vue +6 -6
- package/src/modules/orders/components/pages/OrderCreateBackoffice.vue +5 -5
- package/src/modules/orders/components/pages/Orders.vue +2 -2
- package/src/modules/orders/components/partials/ShopCart.vue +3 -3
- package/src/modules/orders/components/sections/FormAddCustomer.vue +5 -5
- package/src/modules/orders/components/sections/FormDelivery.vue +2 -2
- package/src/modules/orders/controllers/applications.controller.js +37 -67
- package/src/modules/orders/controllers/orders.controller.js +96 -155
- package/src/modules/orders/controllers/testimonials.controller.js +22 -31
- package/src/modules/orders/models/application.model.js +25 -24
- package/src/modules/orders/models/customer.model.js +61 -55
- package/src/modules/orders/models/order.model.js +80 -81
- package/src/modules/orders/models/testimonial.model.js +7 -9
- package/src/modules/orders/orders.client.js +24 -26
- package/src/modules/orders/orders.server.js +27 -32
- package/src/modules/orders/router/orders.router.js +21 -22
- package/src/modules/orders/routes/applications.routes.js +10 -40
- package/src/modules/orders/routes/orders.routes.js +8 -19
- package/src/modules/orders/routes/testimonials.routes.js +9 -29
- package/src/modules/orders/store/applications.js +34 -39
- package/src/modules/orders/store/customers.store.js +3 -3
- package/src/modules/orders/store/models/customer.js +5 -5
- package/src/modules/orders/store/models/order.js +4 -4
- package/src/modules/orders/store/orders.js +61 -76
- package/src/modules/orders/store/shopcart.js +150 -98
- package/src/modules/orders/store/testimonials.js +7 -10
- package/src/modules/organizations/components/elements/ButtonToggleMembership.vue +2 -2
- package/src/modules/organizations/components/pages/Department.vue +1 -1
- package/src/modules/organizations/components/pages/DepartmentEdit.vue +3 -3
- package/src/modules/organizations/components/pages/Members.vue +6 -6
- package/src/modules/organizations/components/pages/Organization.vue +9 -9
- package/src/modules/organizations/components/pages/OrganizationBackoffice.vue +2 -2
- package/src/modules/organizations/components/pages/OrganizationCreate.vue +2 -2
- package/src/modules/organizations/components/pages/OrganizationDetails.vue +2 -2
- package/src/modules/organizations/components/pages/OrganizationEdit.vue +3 -3
- package/src/modules/organizations/components/pages/OrganizationPeople.vue +1 -1
- package/src/modules/organizations/components/pages/Organizations.vue +2 -2
- package/src/modules/organizations/components/sections/DetailsTabSection.vue +2 -2
- package/src/modules/organizations/components/sections/MembersAdd.vue +1 -1
- package/src/modules/organizations/components/sections/Organizations.vue +3 -3
- package/src/modules/organizations/components/sections/Publics.vue +3 -3
- package/src/modules/organizations/configs/navigation.organization.config.js +227 -0
- package/src/modules/organizations/controllers/departments.controller.js +11 -22
- package/src/modules/organizations/controllers/invites.controller.js +14 -30
- package/src/modules/organizations/controllers/memberships.controller.js +21 -54
- package/src/modules/organizations/controllers/organizations.controller.js +32 -83
- package/src/modules/organizations/controllers/utils/addMembersQuantity.js +11 -12
- package/src/modules/organizations/controllers/utils/addUserStatusFields.js +31 -41
- package/src/modules/organizations/controllers/utils/lookupConfigs.js +31 -31
- package/src/modules/organizations/controllers/utils/queryProcessor.js +40 -51
- package/src/modules/organizations/controllers/utils/queryProcessorOrganizations.js +124 -147
- package/src/modules/organizations/middlewares/verifyAccesses.js +7 -25
- package/src/modules/organizations/middlewares/verifyAccessesRefactored.js +26 -51
- package/src/modules/organizations/models/department.model.js +58 -59
- package/src/modules/organizations/models/invite.model.js +45 -42
- package/src/modules/organizations/models/membership.model.js +35 -35
- package/src/modules/organizations/models/organization.model.js +65 -80
- package/src/modules/organizations/models/schemas/accesses.schema.js +1 -2
- package/src/modules/organizations/organizations.client.js +45 -46
- package/src/modules/organizations/organizations.server.js +40 -41
- package/src/modules/organizations/policies/organizations.policies.js +193 -85
- package/src/modules/organizations/router/backoffice.router.js +22 -20
- package/src/modules/organizations/router/departments.router.js +27 -23
- package/src/modules/organizations/router/members.router.js +18 -18
- package/src/modules/organizations/router/organizations.js +74 -66
- package/src/modules/organizations/routes/departments.routes.js +9 -20
- package/src/modules/organizations/routes/invites.routes.js +9 -31
- package/src/modules/organizations/routes/memberships.routes.js +7 -23
- package/src/modules/organizations/routes/organizations.routes.js +15 -40
- package/src/modules/organizations/store/departments.js +13 -14
- package/src/modules/organizations/store/invites.js +38 -41
- package/src/modules/organizations/store/memberships.js +21 -26
- package/src/modules/organizations/store/organizations.js +40 -46
- package/src/modules/pages/controllers/factories/pages.factory.js +6 -27
- package/src/modules/pages/controllers/routes/pages.routes.js +7 -23
- package/src/modules/pages/models/page.model.js +22 -20
- package/src/modules/pages/pages.client.js +12 -12
- package/src/modules/pages/pages.server.js +18 -21
- package/src/modules/pages/views/components/pages/Page.vue +1 -1
- package/src/modules/pages/views/components/pages/Pages.vue +1 -1
- package/src/modules/pages/views/components/partials/SidebarPages.vue +1 -1
- package/src/modules/pages/views/router/pages.backoffice.router.js +29 -29
- package/src/modules/pages/views/router/pages.router.js +16 -14
- package/src/modules/pages/views/store/pages.js +12 -11
- package/src/modules/pages/views/store/pages.store.js +3 -3
- package/src/modules/products/components/blocks/CardLeftover.vue +1 -1
- package/src/modules/products/components/blocks/CardPosition.vue +94 -157
- package/src/modules/products/components/blocks/CardProduct.vue +5 -5
- package/src/modules/products/components/blocks/ProductDiscounts.vue +141 -0
- package/src/modules/products/components/blocks/{ImagesThumbnails.vue → ProductImages.vue} +3 -4
- package/src/modules/products/components/blocks/ProductVariants.vue +125 -0
- package/src/modules/products/components/elements/Price.vue +34 -37
- package/src/modules/products/components/elements/QuantitySelector.vue +52 -0
- package/src/modules/products/components/elements/THC.vue +6 -6
- package/src/modules/products/components/forms/ColumnSettingsMenu.vue +80 -0
- package/src/modules/products/components/forms/ReorderSettingsForm.vue +107 -0
- package/src/modules/products/components/forms/StockAuditForm.vue +154 -0
- package/src/modules/products/components/forms/StockHistoryView.vue +134 -0
- package/src/modules/products/components/pages/Categories.vue +5 -5
- package/src/modules/products/components/pages/CategoryEdit.vue +8 -44
- package/src/modules/products/components/pages/LeftoverEdit.vue +360 -0
- package/src/modules/products/components/pages/Leftovers.vue +288 -131
- package/src/modules/products/components/pages/Product.vue +171 -100
- package/src/modules/products/components/pages/ProductEdit.vue +329 -461
- package/src/modules/products/components/pages/ProductRecommmendation.vue +2 -2
- package/src/modules/products/components/pages/Products.vue +7 -7
- package/src/modules/products/components/sections/EditAttributes.vue +154 -0
- package/src/modules/products/components/sections/EditCategories.vue +149 -0
- package/src/modules/products/components/sections/EditDiscounts.vue +308 -0
- package/src/modules/products/components/sections/EditIngredients.vue +130 -0
- package/src/modules/products/components/sections/EditVariants.vue +453 -0
- package/src/modules/products/components/sections/FilterProducts.vue +4 -4
- package/src/modules/products/components/sections/HeroRecommendation.vue +1 -1
- package/src/modules/products/components/sections/PopularProducts.vue +2 -2
- package/src/modules/products/components/sections/ProductConfigurator.vue +131 -0
- package/src/modules/products/components/sections/SectionProduct.vue +17 -17
- package/src/modules/products/controllers/categories.controller.js +45 -143
- package/src/modules/products/controllers/configs/products.lookup.config.js +135 -0
- package/src/modules/products/controllers/leftovers.controller.js +38 -62
- package/src/modules/products/controllers/products.controller.js +103 -364
- package/src/modules/products/controllers/queries/products.queries.js +112 -0
- package/src/modules/products/middlewares/categories.verifier.js +94 -72
- package/src/modules/products/middlewares/variants.verifier.js +226 -0
- package/src/modules/products/models/category.model.js +26 -22
- package/src/modules/products/models/leftover.model.js +61 -44
- package/src/modules/products/models/product.model.js +54 -119
- package/src/modules/products/models/schemas/discount.schema.js +33 -0
- package/src/modules/products/models/schemas/ingredient.schema.js +46 -0
- package/src/modules/products/models/variant.model.js +66 -0
- package/src/modules/products/products.client.js +31 -41
- package/src/modules/products/products.server.js +34 -35
- package/src/modules/products/router/categories.router.js +34 -30
- package/src/modules/products/router/leftovers.router.js +32 -30
- package/src/modules/products/router/products.router.js +18 -21
- package/src/modules/products/routes/categories.routes.js +13 -52
- package/src/modules/products/routes/leftovers.routes.js +9 -27
- package/src/modules/products/routes/products.routes.js +8 -27
- package/src/modules/products/routes/variants.routes.js +102 -0
- package/src/modules/products/store/categories.js +24 -23
- package/src/modules/products/store/leftovers.js +53 -17
- package/src/modules/products/store/products.js +73 -125
- package/src/modules/products/store/variants.store.js +5 -0
- package/src/modules/rents/controllers/routes/rents.routes.js +12 -21
- package/src/modules/rents/controllers/services/rents.services.js +183 -239
- package/src/modules/rents/models/rent.model.js +27 -17
- package/src/modules/rents/rents.client.js +5 -10
- package/src/modules/rents/rents.server.js +15 -21
- package/src/modules/rents/views/components/pages/RentsEdit.vue +2 -2
- package/src/modules/rents/views/router/rents.router.js +11 -20
- package/src/modules/rents/views/store/rents.store.js +33 -33
- package/src/modules/reports/components/sections/FormReport.vue +1 -1
- package/src/modules/reports/controllers/reports.controller.js +17 -26
- package/src/modules/reports/models/report.model.js +39 -56
- package/src/modules/reports/reports.client.js +8 -8
- package/src/modules/reports/reports.server.js +17 -22
- package/src/modules/reports/routes/reports.routes.js +7 -28
- package/src/modules/reports/store/reports.js +15 -17
- package/src/modules/spots/components/blocks/CardSpot.vue +73 -58
- package/src/modules/spots/components/layouts/Spots.vue +3 -3
- package/src/modules/spots/components/pages/Map.vue +3 -3
- package/src/modules/spots/components/pages/SpotEdit.vue +1 -1
- package/src/modules/spots/controllers/queries/getIsOpenNowStage.js +49 -65
- package/src/modules/spots/controllers/spots.controller.js +25 -43
- package/src/modules/spots/models/spot.model.js +45 -52
- package/src/modules/spots/router/spots.js +22 -26
- package/src/modules/spots/routes/spots.routes.js +8 -16
- package/src/modules/spots/spots.client.js +6 -6
- package/src/modules/spots/spots.server.js +17 -20
- package/src/modules/spots/store/spots.js +11 -14
- package/src/modules/wallet/controllers/factories/payments.factory.js +15 -42
- package/src/modules/wallet/controllers/factories/rewards.factory.js +56 -134
- package/src/modules/wallet/controllers/routes/payments.routes.js +45 -80
- package/src/modules/wallet/controllers/routes/rewards.routes.js +10 -50
- package/src/modules/wallet/models/payment.model.js +26 -27
- package/src/modules/wallet/models/reward.model.js +3 -4
- package/src/modules/wallet/models/wallet.model.js +10 -9
- package/src/modules/wallet/views/router/payments.router.js +24 -23
- package/src/modules/wallet/views/store/payments.store.js +6 -6
- package/src/modules/wallet/views/store/wallet.store.js +28 -35
- package/src/modules/wallet/wallet.server.js +25 -27
- package/src/styles/typography.scss +24 -0
- package/dist/Media-DmnrxIEI.js +0 -1
- package/dist/_commonjsHelpers-CUmg6egw.mjs +0 -6
- package/dist/_commonjsHelpers-DHfMLFPC.js +0 -5
- package/dist/addMembersQuantity-DBfuUEx_.mjs +0 -113
- package/dist/addMembersQuantity-DxWjHK1K.js +0 -112
- package/dist/auth.server.mjs +0 -764
- package/dist/authJwt-CELQKF2s.js +0 -82
- package/dist/authJwt-DnXu3BFq.mjs +0 -83
- package/dist/builder.mjs +0 -1502
- package/dist/chats.server.mjs +0 -137
- package/dist/common.schema-C2m3O1XY.mjs +0 -20
- package/dist/common.schema-O0w_rDyC.js +0 -19
- package/dist/community.server.mjs +0 -1068
- package/dist/credentials.schema-BmOPv6FD.js +0 -16
- package/dist/credentials.schema-oOC8B5KL.mjs +0 -17
- package/dist/engagement.schema-DAiXsvh1.js +0 -33
- package/dist/engagement.schema-DnDD7Bn3.mjs +0 -34
- package/dist/events.server.mjs +0 -1060
- package/dist/files.server.mjs +0 -339
- package/dist/gallery.server.mjs +0 -337
- package/dist/globals.abac-Bn-4tbX8.js +0 -303
- package/dist/globals.abac-DZpTRxKR.mjs +0 -304
- package/dist/globals.cache-BT6q3vOf.mjs +0 -140
- package/dist/globals.cache-CwWvNGFQ.js +0 -139
- package/dist/globals.logger-BdjooLaD.js +0 -34
- package/dist/globals.logger-DusiFsxN.mjs +0 -35
- package/dist/globals.server.mjs +0 -453
- package/dist/globals.verifier-BdJxc8-8.mjs +0 -609
- package/dist/globals.verifier-CKYpYfQl.js +0 -608
- package/dist/index-BOmxJQ5W.js +0 -205
- package/dist/index-C_Fw0Umg.mjs +0 -206
- package/dist/mailing-D4kWlk3_.js +0 -93
- package/dist/mailing-DvCT5ijo.mjs +0 -94
- package/dist/main-DxWqDgs1.js +0 -11
- package/dist/martyrs/src/components/Chips/Chips.vue.cjs.map +0 -1
- package/dist/martyrs/src/components/Chips/Chips.vue.js.map +0 -1
- package/dist/martyrs/src/components/Dropdown/Dropdown.vue.cjs.map +0 -1
- package/dist/martyrs/src/components/Dropdown/Dropdown.vue.js.map +0 -1
- package/dist/martyrs/src/components/FieldTags/vue-tags-input.cjs +0 -292
- package/dist/martyrs/src/components/FieldTags/vue-tags-input.cjs.map +0 -1
- package/dist/martyrs/src/components/FieldTags/vue-tags-input.js +0 -292
- package/dist/martyrs/src/components/FieldTags/vue-tags-input.js.map +0 -1
- package/dist/martyrs/src/components/Menu/Menu.vue.cjs.map +0 -1
- package/dist/martyrs/src/components/Menu/Menu.vue.js.map +0 -1
- package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue.cjs +0 -450
- package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue.cjs.map +0 -1
- package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue.js +0 -450
- package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue.js.map +0 -1
- package/dist/martyrs/src/components/SelectMulti/multiselectMixin.cjs +0 -633
- package/dist/martyrs/src/components/SelectMulti/multiselectMixin.cjs.map +0 -1
- package/dist/martyrs/src/components/SelectMulti/multiselectMixin.js +0 -633
- package/dist/martyrs/src/components/SelectMulti/multiselectMixin.js.map +0 -1
- package/dist/martyrs/src/components/SelectMulti/pointerMixin.cjs +0 -117
- package/dist/martyrs/src/components/SelectMulti/pointerMixin.cjs.map +0 -1
- package/dist/martyrs/src/components/SelectMulti/pointerMixin.js +0 -117
- package/dist/martyrs/src/components/SelectMulti/pointerMixin.js.map +0 -1
- package/dist/martyrs/src/components/Table/TableCell.vue.cjs +0 -59
- package/dist/martyrs/src/components/Table/TableCell.vue.cjs.map +0 -1
- package/dist/martyrs/src/components/Table/TableCell.vue.js +0 -59
- package/dist/martyrs/src/components/Table/TableCell.vue.js.map +0 -1
- package/dist/martyrs/src/components/Tooltip/Tooltip.vue.js.map +0 -1
- package/dist/martyrs/src/modules/globals/views/plugins/AlertDialog.vue.cjs.map +0 -1
- package/dist/martyrs/src/modules/globals/views/plugins/AlertDialog.vue.js.map +0 -1
- package/dist/martyrs/src/modules/products/components/blocks/ImagesThumbnails.vue.cjs.map +0 -1
- package/dist/martyrs/src/modules/products/components/blocks/ImagesThumbnails.vue.js.map +0 -1
- package/dist/martyrs/src/modules/products/components/blocks/LeftoverPositions.vue.cjs +0 -65
- package/dist/martyrs/src/modules/products/components/blocks/LeftoverPositions.vue.cjs.map +0 -1
- package/dist/martyrs/src/modules/products/components/blocks/LeftoverPositions.vue.js +0 -65
- package/dist/martyrs/src/modules/products/components/blocks/LeftoverPositions.vue.js.map +0 -1
- package/dist/martyrs/src/modules/products/components/blocks/ListPositions.vue.cjs +0 -49
- package/dist/martyrs/src/modules/products/components/blocks/ListPositions.vue.cjs.map +0 -1
- package/dist/martyrs/src/modules/products/components/blocks/ListPositions.vue.js +0 -49
- package/dist/martyrs/src/modules/products/components/blocks/ListPositions.vue.js.map +0 -1
- package/dist/martyrs/src/modules/products/components/pages/EditLeftover.vue.cjs +0 -237
- package/dist/martyrs/src/modules/products/components/pages/EditLeftover.vue.cjs.map +0 -1
- package/dist/martyrs/src/modules/products/components/pages/EditLeftover.vue.js +0 -237
- package/dist/martyrs/src/modules/products/components/pages/EditLeftover.vue.js.map +0 -1
- package/dist/martyrs/src/modules/products/components/sections/EditModifications.vue.cjs +0 -152
- package/dist/martyrs/src/modules/products/components/sections/EditModifications.vue.cjs.map +0 -1
- package/dist/martyrs/src/modules/products/components/sections/EditModifications.vue.js +0 -152
- package/dist/martyrs/src/modules/products/components/sections/EditModifications.vue.js.map +0 -1
- package/dist/martyrs/src/modules/products/components/sections/EditProductInfo.vue.cjs +0 -120
- package/dist/martyrs/src/modules/products/components/sections/EditProductInfo.vue.cjs.map +0 -1
- package/dist/martyrs/src/modules/products/components/sections/EditProductInfo.vue.js +0 -120
- package/dist/martyrs/src/modules/products/components/sections/EditProductInfo.vue.js.map +0 -1
- package/dist/metadata.schema--tle-GU8.mjs +0 -282
- package/dist/metadata.schema-CUkLXZ2f.js +0 -281
- package/dist/notifications.server.mjs +0 -663
- package/dist/orders.server.mjs +0 -926
- package/dist/organizations.server.mjs +0 -1590
- package/dist/ownership.schema-CNCotD3D.mjs +0 -50
- package/dist/ownership.schema-MxfJlPtq.js +0 -49
- package/dist/pages.server.mjs +0 -178
- package/dist/products.server.mjs +0 -1381
- package/dist/profile.schema-BLSuV_VC.js +0 -27
- package/dist/profile.schema-BRuvQ7QV.mjs +0 -28
- package/dist/queryProcessor-CVKI651_.mjs +0 -314
- package/dist/queryProcessor-DSUqSk3I.js +0 -313
- package/dist/rents.server.mjs +0 -506
- package/dist/reports.server.mjs +0 -187
- package/dist/spots.server.mjs +0 -380
- package/dist/wallet.server.mjs +0 -705
- package/src/builder/rspack/rspack.config.server.js +0 -30
- package/src/components/FieldTags/vue-tags-input.js +0 -424
- package/src/components/SelectMulti/index.js +0 -7
- package/src/components/SelectMulti/multiselectMixin.js +0 -725
- package/src/components/SelectMulti/pointerMixin.js +0 -143
- package/src/modules/globals/views/core/event.js +0 -48
- package/src/modules/icons/logos/LogotypeNunito.vue +0 -12
- package/src/modules/integrations/openai/controllers/openai.controller.js +0 -89
- package/src/modules/products/components/blocks/EditFilters.vue +0 -56
- package/src/modules/products/components/blocks/LeftoverPositions.vue +0 -99
- package/src/modules/products/components/blocks/ListPositions.vue +0 -74
- package/src/modules/products/components/pages/EditLeftover.vue +0 -288
- package/src/modules/products/components/pages/Product.old.vue +0 -201
- package/src/modules/products/components/sections/EditModifications.vue +0 -92
- package/src/modules/products/components/sections/EditProductInfo.vue +0 -106
- package/src/modules/products/controllers/modifications.controller.js +0 -66
- /package/src/modules/globals/views/{plugins → components/blocks}/AlertDialog.vue +0 -0
- /package/src/modules/products/components/{blocks/Images360.vue → elements/Image360.vue} +0 -0
|
@@ -1,1155 +1,289 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
const controllerFactory = (db) => {
|
|
23
|
-
const Department = db.department;
|
|
24
|
-
const readOne = (req, res) => {
|
|
25
|
-
Department.findOne({ _id: req.params._id }).populate("members.user").populate("subdepartments").then((department) => {
|
|
26
|
-
if (!department) {
|
|
27
|
-
return res.status(404).send({ message: "Отдел не найден" });
|
|
28
|
-
}
|
|
29
|
-
res.send(department);
|
|
30
|
-
}).catch((err) => {
|
|
31
|
-
res.status(500).send({ message: err.message });
|
|
32
|
-
});
|
|
33
|
-
};
|
|
34
|
-
const read = (req, res) => {
|
|
35
|
-
let query = {};
|
|
36
|
-
let options = {};
|
|
37
|
-
if (req.query.organization) {
|
|
38
|
-
query.organization = new db.mongoose.Types.ObjectId(req.query.organization);
|
|
1
|
+
import { A as ABAC } from "./abac-BuL5pUZ4.js";
|
|
2
|
+
import { a as applyCredentialsSchema } from "./credentials.schema-C9FB2EyY.js";
|
|
3
|
+
import { a as applyOwnershipSchema } from "./ownership.schema-CCZX5vfw.js";
|
|
4
|
+
import { a as applyEngagementSchema } from "./engagement.schema-Dh1adRsn.js";
|
|
5
|
+
import { m as middlewareIndexFactory } from "./index-CsJwdsBW.js";
|
|
6
|
+
import { m as mailing } from "./mailing-C11EYWm-.js";
|
|
7
|
+
import { uuid } from "uuidv4";
|
|
8
|
+
import { q as queryProcessorGlobals } from "./queryProcessor-CVcLPEnv.js";
|
|
9
|
+
import { Types } from "mongoose";
|
|
10
|
+
import { g as globalsabac } from "./globals.abac-DBV_kaOq.js";
|
|
11
|
+
import { C as Cache } from "./globals.logger-Bf6rRU7j.js";
|
|
12
|
+
import { a as addUserStatusFields, b as addMembersQuantity } from "./addUserStatusFields-B8g3DAuZ.js";
|
|
13
|
+
import jwt from "jsonwebtoken";
|
|
14
|
+
import * as googleMapsServicesJs from "@googlemaps/google-maps-services-js";
|
|
15
|
+
import { V as Verifier, a as Validator } from "./globals.verifier-CWFz5Gh2.js";
|
|
16
|
+
const controllerFactory$2 = (db) => {
|
|
17
|
+
const Department = db.department;
|
|
18
|
+
const readOne = (req, res) => {
|
|
19
|
+
Department.findOne({ _id: req.params._id }).populate("members.user").populate("subdepartments").then((department) => {
|
|
20
|
+
if (!department) {
|
|
21
|
+
return res.status(404).send({ message: "Отдел не найден" });
|
|
39
22
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
if (!departments) {
|
|
45
|
-
return res.status(404).send({ message: "Departments not found" });
|
|
46
|
-
}
|
|
47
|
-
res.send(departments);
|
|
48
|
-
}).catch((err) => {
|
|
49
|
-
res.status(500).send({ message: err.message });
|
|
50
|
-
});
|
|
51
|
-
};
|
|
52
|
-
const create = async (req, res) => {
|
|
53
|
-
try {
|
|
54
|
-
const newDepartment = new Department({
|
|
55
|
-
...req.body,
|
|
56
|
-
organization: req.params._id
|
|
57
|
-
});
|
|
58
|
-
const data = await newDepartment.save();
|
|
59
|
-
res.send(data);
|
|
60
|
-
} catch (err) {
|
|
61
|
-
res.status(500).send({ message: err.message });
|
|
62
|
-
}
|
|
63
|
-
};
|
|
64
|
-
const update = (req, res) => {
|
|
65
|
-
Department.findOneAndUpdate({ _id: req.body._id }, req.body, { new: true }).then((department) => {
|
|
66
|
-
if (!department) {
|
|
67
|
-
return res.status(404).send({ message: "Department not found" });
|
|
68
|
-
}
|
|
69
|
-
res.send(department);
|
|
70
|
-
}).catch((err) => {
|
|
71
|
-
res.status(500).send({ message: err.message });
|
|
72
|
-
});
|
|
73
|
-
};
|
|
74
|
-
const deleteDepartment = (req, res) => {
|
|
75
|
-
Department.findOneAndRemove({ _id: req.body._id, organization: req.params._id }).then((department) => {
|
|
76
|
-
if (!department) {
|
|
77
|
-
return res.status(404).send({ message: "Department not found" });
|
|
78
|
-
}
|
|
79
|
-
res.send({ message: "Department deleted successfully" });
|
|
80
|
-
}).catch((err) => {
|
|
81
|
-
res.status(500).send({ message: err.message });
|
|
82
|
-
});
|
|
83
|
-
};
|
|
84
|
-
return {
|
|
85
|
-
readOne,
|
|
86
|
-
read,
|
|
87
|
-
create,
|
|
88
|
-
update,
|
|
89
|
-
delete: deleteDepartment
|
|
90
|
-
};
|
|
91
|
-
};
|
|
92
|
-
departments_controller = controllerFactory;
|
|
93
|
-
return departments_controller;
|
|
94
|
-
}
|
|
95
|
-
var queryProcessorOrganizations;
|
|
96
|
-
var hasRequiredQueryProcessorOrganizations;
|
|
97
|
-
function requireQueryProcessorOrganizations() {
|
|
98
|
-
if (hasRequiredQueryProcessorOrganizations) return queryProcessorOrganizations;
|
|
99
|
-
hasRequiredQueryProcessorOrganizations = 1;
|
|
100
|
-
const ObjectId = require$$0.Types.ObjectId;
|
|
101
|
-
const { Client } = require$$1;
|
|
102
|
-
const client = new Client({});
|
|
103
|
-
const getRequestedLookups = (query) => query.lookup ? Array.isArray(query.lookup) ? query.lookup : [query.lookup] : [];
|
|
104
|
-
const getLookupStages = (requestedLookups, configs) => {
|
|
105
|
-
if (!requestedLookups) return [];
|
|
106
|
-
const lookupsArray = Array.isArray(requestedLookups) ? requestedLookups : requestedLookups.split(",");
|
|
107
|
-
return lookupsArray.map((lookup) => configs[lookup]).filter(Boolean).flatMap((config) => [
|
|
108
|
-
{ $lookup: config.lookup },
|
|
109
|
-
// Оберните lookup в объект с $lookup
|
|
110
|
-
...config.additionalStages || []
|
|
111
|
-
]);
|
|
23
|
+
res.send(department);
|
|
24
|
+
}).catch((err) => {
|
|
25
|
+
res.status(500).send({ message: err.message });
|
|
26
|
+
});
|
|
112
27
|
};
|
|
113
|
-
const
|
|
114
|
-
|
|
115
|
-
|
|
28
|
+
const read = (req, res) => {
|
|
29
|
+
let query = {};
|
|
30
|
+
let options = {};
|
|
31
|
+
if (req.query.organization) {
|
|
32
|
+
query.organization = new db.mongoose.Types.ObjectId(req.query.organization);
|
|
116
33
|
}
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
$geoWithin: {
|
|
124
|
-
$centerSphere: [[location.coordinates[0], location.coordinates[1]], radius]
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
}
|
|
34
|
+
if (req.query.hidden) {
|
|
35
|
+
query.hidden = req.query.hidden;
|
|
36
|
+
}
|
|
37
|
+
Department.find(query, null, options).populate("members.user").populate("subdepartments").then((departments) => {
|
|
38
|
+
if (!departments) {
|
|
39
|
+
return res.status(404).send({ message: "Departments not found" });
|
|
128
40
|
}
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
};
|
|
134
|
-
};
|
|
135
|
-
const getRadius = (query) => {
|
|
136
|
-
if (query.locationRadius) return parseFloat(query.locationRadius) / 6378.1;
|
|
137
|
-
if (query.city) return 25 / 6378.1;
|
|
138
|
-
if (query.state) return 50 / 6378.1;
|
|
139
|
-
return null;
|
|
41
|
+
res.send(departments);
|
|
42
|
+
}).catch((err) => {
|
|
43
|
+
res.status(500).send({ message: err.message });
|
|
44
|
+
});
|
|
140
45
|
};
|
|
141
|
-
const
|
|
142
|
-
const resolveLocation = async (query) => {
|
|
143
|
-
if (query.location) {
|
|
144
|
-
const parsedLocation = typeof query.location === "string" ? JSON.parse(query.location) : query.location;
|
|
145
|
-
const coordinates = parsedLocation.lng ? [parsedLocation.lng, parsedLocation.lat] : parsedLocation.coordinates;
|
|
146
|
-
return { coordinates: coordinates.map((coord) => parseFloat(coord)) };
|
|
147
|
-
}
|
|
148
|
-
const searchString = [query.address, query.city, query.state, query.country].filter(Boolean).join(", ");
|
|
46
|
+
const create = async (req, res) => {
|
|
149
47
|
try {
|
|
150
|
-
const
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
key: process.env.GOOGLE_MAPS_API_KEY
|
|
154
|
-
}
|
|
48
|
+
const newDepartment = new Department({
|
|
49
|
+
...req.body,
|
|
50
|
+
organization: req.params._id
|
|
155
51
|
});
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
}
|
|
159
|
-
const { lng, lat } = geoResponse.data.results[0].geometry.location;
|
|
160
|
-
return { coordinates: [lng, lat] };
|
|
52
|
+
const data = await newDepartment.save();
|
|
53
|
+
res.send(data);
|
|
161
54
|
} catch (err) {
|
|
162
|
-
|
|
55
|
+
res.status(500).send({ message: err.message });
|
|
163
56
|
}
|
|
164
57
|
};
|
|
165
|
-
const
|
|
166
|
-
{
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
$map: {
|
|
170
|
-
input: "$spots",
|
|
171
|
-
as: "spot",
|
|
172
|
-
in: {
|
|
173
|
-
$mergeObjects: [
|
|
174
|
-
"$$spot",
|
|
175
|
-
{
|
|
176
|
-
distance: {
|
|
177
|
-
$function: {
|
|
178
|
-
body: `function(spotCoords, userCoords, isMiles) {
|
|
179
|
-
function toRad(x) {
|
|
180
|
-
return x * Math.PI / 180;
|
|
181
|
-
}
|
|
182
|
-
var lon1 = spotCoords[0];
|
|
183
|
-
var lat1 = spotCoords[1];
|
|
184
|
-
var lon2 = userCoords[0];
|
|
185
|
-
var lat2 = userCoords[1];
|
|
186
|
-
var R = 6371;
|
|
187
|
-
if (isMiles) R = 3959;
|
|
188
|
-
var x1 = lat2 - lat1;
|
|
189
|
-
var dLat = toRad(x1);
|
|
190
|
-
var x2 = lon2 - lon1;
|
|
191
|
-
var dLon = toRad(x2);
|
|
192
|
-
var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
|
|
193
|
-
Math.cos(toRad(lat1)) * Math.cos(toRad(lat2)) *
|
|
194
|
-
Math.sin(dLon / 2) * Math.sin(dLon / 2);
|
|
195
|
-
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
|
|
196
|
-
var d = R * c;
|
|
197
|
-
return d;
|
|
198
|
-
}`,
|
|
199
|
-
args: ["$$spot.location.coordinates", location.coordinates, false],
|
|
200
|
-
lang: "js"
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
]
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
}
|
|
58
|
+
const update = (req, res) => {
|
|
59
|
+
Department.findOneAndUpdate({ _id: req.body._id }, req.body, { new: true }).then((department) => {
|
|
60
|
+
if (!department) {
|
|
61
|
+
return res.status(404).send({ message: "Department not found" });
|
|
208
62
|
}
|
|
209
|
-
|
|
210
|
-
{
|
|
211
|
-
|
|
212
|
-
distance: { $min: "$spots.distance" },
|
|
213
|
-
distanceExist: {
|
|
214
|
-
$cond: {
|
|
215
|
-
if: { $eq: [{ $type: "$distance" }, "double"] },
|
|
216
|
-
then: true,
|
|
217
|
-
else: false
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
];
|
|
223
|
-
const getPriceConditions = (prices) => {
|
|
224
|
-
if (!prices) return [];
|
|
225
|
-
const priceRanges = prices.split(",");
|
|
226
|
-
const priceConditions = priceRanges.map((priceRange) => {
|
|
227
|
-
if (priceRange.startsWith("<")) return { "products.price": { $lt: parseInt(priceRange.slice(1)) } };
|
|
228
|
-
if (priceRange.startsWith(">")) return { "products.price": { $gt: parseInt(priceRange.slice(1)) } };
|
|
229
|
-
const [min, max] = priceRange.split("-").map(Number);
|
|
230
|
-
return { "products.price": { $gte: min, $lte: max } };
|
|
63
|
+
res.send(department);
|
|
64
|
+
}).catch((err) => {
|
|
65
|
+
res.status(500).send({ message: err.message });
|
|
231
66
|
});
|
|
232
|
-
return priceConditions.length > 0 ? [{ $match: { $or: priceConditions } }] : [];
|
|
233
|
-
};
|
|
234
|
-
const getContainConditions = (contain) => {
|
|
235
|
-
if (!contain) return [];
|
|
236
|
-
const conditions = contain.map((property) => ({
|
|
237
|
-
[property]: { $exists: true, $not: { $size: 0 } }
|
|
238
|
-
}));
|
|
239
|
-
return conditions.length > 0 ? [{ $match: { $and: conditions } }] : [];
|
|
240
67
|
};
|
|
241
|
-
const
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
...query.member ? [{
|
|
246
|
-
memberships: {
|
|
247
|
-
$elemMatch: {
|
|
248
|
-
user: new ObjectId(query.member),
|
|
249
|
-
role: "member"
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
}] : [],
|
|
253
|
-
...query.subscriber ? [{
|
|
254
|
-
memberships: {
|
|
255
|
-
$elemMatch: {
|
|
256
|
-
user: new ObjectId(query.subscriber),
|
|
257
|
-
role: "subscriber"
|
|
258
|
-
}
|
|
68
|
+
const deleteDepartment = (req, res) => {
|
|
69
|
+
Department.findOneAndRemove({ _id: req.body._id, organization: req.params._id }).then((department) => {
|
|
70
|
+
if (!department) {
|
|
71
|
+
return res.status(404).send({ message: "Department not found" });
|
|
259
72
|
}
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
const getPostableConditions = (postableId) => {
|
|
265
|
-
if (!postableId) return [];
|
|
266
|
-
return [{
|
|
267
|
-
$match: {
|
|
268
|
-
$or: [
|
|
269
|
-
{ owner: new ObjectId(postableId) },
|
|
270
|
-
{
|
|
271
|
-
$and: [
|
|
272
|
-
{ types: { $elemMatch: { $eq: "public" } } },
|
|
273
|
-
{
|
|
274
|
-
memberships: {
|
|
275
|
-
$elemMatch: {
|
|
276
|
-
user: new ObjectId(postableId)
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
]
|
|
281
|
-
},
|
|
282
|
-
{
|
|
283
|
-
$and: [
|
|
284
|
-
{ types: { $elemMatch: { $in: ["exclusive", "hidden"] } } },
|
|
285
|
-
{
|
|
286
|
-
memberships: {
|
|
287
|
-
$elemMatch: {
|
|
288
|
-
user: new ObjectId(postableId),
|
|
289
|
-
role: { $ne: "subscriber" }
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
]
|
|
294
|
-
}
|
|
295
|
-
]
|
|
296
|
-
}
|
|
297
|
-
}];
|
|
73
|
+
res.send({ message: "Department deleted successfully" });
|
|
74
|
+
}).catch((err) => {
|
|
75
|
+
res.status(500).send({ message: err.message });
|
|
76
|
+
});
|
|
298
77
|
};
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
getLocationStages,
|
|
306
|
-
getDistanceStages,
|
|
307
|
-
getBasicMatchConditions,
|
|
308
|
-
getPostableConditions
|
|
78
|
+
return {
|
|
79
|
+
readOne,
|
|
80
|
+
read,
|
|
81
|
+
create,
|
|
82
|
+
update,
|
|
83
|
+
delete: deleteDepartment
|
|
309
84
|
};
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
hasRequiredLookupConfigs = 1;
|
|
317
|
-
const lookupConfigs = {
|
|
318
|
-
products: {
|
|
319
|
-
lookup: {
|
|
320
|
-
from: "products",
|
|
321
|
-
localField: "_id",
|
|
322
|
-
foreignField: "owner.target",
|
|
323
|
-
as: "products"
|
|
324
|
-
},
|
|
325
|
-
additionalStages: [{
|
|
326
|
-
$addFields: { numberOfProducts: { $size: "$products" } }
|
|
327
|
-
}]
|
|
85
|
+
};
|
|
86
|
+
const accessesSchema = {
|
|
87
|
+
categories: {
|
|
88
|
+
create: {
|
|
89
|
+
type: Boolean,
|
|
90
|
+
default: false
|
|
328
91
|
},
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
localField: "_id",
|
|
333
|
-
foreignField: "owner.target",
|
|
334
|
-
as: "blogposts"
|
|
335
|
-
}
|
|
92
|
+
read: {
|
|
93
|
+
type: Boolean,
|
|
94
|
+
default: false
|
|
336
95
|
},
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
localField: "_id",
|
|
341
|
-
foreignField: "organization",
|
|
342
|
-
as: "departments"
|
|
343
|
-
}
|
|
96
|
+
edit: {
|
|
97
|
+
type: Boolean,
|
|
98
|
+
default: false
|
|
344
99
|
},
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
100
|
+
delete: {
|
|
101
|
+
type: Boolean,
|
|
102
|
+
default: false
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
rents: {
|
|
106
|
+
create: {
|
|
107
|
+
type: Boolean,
|
|
108
|
+
default: false
|
|
352
109
|
},
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
110
|
+
read: {
|
|
111
|
+
type: Boolean,
|
|
112
|
+
default: false
|
|
113
|
+
},
|
|
114
|
+
edit: {
|
|
115
|
+
type: Boolean,
|
|
116
|
+
default: false
|
|
117
|
+
},
|
|
118
|
+
delete: {
|
|
119
|
+
type: Boolean,
|
|
120
|
+
default: false
|
|
360
121
|
}
|
|
361
|
-
}
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
var hasRequiredOrganizations_controller;
|
|
367
|
-
function requireOrganizations_controller() {
|
|
368
|
-
if (hasRequiredOrganizations_controller) return organizations_controller;
|
|
369
|
-
hasRequiredOrganizations_controller = 1;
|
|
370
|
-
const jwt = require$$0$1;
|
|
371
|
-
const Cache = globals_cache.requireGlobals_cache();
|
|
372
|
-
const queryProcessorGlobals = queryProcessor.requireQueryProcessor();
|
|
373
|
-
const {
|
|
374
|
-
getRequestedLookups,
|
|
375
|
-
getLookupStages,
|
|
376
|
-
getPostableConditions,
|
|
377
|
-
getPriceConditions,
|
|
378
|
-
getContainConditions,
|
|
379
|
-
getLocationStages,
|
|
380
|
-
getDistanceStages,
|
|
381
|
-
getBasicMatchConditions
|
|
382
|
-
} = requireQueryProcessorOrganizations();
|
|
383
|
-
const lookupConfigs = requireLookupConfigs();
|
|
384
|
-
const addUserStatusFields = addMembersQuantity.requireAddUserStatusFields();
|
|
385
|
-
const addMembersQuantity$1 = addMembersQuantity.requireAddMembersQuantity();
|
|
386
|
-
const controllerFactory = (db) => {
|
|
387
|
-
const Organization = db.organization;
|
|
388
|
-
const Department = db.department;
|
|
389
|
-
const Membership = db.membership;
|
|
390
|
-
const cache = new Cache({ ttlSeconds: 60 * 5 });
|
|
391
|
-
const read = async (req, res) => {
|
|
392
|
-
console.log("controller query", req.query);
|
|
393
|
-
try {
|
|
394
|
-
const cacheKey = JSON.stringify(req.query);
|
|
395
|
-
let cachedResult = await cache.get(cacheKey);
|
|
396
|
-
if (cachedResult) {
|
|
397
|
-
return res.status(200).send(cachedResult);
|
|
398
|
-
}
|
|
399
|
-
const requestedLookups = getRequestedLookups(req.query);
|
|
400
|
-
const matchConditions = getBasicMatchConditions(req.query);
|
|
401
|
-
const stages = [
|
|
402
|
-
...getLookupStages(requestedLookups, lookupConfigs),
|
|
403
|
-
...getPostableConditions(req.query.postable),
|
|
404
|
-
...getContainConditions(req.query.contain),
|
|
405
|
-
...queryProcessorGlobals.getSearchOptions(
|
|
406
|
-
req.query.search,
|
|
407
|
-
{ fields: requestedLookups.includes("products") ? ["profile.name", "products.name"] : ["profile.name"] }
|
|
408
|
-
),
|
|
409
|
-
...requestedLookups.includes("products") && req.query.prices ? getPriceConditions(req.query.prices) : [],
|
|
410
|
-
...requestedLookups.includes("spots") ? (await getLocationStages(req.query)).stages : [],
|
|
411
|
-
...requestedLookups.includes("memberships") ? [
|
|
412
|
-
addUserStatusFields(req.query.user),
|
|
413
|
-
addMembersQuantity$1(req.query.user)
|
|
414
|
-
] : [],
|
|
415
|
-
...matchConditions.length > 0 ? [{ $match: { $and: matchConditions } }] : [],
|
|
416
|
-
...queryProcessorGlobals.getSortingOptions(req.query.sortParam, req.query.sortOrder),
|
|
417
|
-
...queryProcessorGlobals.getPaginationOptions(req.query.skip, req.query.limit)
|
|
418
|
-
].filter(Boolean);
|
|
419
|
-
console.log(JSON.stringify(stages, null, 2));
|
|
420
|
-
const organizations = await Organization.aggregate(stages);
|
|
421
|
-
for (const org of organizations) {
|
|
422
|
-
const orgTag = `organization_${org._id}`;
|
|
423
|
-
await cache.setWithTags(cacheKey, organizations, [orgTag, "organizations"]);
|
|
424
|
-
}
|
|
425
|
-
res.status(200).send(organizations);
|
|
426
|
-
} catch (err) {
|
|
427
|
-
console.error(err);
|
|
428
|
-
res.status(500).send({ message: err.message });
|
|
429
|
-
}
|
|
430
|
-
};
|
|
431
|
-
const create = async (req, res) => {
|
|
432
|
-
if (req.body._id === null) {
|
|
433
|
-
delete req.body._id;
|
|
434
|
-
}
|
|
435
|
-
try {
|
|
436
|
-
const organization = new Organization(req.body);
|
|
437
|
-
const savedOrganization = await organization.save();
|
|
438
|
-
const membership = new Membership({
|
|
439
|
-
user: savedOrganization.owner,
|
|
440
|
-
type: "organization",
|
|
441
|
-
target: savedOrganization._id,
|
|
442
|
-
role: "owner",
|
|
443
|
-
label: "owner"
|
|
444
|
-
});
|
|
445
|
-
const savedMembership = await membership.save();
|
|
446
|
-
const orgTag = `organization_${savedOrganization._id}`;
|
|
447
|
-
await cache.delByTag(orgTag);
|
|
448
|
-
const organizationObject = savedOrganization.toObject();
|
|
449
|
-
const newCacheKey = JSON.stringify({ id: organizationObject._id });
|
|
450
|
-
await cache.setWithTags(newCacheKey, [organizationObject], [orgTag, "organizations"]);
|
|
451
|
-
res.status(201).json(savedOrganization);
|
|
452
|
-
} catch (error) {
|
|
453
|
-
console.error("Error:", error);
|
|
454
|
-
res.status(500).send(error);
|
|
455
|
-
}
|
|
456
|
-
};
|
|
457
|
-
const update = async (req, res) => {
|
|
458
|
-
try {
|
|
459
|
-
const organizationId = req.params._id;
|
|
460
|
-
const updatedData = req.body;
|
|
461
|
-
const organization = await Organization.findByIdAndUpdate(organizationId, updatedData, {
|
|
462
|
-
new: true,
|
|
463
|
-
runValidators: true
|
|
464
|
-
});
|
|
465
|
-
if (!organization) {
|
|
466
|
-
return res.status(404).json({ message: "Organization not found" });
|
|
467
|
-
}
|
|
468
|
-
const orgTag = `organization_${organizationId}`;
|
|
469
|
-
await cache.delByTag(orgTag);
|
|
470
|
-
const organizationObject = organization.toObject();
|
|
471
|
-
const updateCacheKey = JSON.stringify({ _id: organizationId });
|
|
472
|
-
await cache.setWithTags(updateCacheKey, [organizationObject], [orgTag, "organizations"]);
|
|
473
|
-
res.status(200).json({ message: "Organization updated successfully", organization });
|
|
474
|
-
} catch (error) {
|
|
475
|
-
res.status(500).json({ error: error.message });
|
|
476
|
-
}
|
|
477
|
-
};
|
|
478
|
-
const deleteOrganization = async (req, res) => {
|
|
479
|
-
try {
|
|
480
|
-
const organization = await Organization.findOneAndRemove({ _id: req.params._id });
|
|
481
|
-
if (!organization) {
|
|
482
|
-
return res.status(404).send({ message: "Organization not found" });
|
|
483
|
-
}
|
|
484
|
-
await Membership.deleteMany({ target: req.params._id });
|
|
485
|
-
const newToken = jwt.sign({
|
|
486
|
-
_id: req.userId,
|
|
487
|
-
// Предполагаю, что req.userId доступен
|
|
488
|
-
organization: null
|
|
489
|
-
}, process.env.SECRET_KEY, {
|
|
490
|
-
expiresIn: 86400
|
|
491
|
-
// 24 hours
|
|
492
|
-
});
|
|
493
|
-
const orgTag = `organization_${req.params._id}`;
|
|
494
|
-
await cache.delByTag(orgTag);
|
|
495
|
-
res.send({ newToken });
|
|
496
|
-
} catch (err) {
|
|
497
|
-
res.status(500).send({ message: err.message });
|
|
498
|
-
}
|
|
499
|
-
};
|
|
500
|
-
const checkAccesses = async (req, res) => {
|
|
501
|
-
try {
|
|
502
|
-
const uid = new db.mongoose.Types.ObjectId(req.userId);
|
|
503
|
-
const cacheKey = `accesses_${uid.toString()}`;
|
|
504
|
-
const cachedResult = await cache.get(cacheKey);
|
|
505
|
-
if (cachedResult) {
|
|
506
|
-
return res.status(200).json(cachedResult);
|
|
507
|
-
}
|
|
508
|
-
const depts = await Department.find({ "members.user": uid }).lean();
|
|
509
|
-
const ownedOrgs = await Organization.find({ owner: uid }).lean();
|
|
510
|
-
const ownedOrgIds = ownedOrgs.map((org) => org._id.toString());
|
|
511
|
-
const accesses = {};
|
|
512
|
-
const processAccesses = (orgId, isOwner, deptAccesses) => {
|
|
513
|
-
if (!accesses[orgId]) {
|
|
514
|
-
accesses[orgId] = { organization: orgId, rights: {} };
|
|
515
|
-
}
|
|
516
|
-
const rights = accesses[orgId].rights;
|
|
517
|
-
const defaultAccesses = new Department().accesses;
|
|
518
|
-
const accessData = isOwner ? defaultAccesses : deptAccesses;
|
|
519
|
-
Object.keys(accessData).forEach((key) => {
|
|
520
|
-
if (!rights[key]) {
|
|
521
|
-
rights[key] = {};
|
|
522
|
-
}
|
|
523
|
-
const accessRights = accessData[key];
|
|
524
|
-
Object.entries(accessRights).forEach(([right, value]) => {
|
|
525
|
-
rights[key][right] = isOwner || rights[key][right] || value;
|
|
526
|
-
});
|
|
527
|
-
});
|
|
528
|
-
};
|
|
529
|
-
const orgDepts = depts.reduce((acc, dept) => {
|
|
530
|
-
const orgId = dept.organization.toString();
|
|
531
|
-
if (!acc[orgId]) {
|
|
532
|
-
acc[orgId] = [];
|
|
533
|
-
}
|
|
534
|
-
acc[orgId].push(dept);
|
|
535
|
-
return acc;
|
|
536
|
-
}, {});
|
|
537
|
-
Object.entries(orgDepts).forEach(([orgId, departments]) => {
|
|
538
|
-
const combinedAccesses = departments.reduce((acc, dept) => {
|
|
539
|
-
Object.entries(dept.accesses).forEach(([key, rights]) => {
|
|
540
|
-
if (!acc[key]) {
|
|
541
|
-
acc[key] = {};
|
|
542
|
-
}
|
|
543
|
-
Object.entries(rights).forEach(([right, value]) => {
|
|
544
|
-
acc[key][right] = acc[key][right] || value;
|
|
545
|
-
});
|
|
546
|
-
});
|
|
547
|
-
return acc;
|
|
548
|
-
}, {});
|
|
549
|
-
processAccesses(orgId, false, combinedAccesses);
|
|
550
|
-
});
|
|
551
|
-
ownedOrgIds.forEach((orgId) => {
|
|
552
|
-
processAccesses(orgId, true, {});
|
|
553
|
-
});
|
|
554
|
-
const accessArray = Object.values(accesses);
|
|
555
|
-
const userTag = `access_${uid.toString()}`;
|
|
556
|
-
await cache.setWithTags(cacheKey, accessArray, [userTag, "accesses"]);
|
|
557
|
-
res.status(200).json(accessArray);
|
|
558
|
-
} catch (err) {
|
|
559
|
-
console.error("Error getting accesses:", err);
|
|
560
|
-
res.status(500).json({ message: "Internal server error" });
|
|
561
|
-
}
|
|
562
|
-
};
|
|
563
|
-
return {
|
|
564
|
-
fetch,
|
|
565
|
-
read,
|
|
566
|
-
create,
|
|
567
|
-
update,
|
|
568
|
-
delete: deleteOrganization,
|
|
569
|
-
// Map the method to 'delete' key
|
|
570
|
-
checkAccesses
|
|
571
|
-
};
|
|
572
|
-
};
|
|
573
|
-
organizations_controller = controllerFactory;
|
|
574
|
-
return organizations_controller;
|
|
575
|
-
}
|
|
576
|
-
var memberships_controller;
|
|
577
|
-
var hasRequiredMemberships_controller;
|
|
578
|
-
function requireMemberships_controller() {
|
|
579
|
-
if (hasRequiredMemberships_controller) return memberships_controller;
|
|
580
|
-
hasRequiredMemberships_controller = 1;
|
|
581
|
-
const ObjectId = require$$0.Types.ObjectId;
|
|
582
|
-
const queryProcessorGlobals = queryProcessor.requireQueryProcessor();
|
|
583
|
-
const controllerFactory = (db) => {
|
|
584
|
-
const Membership = db.membership;
|
|
585
|
-
const Department = db.department;
|
|
586
|
-
const read = async (req, res) => {
|
|
587
|
-
try {
|
|
588
|
-
let search = req.query.search;
|
|
589
|
-
let regexPattern = "";
|
|
590
|
-
if (search) {
|
|
591
|
-
search = search.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&");
|
|
592
|
-
const parts = search.split(".");
|
|
593
|
-
if (parts.length === 2) {
|
|
594
|
-
regexPattern = parts.join("\\.");
|
|
595
|
-
} else {
|
|
596
|
-
regexPattern = search;
|
|
597
|
-
}
|
|
598
|
-
}
|
|
599
|
-
const memberships = await Membership.aggregate([
|
|
600
|
-
{
|
|
601
|
-
$lookup: {
|
|
602
|
-
from: "users",
|
|
603
|
-
localField: "user",
|
|
604
|
-
foreignField: "_id",
|
|
605
|
-
as: "user"
|
|
606
|
-
}
|
|
607
|
-
},
|
|
608
|
-
{
|
|
609
|
-
$match: {
|
|
610
|
-
...req.query.user && { user: new ObjectId(req.query.user) },
|
|
611
|
-
...req.query.type && { type: req.query.type },
|
|
612
|
-
...req.query.target && { target: new ObjectId(req.query.target) },
|
|
613
|
-
...req.query.role && { role: { $in: req.query.role } },
|
|
614
|
-
...req.query.search && {
|
|
615
|
-
$or: [
|
|
616
|
-
{ "user.profile.name": { $regex: regexPattern, $options: "i" } },
|
|
617
|
-
{ "user.email": { $regex: regexPattern, $options: "i" } },
|
|
618
|
-
{ "user.phone": { $regex: regexPattern, $options: "i" } }
|
|
619
|
-
]
|
|
620
|
-
}
|
|
621
|
-
}
|
|
622
|
-
},
|
|
623
|
-
{
|
|
624
|
-
$unwind: "$user"
|
|
625
|
-
},
|
|
626
|
-
// Pagination
|
|
627
|
-
...queryProcessorGlobals.getSortingOptions(
|
|
628
|
-
req.query.sortParam,
|
|
629
|
-
req.query.sortOrder
|
|
630
|
-
),
|
|
631
|
-
...queryProcessorGlobals.getPaginationOptions(
|
|
632
|
-
req.query.skip,
|
|
633
|
-
req.query.limit
|
|
634
|
-
)
|
|
635
|
-
]);
|
|
636
|
-
if (!memberships) {
|
|
637
|
-
return res.status(404).send({ errorCode: "MEMBERSHIPS_NOT_FOUND" });
|
|
638
|
-
}
|
|
639
|
-
res.send(memberships);
|
|
640
|
-
} catch (err) {
|
|
641
|
-
console.log(err);
|
|
642
|
-
res.status(500).send({ errorCode: "SERVER_ERROR" });
|
|
643
|
-
}
|
|
644
|
-
};
|
|
645
|
-
const create = async (req, res) => {
|
|
646
|
-
const newMembership = new Membership({
|
|
647
|
-
user: req.body.user,
|
|
648
|
-
type: req.body.type,
|
|
649
|
-
target: req.body.target,
|
|
650
|
-
role: req.body.role
|
|
651
|
-
});
|
|
652
|
-
try {
|
|
653
|
-
const data = await newMembership.save();
|
|
654
|
-
res.send(data);
|
|
655
|
-
} catch (err) {
|
|
656
|
-
console.log(err);
|
|
657
|
-
res.status(500).send({ errorCode: "SERVER_ERROR" });
|
|
658
|
-
}
|
|
659
|
-
};
|
|
660
|
-
const update = async (req, res) => {
|
|
661
|
-
try {
|
|
662
|
-
const membership = await Membership.findByIdAndUpdate(req.body._id, req.body, { new: true });
|
|
663
|
-
if (!membership) {
|
|
664
|
-
return res.status(404).send({ errorCode: "MEMBERSHIP_NOT_FOUND" });
|
|
665
|
-
}
|
|
666
|
-
res.send(membership);
|
|
667
|
-
} catch (err) {
|
|
668
|
-
res.status(500).send({ errorCode: "SERVER_ERROR" });
|
|
669
|
-
}
|
|
670
|
-
};
|
|
671
|
-
const deleteMembership = async (req, res) => {
|
|
672
|
-
const { _id, type, target, user, role } = req.body;
|
|
673
|
-
try {
|
|
674
|
-
const membership = _id ? await Membership.findOneAndDelete({ _id: new ObjectId(_id) }) : await Membership.findOneAndDelete({ type, target, user, role });
|
|
675
|
-
if (!membership) {
|
|
676
|
-
return res.status(404).send({ errorCode: "MEMBERSHIP_NOT_FOUND" });
|
|
677
|
-
}
|
|
678
|
-
if (membership.type === "organization") {
|
|
679
|
-
await Department.updateMany(
|
|
680
|
-
{ organization: target },
|
|
681
|
-
{ $pull: { members: { user } } }
|
|
682
|
-
);
|
|
683
|
-
}
|
|
684
|
-
res.status(200).send(membership);
|
|
685
|
-
} catch (error) {
|
|
686
|
-
console.log(error);
|
|
687
|
-
res.status(500).send({ errorCode: "SERVER_ERROR" });
|
|
688
|
-
}
|
|
689
|
-
};
|
|
690
|
-
return {
|
|
691
|
-
read,
|
|
692
|
-
create,
|
|
693
|
-
update,
|
|
694
|
-
deleteMembership
|
|
695
|
-
};
|
|
696
|
-
};
|
|
697
|
-
memberships_controller = controllerFactory;
|
|
698
|
-
return memberships_controller;
|
|
699
|
-
}
|
|
700
|
-
var invites_controller;
|
|
701
|
-
var hasRequiredInvites_controller;
|
|
702
|
-
function requireInvites_controller() {
|
|
703
|
-
if (hasRequiredInvites_controller) return invites_controller;
|
|
704
|
-
hasRequiredInvites_controller = 1;
|
|
705
|
-
const { uuid } = require$$0$2;
|
|
706
|
-
const { sendEmail, sendSms } = mailing.requireMailing();
|
|
707
|
-
const сontrollerFactory = (db) => {
|
|
708
|
-
const User = db.user;
|
|
709
|
-
const Invite = db.invite;
|
|
710
|
-
const Membership = db.membership;
|
|
711
|
-
const getOneByCode = async (req, res) => {
|
|
712
|
-
try {
|
|
713
|
-
const invite = await Invite.findOne({ code: req.params._id });
|
|
714
|
-
if (!invite) {
|
|
715
|
-
return res.status(404).send({ message: "Приглашение не найдено" });
|
|
716
|
-
}
|
|
717
|
-
res.send(invite);
|
|
718
|
-
} catch (err) {
|
|
719
|
-
res.status(500).send({ message: err.message });
|
|
720
|
-
}
|
|
721
|
-
};
|
|
722
|
-
const read = async (req, res) => {
|
|
723
|
-
try {
|
|
724
|
-
const invites = await Invite.find({ "owner.target": req.params._id });
|
|
725
|
-
if (!invites || invites.length === 0) {
|
|
726
|
-
return res.status(200).send([]);
|
|
727
|
-
}
|
|
728
|
-
res.send(invites);
|
|
729
|
-
} catch (err) {
|
|
730
|
-
res.status(500).send({ message: err.message });
|
|
731
|
-
}
|
|
732
|
-
};
|
|
733
|
-
const create = async (req, res) => {
|
|
734
|
-
const creator = req.body.creator;
|
|
735
|
-
const owner = req.body.owner;
|
|
736
|
-
const list = req.body.invites;
|
|
737
|
-
const createdInvites = [];
|
|
738
|
-
const createdMemberships = [];
|
|
739
|
-
try {
|
|
740
|
-
for (let invite of list) {
|
|
741
|
-
let user = null;
|
|
742
|
-
if (!invite || !invite.contact) {
|
|
743
|
-
continue;
|
|
744
|
-
}
|
|
745
|
-
if (invite.contact.includes("@")) {
|
|
746
|
-
user = await User.findOne({ email: invite.contact });
|
|
747
|
-
} else {
|
|
748
|
-
user = await User.findOne({ phone: invite.contact });
|
|
749
|
-
}
|
|
750
|
-
if (user) {
|
|
751
|
-
const membership = new Membership({
|
|
752
|
-
user: user._id,
|
|
753
|
-
type: "organization",
|
|
754
|
-
target: req.body.owner.target,
|
|
755
|
-
role: "member",
|
|
756
|
-
label: "member"
|
|
757
|
-
});
|
|
758
|
-
const savedMembership = await membership.save();
|
|
759
|
-
createdMemberships.push(savedMembership);
|
|
760
|
-
} else {
|
|
761
|
-
const newInvite = new Invite({
|
|
762
|
-
code: uuid(),
|
|
763
|
-
creator,
|
|
764
|
-
owner,
|
|
765
|
-
role: "member",
|
|
766
|
-
email: invite.contact.includes("@") ? invite.contact : null,
|
|
767
|
-
phone: !invite.contact.includes("@") ? invite.contact : null
|
|
768
|
-
});
|
|
769
|
-
const savedInvite = await newInvite.save();
|
|
770
|
-
createdInvites.push(savedInvite);
|
|
771
|
-
if (savedInvite.email !== null) {
|
|
772
|
-
const to = savedInvite.email;
|
|
773
|
-
const subject = "You have been added to the organization";
|
|
774
|
-
const text = `You have been invited to join an organization on ${process.env.APP_NAME}! Use this link to register: ${process.env.API_URL}/auth/invite?inviteCode=${newInvite.code}&type=email`;
|
|
775
|
-
await sendEmail(to, subject, text);
|
|
776
|
-
}
|
|
777
|
-
if (savedInvite.phone !== null) {
|
|
778
|
-
const phone = savedInvite.phone;
|
|
779
|
-
const message = `You have been invited to join an organization on ${process.env.APP_NAME}! Use this link to register: ${process.env.API_URL}/auth/invite?inviteCode=${newInvite.code}&type=phone`;
|
|
780
|
-
await sendSms(phone, message);
|
|
781
|
-
}
|
|
782
|
-
}
|
|
783
|
-
}
|
|
784
|
-
res.status(200).json({
|
|
785
|
-
message: "Invites sent successfully!",
|
|
786
|
-
createdInvites,
|
|
787
|
-
createdMemberships
|
|
788
|
-
});
|
|
789
|
-
} catch (error) {
|
|
790
|
-
console.error(error);
|
|
791
|
-
res.status(500).json({ message: "Something went wrong" });
|
|
792
|
-
}
|
|
793
|
-
};
|
|
794
|
-
const deleteInvite = async (req, res) => {
|
|
795
|
-
try {
|
|
796
|
-
const invite = await Invite.findOneAndDelete({ _id: req.params._id });
|
|
797
|
-
if (!invite) {
|
|
798
|
-
return res.status(404).send({ message: "Invite not found" });
|
|
799
|
-
}
|
|
800
|
-
res.send({ message: "Invite deleted successfully" });
|
|
801
|
-
} catch (err) {
|
|
802
|
-
res.status(500).send({ message: err.message });
|
|
803
|
-
}
|
|
804
|
-
};
|
|
805
|
-
return {
|
|
806
|
-
getOneByCode,
|
|
807
|
-
read,
|
|
808
|
-
create,
|
|
809
|
-
delete: deleteInvite
|
|
810
|
-
};
|
|
811
|
-
};
|
|
812
|
-
invites_controller = сontrollerFactory;
|
|
813
|
-
return invites_controller;
|
|
814
|
-
}
|
|
815
|
-
var departments_routes;
|
|
816
|
-
var hasRequiredDepartments_routes;
|
|
817
|
-
function requireDepartments_routes() {
|
|
818
|
-
if (hasRequiredDepartments_routes) return departments_routes;
|
|
819
|
-
hasRequiredDepartments_routes = 1;
|
|
820
|
-
const controllerFactory = requireDepartments_controller();
|
|
821
|
-
departments_routes = function(app, db) {
|
|
822
|
-
const controller = controllerFactory(db);
|
|
823
|
-
app.get(
|
|
824
|
-
"/api/departments/read",
|
|
825
|
-
controller.read
|
|
826
|
-
);
|
|
827
|
-
app.get("/api/departments/get/:_id", controller.readOne);
|
|
828
|
-
app.post("/api/departments/:_id/create", controller.create);
|
|
829
|
-
app.post("/api/departments/:_id/update", controller.update);
|
|
830
|
-
app.delete("/api/departments/:_id/delete", controller.delete);
|
|
831
|
-
};
|
|
832
|
-
return departments_routes;
|
|
833
|
-
}
|
|
834
|
-
var organizations_routes;
|
|
835
|
-
var hasRequiredOrganizations_routes;
|
|
836
|
-
function requireOrganizations_routes() {
|
|
837
|
-
if (hasRequiredOrganizations_routes) return organizations_routes;
|
|
838
|
-
hasRequiredOrganizations_routes = 1;
|
|
839
|
-
const controllerFactory = requireOrganizations_controller();
|
|
840
|
-
const middlewareFactoryAuth = index.requireMiddlewares();
|
|
841
|
-
const { getInstance } = globals_abac.requireGlobals_abac();
|
|
842
|
-
organizations_routes = function(app, db) {
|
|
843
|
-
const controller = controllerFactory(db);
|
|
844
|
-
const { authJwt } = middlewareFactoryAuth(db);
|
|
845
|
-
getInstance(db);
|
|
846
|
-
app.get(
|
|
847
|
-
"/api/organizations",
|
|
848
|
-
[
|
|
849
|
-
authJwt.verifyToken(true)
|
|
850
|
-
// abac.middleware('organizations', 'read', {
|
|
851
|
-
// allowPublished: true,
|
|
852
|
-
// allowUnauthenticated: true
|
|
853
|
-
// })
|
|
854
|
-
],
|
|
855
|
-
controller.read
|
|
856
|
-
);
|
|
857
|
-
app.post(
|
|
858
|
-
"/api/organizations/create",
|
|
859
|
-
controller.create
|
|
860
|
-
);
|
|
861
|
-
app.post(
|
|
862
|
-
"/api/organizations/:_id/update",
|
|
863
|
-
controller.update
|
|
864
|
-
);
|
|
865
|
-
app.delete(
|
|
866
|
-
"/api/organizations/:_id/delete",
|
|
867
|
-
controller.delete
|
|
868
|
-
);
|
|
869
|
-
app.get(
|
|
870
|
-
"/api/auth/check-accesses",
|
|
871
|
-
[
|
|
872
|
-
authJwt.verifyToken()
|
|
873
|
-
],
|
|
874
|
-
controller.checkAccesses
|
|
875
|
-
);
|
|
876
|
-
};
|
|
877
|
-
return organizations_routes;
|
|
878
|
-
}
|
|
879
|
-
var memberships_routes;
|
|
880
|
-
var hasRequiredMemberships_routes;
|
|
881
|
-
function requireMemberships_routes() {
|
|
882
|
-
if (hasRequiredMemberships_routes) return memberships_routes;
|
|
883
|
-
hasRequiredMemberships_routes = 1;
|
|
884
|
-
const controllerFactory = requireMemberships_controller();
|
|
885
|
-
memberships_routes = function(app, db) {
|
|
886
|
-
const controller = controllerFactory(db);
|
|
887
|
-
app.get(
|
|
888
|
-
"/api/memberships",
|
|
889
|
-
controller.read
|
|
890
|
-
);
|
|
891
|
-
app.post(
|
|
892
|
-
"/api/memberships/create",
|
|
893
|
-
controller.create
|
|
894
|
-
);
|
|
895
|
-
app.post(
|
|
896
|
-
"/api/memberships/update",
|
|
897
|
-
controller.update
|
|
898
|
-
);
|
|
899
|
-
app.post(
|
|
900
|
-
"/api/memberships/delete",
|
|
901
|
-
controller.deleteMembership
|
|
902
|
-
);
|
|
903
|
-
};
|
|
904
|
-
return memberships_routes;
|
|
905
|
-
}
|
|
906
|
-
var invites_routes;
|
|
907
|
-
var hasRequiredInvites_routes;
|
|
908
|
-
function requireInvites_routes() {
|
|
909
|
-
if (hasRequiredInvites_routes) return invites_routes;
|
|
910
|
-
hasRequiredInvites_routes = 1;
|
|
911
|
-
const controllerFactory = requireInvites_controller();
|
|
912
|
-
const middlewareFactoryAuth = index.requireMiddlewares();
|
|
913
|
-
invites_routes = function(app, db) {
|
|
914
|
-
const controller = controllerFactory(db);
|
|
915
|
-
const { verifyInvites } = middlewareFactoryAuth(db);
|
|
916
|
-
app.get(
|
|
917
|
-
"/api/invites/get/:_id",
|
|
918
|
-
controller.getOneByCode
|
|
919
|
-
);
|
|
920
|
-
app.get(
|
|
921
|
-
"/api/invites/:_id",
|
|
922
|
-
controller.read
|
|
923
|
-
);
|
|
924
|
-
app.post(
|
|
925
|
-
"/api/invites/create",
|
|
926
|
-
[
|
|
927
|
-
verifyInvites.checkInviteExist,
|
|
928
|
-
verifyInvites.checkUsersExist
|
|
929
|
-
],
|
|
930
|
-
controller.create
|
|
931
|
-
);
|
|
932
|
-
app.delete(
|
|
933
|
-
"/api/invites/delete/:_id",
|
|
934
|
-
controller.delete
|
|
935
|
-
);
|
|
936
|
-
};
|
|
937
|
-
return invites_routes;
|
|
938
|
-
}
|
|
939
|
-
var accesses_schema;
|
|
940
|
-
var hasRequiredAccesses_schema;
|
|
941
|
-
function requireAccesses_schema() {
|
|
942
|
-
if (hasRequiredAccesses_schema) return accesses_schema;
|
|
943
|
-
hasRequiredAccesses_schema = 1;
|
|
944
|
-
const accessesSchema = {
|
|
945
|
-
categories: {
|
|
946
|
-
create: {
|
|
947
|
-
type: Boolean,
|
|
948
|
-
default: false
|
|
949
|
-
},
|
|
950
|
-
read: {
|
|
951
|
-
type: Boolean,
|
|
952
|
-
default: false
|
|
953
|
-
},
|
|
954
|
-
edit: {
|
|
955
|
-
type: Boolean,
|
|
956
|
-
default: false
|
|
957
|
-
},
|
|
958
|
-
delete: {
|
|
959
|
-
type: Boolean,
|
|
960
|
-
default: false
|
|
961
|
-
}
|
|
122
|
+
},
|
|
123
|
+
spots: {
|
|
124
|
+
create: {
|
|
125
|
+
type: Boolean,
|
|
126
|
+
default: false
|
|
962
127
|
},
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
default: false
|
|
967
|
-
},
|
|
968
|
-
read: {
|
|
969
|
-
type: Boolean,
|
|
970
|
-
default: false
|
|
971
|
-
},
|
|
972
|
-
edit: {
|
|
973
|
-
type: Boolean,
|
|
974
|
-
default: false
|
|
975
|
-
},
|
|
976
|
-
delete: {
|
|
977
|
-
type: Boolean,
|
|
978
|
-
default: false
|
|
979
|
-
}
|
|
128
|
+
read: {
|
|
129
|
+
type: Boolean,
|
|
130
|
+
default: false
|
|
980
131
|
},
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
default: false
|
|
985
|
-
},
|
|
986
|
-
read: {
|
|
987
|
-
type: Boolean,
|
|
988
|
-
default: false
|
|
989
|
-
},
|
|
990
|
-
edit: {
|
|
991
|
-
type: Boolean,
|
|
992
|
-
default: false
|
|
993
|
-
},
|
|
994
|
-
delete: {
|
|
995
|
-
type: Boolean,
|
|
996
|
-
default: false
|
|
997
|
-
}
|
|
132
|
+
edit: {
|
|
133
|
+
type: Boolean,
|
|
134
|
+
default: false
|
|
998
135
|
},
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
delete: {
|
|
1009
|
-
type: Boolean,
|
|
1010
|
-
default: false
|
|
1011
|
-
}
|
|
136
|
+
delete: {
|
|
137
|
+
type: Boolean,
|
|
138
|
+
default: false
|
|
139
|
+
}
|
|
140
|
+
},
|
|
141
|
+
members: {
|
|
142
|
+
read: {
|
|
143
|
+
type: Boolean,
|
|
144
|
+
default: false
|
|
1012
145
|
},
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
146
|
+
edit: {
|
|
147
|
+
type: Boolean,
|
|
148
|
+
default: false
|
|
149
|
+
},
|
|
150
|
+
delete: {
|
|
151
|
+
type: Boolean,
|
|
152
|
+
default: false
|
|
153
|
+
}
|
|
154
|
+
},
|
|
155
|
+
posts: {
|
|
156
|
+
create: {
|
|
157
|
+
type: Boolean,
|
|
158
|
+
default: false
|
|
159
|
+
},
|
|
160
|
+
read: {
|
|
161
|
+
type: Boolean,
|
|
162
|
+
default: false
|
|
163
|
+
},
|
|
164
|
+
edit: {
|
|
165
|
+
type: Boolean,
|
|
166
|
+
default: false
|
|
167
|
+
},
|
|
168
|
+
delete: {
|
|
169
|
+
type: Boolean,
|
|
170
|
+
default: false
|
|
171
|
+
}
|
|
172
|
+
},
|
|
173
|
+
events: {
|
|
174
|
+
create: {
|
|
175
|
+
type: Boolean,
|
|
176
|
+
default: false
|
|
177
|
+
},
|
|
178
|
+
read: {
|
|
179
|
+
type: Boolean,
|
|
180
|
+
default: false
|
|
181
|
+
},
|
|
182
|
+
edit: {
|
|
183
|
+
type: Boolean,
|
|
184
|
+
default: false
|
|
185
|
+
},
|
|
186
|
+
delete: {
|
|
187
|
+
type: Boolean,
|
|
188
|
+
default: false
|
|
189
|
+
}
|
|
190
|
+
},
|
|
191
|
+
tickets: {
|
|
192
|
+
create: {
|
|
193
|
+
type: Boolean,
|
|
194
|
+
default: false
|
|
195
|
+
},
|
|
196
|
+
read: {
|
|
197
|
+
type: Boolean,
|
|
198
|
+
default: false
|
|
199
|
+
},
|
|
200
|
+
edit: {
|
|
201
|
+
type: Boolean,
|
|
202
|
+
default: false
|
|
203
|
+
},
|
|
204
|
+
delete: {
|
|
205
|
+
type: Boolean,
|
|
206
|
+
default: false
|
|
207
|
+
}
|
|
208
|
+
},
|
|
209
|
+
gallery: {
|
|
210
|
+
read: {
|
|
211
|
+
type: Boolean,
|
|
212
|
+
default: false
|
|
213
|
+
},
|
|
214
|
+
create: {
|
|
215
|
+
type: Boolean,
|
|
216
|
+
default: false
|
|
217
|
+
},
|
|
218
|
+
edit: {
|
|
219
|
+
type: Boolean,
|
|
220
|
+
default: false
|
|
221
|
+
},
|
|
222
|
+
delete: {
|
|
223
|
+
type: Boolean,
|
|
224
|
+
default: false
|
|
225
|
+
}
|
|
226
|
+
},
|
|
227
|
+
leftovers: {
|
|
228
|
+
read: {
|
|
229
|
+
type: Boolean,
|
|
230
|
+
default: false
|
|
231
|
+
},
|
|
232
|
+
edit: {
|
|
233
|
+
type: Boolean,
|
|
234
|
+
default: false
|
|
1030
235
|
},
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
edit: {
|
|
1041
|
-
type: Boolean,
|
|
1042
|
-
default: false
|
|
1043
|
-
},
|
|
1044
|
-
delete: {
|
|
1045
|
-
type: Boolean,
|
|
1046
|
-
default: false
|
|
1047
|
-
}
|
|
236
|
+
delete: {
|
|
237
|
+
type: Boolean,
|
|
238
|
+
default: false
|
|
239
|
+
}
|
|
240
|
+
},
|
|
241
|
+
products: {
|
|
242
|
+
read: {
|
|
243
|
+
type: Boolean,
|
|
244
|
+
default: false
|
|
1048
245
|
},
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
default: false
|
|
1053
|
-
},
|
|
1054
|
-
read: {
|
|
1055
|
-
type: Boolean,
|
|
1056
|
-
default: false
|
|
1057
|
-
},
|
|
1058
|
-
edit: {
|
|
1059
|
-
type: Boolean,
|
|
1060
|
-
default: false
|
|
1061
|
-
},
|
|
1062
|
-
delete: {
|
|
1063
|
-
type: Boolean,
|
|
1064
|
-
default: false
|
|
1065
|
-
}
|
|
246
|
+
edit: {
|
|
247
|
+
type: Boolean,
|
|
248
|
+
default: false
|
|
1066
249
|
},
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
edit: {
|
|
1077
|
-
type: Boolean,
|
|
1078
|
-
default: false
|
|
1079
|
-
},
|
|
1080
|
-
delete: {
|
|
1081
|
-
type: Boolean,
|
|
1082
|
-
default: false
|
|
1083
|
-
}
|
|
250
|
+
delete: {
|
|
251
|
+
type: Boolean,
|
|
252
|
+
default: false
|
|
253
|
+
}
|
|
254
|
+
},
|
|
255
|
+
orders: {
|
|
256
|
+
read: {
|
|
257
|
+
type: Boolean,
|
|
258
|
+
default: false
|
|
1084
259
|
},
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
default: false
|
|
1089
|
-
},
|
|
1090
|
-
edit: {
|
|
1091
|
-
type: Boolean,
|
|
1092
|
-
default: false
|
|
1093
|
-
},
|
|
1094
|
-
delete: {
|
|
1095
|
-
type: Boolean,
|
|
1096
|
-
default: false
|
|
1097
|
-
}
|
|
260
|
+
confirm: {
|
|
261
|
+
type: Boolean,
|
|
262
|
+
default: false
|
|
1098
263
|
},
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
delete: {
|
|
1109
|
-
type: Boolean,
|
|
1110
|
-
default: false
|
|
1111
|
-
}
|
|
264
|
+
delete: {
|
|
265
|
+
type: Boolean,
|
|
266
|
+
default: false
|
|
267
|
+
}
|
|
268
|
+
},
|
|
269
|
+
departments: {
|
|
270
|
+
read: {
|
|
271
|
+
type: Boolean,
|
|
272
|
+
default: false
|
|
1112
273
|
},
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
default: false
|
|
1117
|
-
},
|
|
1118
|
-
confirm: {
|
|
1119
|
-
type: Boolean,
|
|
1120
|
-
default: false
|
|
1121
|
-
},
|
|
1122
|
-
delete: {
|
|
1123
|
-
type: Boolean,
|
|
1124
|
-
default: false
|
|
1125
|
-
}
|
|
274
|
+
edit: {
|
|
275
|
+
type: Boolean,
|
|
276
|
+
default: false
|
|
1126
277
|
},
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
default: false
|
|
1131
|
-
},
|
|
1132
|
-
edit: {
|
|
1133
|
-
type: Boolean,
|
|
1134
|
-
default: false
|
|
1135
|
-
},
|
|
1136
|
-
delete: {
|
|
1137
|
-
type: Boolean,
|
|
1138
|
-
default: false
|
|
1139
|
-
}
|
|
278
|
+
delete: {
|
|
279
|
+
type: Boolean,
|
|
280
|
+
default: false
|
|
1140
281
|
}
|
|
1141
|
-
}
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
var hasRequiredDepartment_model;
|
|
1147
|
-
function requireDepartment_model() {
|
|
1148
|
-
if (hasRequiredDepartment_model) return department_model;
|
|
1149
|
-
hasRequiredDepartment_model = 1;
|
|
1150
|
-
const accessesSchema = requireAccesses_schema();
|
|
1151
|
-
department_model = (db) => {
|
|
1152
|
-
const departmentSchema = new db.mongoose.Schema({
|
|
282
|
+
}
|
|
283
|
+
};
|
|
284
|
+
const DepartmentModel = (db) => {
|
|
285
|
+
const departmentSchema = new db.mongoose.Schema(
|
|
286
|
+
{
|
|
1153
287
|
owner: {
|
|
1154
288
|
type: db.mongoose.Schema.Types.ObjectId,
|
|
1155
289
|
ref: "User"
|
|
@@ -1164,13 +298,15 @@ function requireDepartment_model() {
|
|
|
1164
298
|
description: { type: String },
|
|
1165
299
|
categories: [String]
|
|
1166
300
|
},
|
|
1167
|
-
worktime: [
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
301
|
+
worktime: [
|
|
302
|
+
{
|
|
303
|
+
day: String,
|
|
304
|
+
time: {
|
|
305
|
+
start: String,
|
|
306
|
+
end: String
|
|
307
|
+
}
|
|
1172
308
|
}
|
|
1173
|
-
|
|
309
|
+
],
|
|
1174
310
|
hidden: {
|
|
1175
311
|
type: Boolean,
|
|
1176
312
|
default: false
|
|
@@ -1197,24 +333,108 @@ function requireDepartment_model() {
|
|
|
1197
333
|
ref: "Department"
|
|
1198
334
|
}
|
|
1199
335
|
]
|
|
1200
|
-
},
|
|
336
|
+
},
|
|
337
|
+
{
|
|
1201
338
|
timestamps: true
|
|
1202
|
-
}
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
339
|
+
}
|
|
340
|
+
);
|
|
341
|
+
departmentSchema.index({ organization: 1 });
|
|
342
|
+
const Department = db.mongoose.model("Department", departmentSchema);
|
|
343
|
+
return Department;
|
|
344
|
+
};
|
|
345
|
+
const InviteModel = (db) => {
|
|
346
|
+
const InviteSchema = new db.mongoose.Schema(
|
|
347
|
+
{
|
|
348
|
+
code: {
|
|
349
|
+
type: String,
|
|
350
|
+
required: true,
|
|
351
|
+
unique: true
|
|
352
|
+
},
|
|
353
|
+
status: {
|
|
354
|
+
type: String,
|
|
355
|
+
enum: ["active", "used", "deactivated"],
|
|
356
|
+
default: "active"
|
|
357
|
+
},
|
|
358
|
+
role: {
|
|
359
|
+
type: String,
|
|
360
|
+
default: "member"
|
|
361
|
+
}
|
|
362
|
+
},
|
|
363
|
+
{
|
|
364
|
+
timestamps: true
|
|
365
|
+
}
|
|
366
|
+
);
|
|
367
|
+
applyOwnershipSchema(InviteSchema, db);
|
|
368
|
+
applyCredentialsSchema(InviteSchema);
|
|
369
|
+
InviteSchema.index(
|
|
370
|
+
{
|
|
371
|
+
owner: 1,
|
|
372
|
+
email: 1
|
|
373
|
+
},
|
|
374
|
+
{
|
|
375
|
+
unique: true,
|
|
376
|
+
partialFilterExpression: {
|
|
377
|
+
email: { $exists: true, $ne: "" }
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
);
|
|
381
|
+
InviteSchema.index(
|
|
382
|
+
{
|
|
383
|
+
owner: 1,
|
|
384
|
+
phone: 1
|
|
385
|
+
},
|
|
386
|
+
{
|
|
387
|
+
unique: true,
|
|
388
|
+
partialFilterExpression: {
|
|
389
|
+
phone: { $exists: true, $ne: "" }
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
);
|
|
393
|
+
const Invite = db.mongoose.model("Invite", InviteSchema);
|
|
394
|
+
return Invite;
|
|
395
|
+
};
|
|
396
|
+
const MembershipModel = (db) => {
|
|
397
|
+
const MembershipSchema = new db.mongoose.Schema(
|
|
398
|
+
{
|
|
399
|
+
user: {
|
|
400
|
+
type: db.mongoose.Schema.Types.ObjectId,
|
|
401
|
+
ref: "User",
|
|
402
|
+
required: true
|
|
403
|
+
},
|
|
404
|
+
type: {
|
|
405
|
+
type: String,
|
|
406
|
+
enum: ["organization", "department", "user"],
|
|
407
|
+
default: "organization",
|
|
408
|
+
required: true
|
|
409
|
+
},
|
|
410
|
+
role: {
|
|
411
|
+
type: String,
|
|
412
|
+
default: "subscriber"
|
|
413
|
+
},
|
|
414
|
+
label: {
|
|
415
|
+
type: String,
|
|
416
|
+
default: "subscriber"
|
|
417
|
+
},
|
|
418
|
+
target: {
|
|
419
|
+
type: db.mongoose.Schema.Types.ObjectId,
|
|
420
|
+
ref: function(value) {
|
|
421
|
+
if (this.type === "user") return "User";
|
|
422
|
+
if (this.type === "organization") return "Organization";
|
|
423
|
+
},
|
|
424
|
+
required: true
|
|
425
|
+
}
|
|
426
|
+
},
|
|
427
|
+
{
|
|
428
|
+
timestamps: true
|
|
429
|
+
}
|
|
430
|
+
);
|
|
431
|
+
MembershipSchema.index({ user: 1, target: 1, role: 1 });
|
|
432
|
+
const Membership = db.mongoose.model("Membership", MembershipSchema);
|
|
433
|
+
return Membership;
|
|
434
|
+
};
|
|
435
|
+
const OrganizationModel = (db) => {
|
|
436
|
+
const OrganizationSchema = new db.mongoose.Schema(
|
|
437
|
+
{
|
|
1218
438
|
// Creator and owner of organizations
|
|
1219
439
|
owner: {
|
|
1220
440
|
type: db.mongoose.Schema.Types.ObjectId,
|
|
@@ -1272,318 +492,985 @@ function requireOrganization_model() {
|
|
|
1272
492
|
},
|
|
1273
493
|
amount: Number
|
|
1274
494
|
}
|
|
1275
|
-
},
|
|
495
|
+
},
|
|
496
|
+
{
|
|
1276
497
|
timestamps: true
|
|
1277
|
-
}
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
498
|
+
}
|
|
499
|
+
);
|
|
500
|
+
applyEngagementSchema(OrganizationSchema);
|
|
501
|
+
OrganizationSchema.index({ _id: 1, owner: 1 });
|
|
502
|
+
const Organization = db.mongoose.model("Organization", OrganizationSchema);
|
|
503
|
+
return Organization;
|
|
504
|
+
};
|
|
505
|
+
const departmentsRoutes = function(app, db) {
|
|
506
|
+
const controller = controllerFactory$2(db);
|
|
507
|
+
app.get("/api/departments/read", controller.read);
|
|
508
|
+
app.get("/api/departments/get/:_id", controller.readOne);
|
|
509
|
+
app.post("/api/departments/:_id/create", controller.create);
|
|
510
|
+
app.post("/api/departments/:_id/update", controller.update);
|
|
511
|
+
app.delete("/api/departments/:_id/delete", controller.delete);
|
|
512
|
+
};
|
|
513
|
+
const { sendEmail, sendSms } = mailing;
|
|
514
|
+
const сontrollerFactory = (db) => {
|
|
515
|
+
const User = db.user;
|
|
516
|
+
const Invite = db.invite;
|
|
517
|
+
const Membership = db.membership;
|
|
518
|
+
const getOneByCode = async (req, res) => {
|
|
519
|
+
try {
|
|
520
|
+
const invite = await Invite.findOne({ code: req.params._id });
|
|
521
|
+
if (!invite) {
|
|
522
|
+
return res.status(404).send({ message: "Приглашение не найдено" });
|
|
523
|
+
}
|
|
524
|
+
res.send(invite);
|
|
525
|
+
} catch (err) {
|
|
526
|
+
res.status(500).send({ message: err.message });
|
|
527
|
+
}
|
|
1282
528
|
};
|
|
1283
|
-
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
|
|
1289
|
-
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
|
|
1298
|
-
|
|
1299
|
-
|
|
1300
|
-
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
529
|
+
const read = async (req, res) => {
|
|
530
|
+
try {
|
|
531
|
+
const invites = await Invite.find({ "owner.target": req.params._id });
|
|
532
|
+
if (!invites || invites.length === 0) {
|
|
533
|
+
return res.status(200).send([]);
|
|
534
|
+
}
|
|
535
|
+
res.send(invites);
|
|
536
|
+
} catch (err) {
|
|
537
|
+
res.status(500).send({ message: err.message });
|
|
538
|
+
}
|
|
539
|
+
};
|
|
540
|
+
const create = async (req, res) => {
|
|
541
|
+
const creator = req.body.creator;
|
|
542
|
+
const owner = req.body.owner;
|
|
543
|
+
const list = req.body.invites;
|
|
544
|
+
const createdInvites = [];
|
|
545
|
+
const createdMemberships = [];
|
|
546
|
+
try {
|
|
547
|
+
for (let invite of list) {
|
|
548
|
+
let user = null;
|
|
549
|
+
if (!invite || !invite.contact) {
|
|
550
|
+
continue;
|
|
551
|
+
}
|
|
552
|
+
if (invite.contact.includes("@")) {
|
|
553
|
+
user = await User.findOne({ email: invite.contact });
|
|
554
|
+
} else {
|
|
555
|
+
user = await User.findOne({ phone: invite.contact });
|
|
556
|
+
}
|
|
557
|
+
if (user) {
|
|
558
|
+
const membership = new Membership({
|
|
559
|
+
user: user._id,
|
|
560
|
+
type: "organization",
|
|
561
|
+
target: req.body.owner.target,
|
|
562
|
+
role: "member",
|
|
563
|
+
label: "member"
|
|
564
|
+
});
|
|
565
|
+
const savedMembership = await membership.save();
|
|
566
|
+
createdMemberships.push(savedMembership);
|
|
567
|
+
} else {
|
|
568
|
+
const newInvite = new Invite({
|
|
569
|
+
code: uuid(),
|
|
570
|
+
creator,
|
|
571
|
+
owner,
|
|
572
|
+
role: "member",
|
|
573
|
+
email: invite.contact.includes("@") ? invite.contact : null,
|
|
574
|
+
phone: !invite.contact.includes("@") ? invite.contact : null
|
|
575
|
+
});
|
|
576
|
+
const savedInvite = await newInvite.save();
|
|
577
|
+
createdInvites.push(savedInvite);
|
|
578
|
+
if (savedInvite.email !== null) {
|
|
579
|
+
const to = savedInvite.email;
|
|
580
|
+
const subject = "You have been added to the organization";
|
|
581
|
+
const text = `You have been invited to join an organization on ${process.env.APP_NAME}! Use this link to register: ${process.env.API_URL}/auth/invite?inviteCode=${newInvite.code}&type=email`;
|
|
582
|
+
await sendEmail(to, subject, text);
|
|
583
|
+
}
|
|
584
|
+
if (savedInvite.phone !== null) {
|
|
585
|
+
const phone = savedInvite.phone;
|
|
586
|
+
const message = `You have been invited to join an organization on ${process.env.APP_NAME}! Use this link to register: ${process.env.API_URL}/auth/invite?inviteCode=${newInvite.code}&type=phone`;
|
|
587
|
+
await sendSms(phone, message);
|
|
588
|
+
}
|
|
589
|
+
}
|
|
590
|
+
}
|
|
591
|
+
res.status(200).json({
|
|
592
|
+
message: "Invites sent successfully!",
|
|
593
|
+
createdInvites,
|
|
594
|
+
createdMemberships
|
|
595
|
+
});
|
|
596
|
+
} catch (error) {
|
|
597
|
+
console.error(error);
|
|
598
|
+
res.status(500).json({ message: "Something went wrong" });
|
|
599
|
+
}
|
|
600
|
+
};
|
|
601
|
+
const deleteInvite = async (req, res) => {
|
|
602
|
+
try {
|
|
603
|
+
const invite = await Invite.findOneAndDelete({ _id: req.params._id });
|
|
604
|
+
if (!invite) {
|
|
605
|
+
return res.status(404).send({ message: "Invite not found" });
|
|
606
|
+
}
|
|
607
|
+
res.send({ message: "Invite deleted successfully" });
|
|
608
|
+
} catch (err) {
|
|
609
|
+
res.status(500).send({ message: err.message });
|
|
610
|
+
}
|
|
611
|
+
};
|
|
612
|
+
return {
|
|
613
|
+
getOneByCode,
|
|
614
|
+
read,
|
|
615
|
+
create,
|
|
616
|
+
delete: deleteInvite
|
|
617
|
+
};
|
|
618
|
+
};
|
|
619
|
+
const invitesRoutes = function(app, db) {
|
|
620
|
+
const controller = сontrollerFactory(db);
|
|
621
|
+
const { verifyInvites } = middlewareIndexFactory(db);
|
|
622
|
+
app.get("/api/invites/get/:_id", controller.getOneByCode);
|
|
623
|
+
app.get("/api/invites/:_id", controller.read);
|
|
624
|
+
app.post("/api/invites/create", [verifyInvites.checkInviteExist, verifyInvites.checkUsersExist], controller.create);
|
|
625
|
+
app.delete("/api/invites/delete/:_id", controller.delete);
|
|
626
|
+
};
|
|
627
|
+
const ObjectId$1 = { Types }.Types.ObjectId;
|
|
628
|
+
const controllerFactory$1 = (db) => {
|
|
629
|
+
const Membership = db.membership;
|
|
630
|
+
const Department = db.department;
|
|
631
|
+
const read = async (req, res) => {
|
|
632
|
+
try {
|
|
633
|
+
let search = req.query.search;
|
|
634
|
+
let regexPattern = "";
|
|
635
|
+
if (search) {
|
|
636
|
+
search = search.replace(/[-/\\^$*+?.()|[\]{}]/g, "\\$&");
|
|
637
|
+
const parts = search.split(".");
|
|
638
|
+
if (parts.length === 2) {
|
|
639
|
+
regexPattern = parts.join("\\.");
|
|
640
|
+
} else {
|
|
641
|
+
regexPattern = search;
|
|
642
|
+
}
|
|
643
|
+
}
|
|
644
|
+
const memberships = await Membership.aggregate([
|
|
645
|
+
{
|
|
646
|
+
$lookup: {
|
|
647
|
+
from: "users",
|
|
648
|
+
localField: "user",
|
|
649
|
+
foreignField: "_id",
|
|
650
|
+
as: "user"
|
|
651
|
+
}
|
|
1317
652
|
},
|
|
1318
|
-
|
|
653
|
+
{
|
|
654
|
+
$match: {
|
|
655
|
+
...req.query.user && { user: new ObjectId$1(req.query.user) },
|
|
656
|
+
...req.query.type && { type: req.query.type },
|
|
657
|
+
...req.query.target && { target: new ObjectId$1(req.query.target) },
|
|
658
|
+
...req.query.role && { role: { $in: req.query.role } },
|
|
659
|
+
...req.query.search && {
|
|
660
|
+
$or: [
|
|
661
|
+
{ "user.profile.name": { $regex: regexPattern, $options: "i" } },
|
|
662
|
+
{ "user.email": { $regex: regexPattern, $options: "i" } },
|
|
663
|
+
{ "user.phone": { $regex: regexPattern, $options: "i" } }
|
|
664
|
+
]
|
|
665
|
+
}
|
|
666
|
+
}
|
|
667
|
+
},
|
|
668
|
+
{
|
|
669
|
+
$unwind: "$user"
|
|
670
|
+
},
|
|
671
|
+
// Pagination
|
|
672
|
+
...queryProcessorGlobals.getSortingOptions(req.query.sortParam, req.query.sortOrder),
|
|
673
|
+
...queryProcessorGlobals.getPaginationOptions(req.query.skip, req.query.limit)
|
|
674
|
+
]);
|
|
675
|
+
if (!memberships) {
|
|
676
|
+
return res.status(404).send({ errorCode: "MEMBERSHIPS_NOT_FOUND" });
|
|
677
|
+
}
|
|
678
|
+
res.send(memberships);
|
|
679
|
+
} catch (err) {
|
|
680
|
+
console.log(err);
|
|
681
|
+
res.status(500).send({ errorCode: "SERVER_ERROR" });
|
|
682
|
+
}
|
|
683
|
+
};
|
|
684
|
+
const create = async (req, res) => {
|
|
685
|
+
const newMembership = new Membership({
|
|
686
|
+
user: req.body.user,
|
|
687
|
+
type: req.body.type,
|
|
688
|
+
target: req.body.target,
|
|
689
|
+
role: req.body.role
|
|
690
|
+
});
|
|
691
|
+
try {
|
|
692
|
+
const data = await newMembership.save();
|
|
693
|
+
res.send(data);
|
|
694
|
+
} catch (err) {
|
|
695
|
+
console.log(err);
|
|
696
|
+
res.status(500).send({ errorCode: "SERVER_ERROR" });
|
|
697
|
+
}
|
|
698
|
+
};
|
|
699
|
+
const update = async (req, res) => {
|
|
700
|
+
try {
|
|
701
|
+
const membership = await Membership.findByIdAndUpdate(req.body._id, req.body, { new: true });
|
|
702
|
+
if (!membership) {
|
|
703
|
+
return res.status(404).send({ errorCode: "MEMBERSHIP_NOT_FOUND" });
|
|
704
|
+
}
|
|
705
|
+
res.send(membership);
|
|
706
|
+
} catch (err) {
|
|
707
|
+
res.status(500).send({ errorCode: "SERVER_ERROR" });
|
|
708
|
+
}
|
|
709
|
+
};
|
|
710
|
+
const deleteMembership = async (req, res) => {
|
|
711
|
+
const { _id, type, target, user, role } = req.body;
|
|
712
|
+
try {
|
|
713
|
+
const membership = _id ? await Membership.findOneAndDelete({ _id: new ObjectId$1(_id) }) : await Membership.findOneAndDelete({ type, target, user, role });
|
|
714
|
+
if (!membership) {
|
|
715
|
+
return res.status(404).send({ errorCode: "MEMBERSHIP_NOT_FOUND" });
|
|
716
|
+
}
|
|
717
|
+
if (membership.type === "organization") {
|
|
718
|
+
await Department.updateMany({ organization: target }, { $pull: { members: { user } } });
|
|
719
|
+
}
|
|
720
|
+
res.status(200).send(membership);
|
|
721
|
+
} catch (error) {
|
|
722
|
+
console.log(error);
|
|
723
|
+
res.status(500).send({ errorCode: "SERVER_ERROR" });
|
|
724
|
+
}
|
|
725
|
+
};
|
|
726
|
+
return {
|
|
727
|
+
read,
|
|
728
|
+
create,
|
|
729
|
+
update,
|
|
730
|
+
deleteMembership
|
|
731
|
+
};
|
|
732
|
+
};
|
|
733
|
+
const membershipsRoutes = function(app, db) {
|
|
734
|
+
const controller = controllerFactory$1(db);
|
|
735
|
+
app.get("/api/memberships", controller.read);
|
|
736
|
+
app.post("/api/memberships/create", controller.create);
|
|
737
|
+
app.post("/api/memberships/update", controller.update);
|
|
738
|
+
app.post("/api/memberships/delete", controller.deleteMembership);
|
|
739
|
+
};
|
|
740
|
+
const lookupConfigs = {
|
|
741
|
+
products: {
|
|
742
|
+
lookup: {
|
|
743
|
+
from: "products",
|
|
744
|
+
localField: "_id",
|
|
745
|
+
foreignField: "owner.target",
|
|
746
|
+
as: "products"
|
|
747
|
+
},
|
|
748
|
+
additionalStages: [
|
|
749
|
+
{
|
|
750
|
+
$addFields: { numberOfProducts: { $size: "$products" } }
|
|
751
|
+
}
|
|
752
|
+
]
|
|
753
|
+
},
|
|
754
|
+
blogposts: {
|
|
755
|
+
lookup: {
|
|
756
|
+
from: "blogposts",
|
|
757
|
+
localField: "_id",
|
|
758
|
+
foreignField: "owner.target",
|
|
759
|
+
as: "blogposts"
|
|
760
|
+
}
|
|
761
|
+
},
|
|
762
|
+
departments: {
|
|
763
|
+
lookup: {
|
|
764
|
+
from: "departments",
|
|
765
|
+
localField: "_id",
|
|
766
|
+
foreignField: "organization",
|
|
767
|
+
as: "departments"
|
|
768
|
+
}
|
|
769
|
+
},
|
|
770
|
+
spots: {
|
|
771
|
+
lookup: {
|
|
772
|
+
from: "spots",
|
|
773
|
+
localField: "_id",
|
|
774
|
+
foreignField: "organization",
|
|
775
|
+
as: "spots"
|
|
776
|
+
}
|
|
777
|
+
},
|
|
778
|
+
memberships: {
|
|
779
|
+
lookup: {
|
|
780
|
+
from: "memberships",
|
|
781
|
+
localField: "_id",
|
|
782
|
+
foreignField: "target",
|
|
783
|
+
as: "memberships"
|
|
784
|
+
}
|
|
785
|
+
}
|
|
786
|
+
};
|
|
787
|
+
const ObjectId = { Types }.Types.ObjectId;
|
|
788
|
+
const { Client } = googleMapsServicesJs;
|
|
789
|
+
const client = new Client({});
|
|
790
|
+
const getRequestedLookups = (query) => query.lookup ? Array.isArray(query.lookup) ? query.lookup : [query.lookup] : [];
|
|
791
|
+
const getLookupStages = (requestedLookups, configs) => {
|
|
792
|
+
if (!requestedLookups) return [];
|
|
793
|
+
const lookupsArray = Array.isArray(requestedLookups) ? requestedLookups : requestedLookups.split(",");
|
|
794
|
+
return lookupsArray.map((lookup) => configs[lookup]).filter(Boolean).flatMap((config) => [
|
|
795
|
+
{ $lookup: config.lookup },
|
|
796
|
+
// Оберните lookup в объект с $lookup
|
|
797
|
+
...config.additionalStages || []
|
|
798
|
+
]);
|
|
799
|
+
};
|
|
800
|
+
const getLocationStages = async (query) => {
|
|
801
|
+
if (!hasLocationParams(query)) {
|
|
802
|
+
return { stages: [], userLocation: null };
|
|
803
|
+
}
|
|
804
|
+
const location = await resolveLocation(query);
|
|
805
|
+
const radius = getRadius(query);
|
|
806
|
+
const geoStages = radius ? [
|
|
807
|
+
{
|
|
808
|
+
$match: {
|
|
809
|
+
"spots.location.coordinates": {
|
|
810
|
+
$geoWithin: {
|
|
811
|
+
$centerSphere: [[location.coordinates[0], location.coordinates[1]], radius]
|
|
812
|
+
}
|
|
813
|
+
}
|
|
1319
814
|
}
|
|
1320
|
-
}
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
return Membership;
|
|
815
|
+
}
|
|
816
|
+
] : [];
|
|
817
|
+
return {
|
|
818
|
+
stages: [...geoStages, ...getDistanceStages(location)],
|
|
819
|
+
userLocation: location
|
|
1326
820
|
};
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
const
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
},
|
|
1348
|
-
role: {
|
|
1349
|
-
type: String,
|
|
1350
|
-
default: "member"
|
|
821
|
+
};
|
|
822
|
+
const getRadius = (query) => {
|
|
823
|
+
if (query.locationRadius) return parseFloat(query.locationRadius) / 6378.1;
|
|
824
|
+
if (query.city) return 25 / 6378.1;
|
|
825
|
+
if (query.state) return 50 / 6378.1;
|
|
826
|
+
return null;
|
|
827
|
+
};
|
|
828
|
+
const hasLocationParams = (query) => query.location || query.address || query.city || query.state || query.country;
|
|
829
|
+
const resolveLocation = async (query) => {
|
|
830
|
+
if (query.location) {
|
|
831
|
+
const parsedLocation = typeof query.location === "string" ? JSON.parse(query.location) : query.location;
|
|
832
|
+
const coordinates = parsedLocation.lng ? [parsedLocation.lng, parsedLocation.lat] : parsedLocation.coordinates;
|
|
833
|
+
return { coordinates: coordinates.map((coord) => parseFloat(coord)) };
|
|
834
|
+
}
|
|
835
|
+
const searchString = [query.address, query.city, query.state, query.country].filter(Boolean).join(", ");
|
|
836
|
+
try {
|
|
837
|
+
const geoResponse = await client.geocode({
|
|
838
|
+
params: {
|
|
839
|
+
address: searchString,
|
|
840
|
+
key: process.env.GOOGLE_MAPS_API_KEY
|
|
1351
841
|
}
|
|
1352
|
-
}, {
|
|
1353
|
-
timestamps: true
|
|
1354
842
|
});
|
|
1355
|
-
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
843
|
+
if (!geoResponse.data.results?.length) {
|
|
844
|
+
throw new Error("Unable to geocode the provided location.");
|
|
845
|
+
}
|
|
846
|
+
const { lng, lat } = geoResponse.data.results[0].geometry.location;
|
|
847
|
+
return { coordinates: [lng, lat] };
|
|
848
|
+
} catch (err) {
|
|
849
|
+
throw new Error("Error occurred while geocoding.");
|
|
850
|
+
}
|
|
851
|
+
};
|
|
852
|
+
const getDistanceStages = (location) => [
|
|
853
|
+
{
|
|
854
|
+
$addFields: {
|
|
855
|
+
spots: {
|
|
856
|
+
$map: {
|
|
857
|
+
input: "$spots",
|
|
858
|
+
as: "spot",
|
|
859
|
+
in: {
|
|
860
|
+
$mergeObjects: [
|
|
861
|
+
"$$spot",
|
|
862
|
+
{
|
|
863
|
+
distance: {
|
|
864
|
+
$function: {
|
|
865
|
+
body: `function(spotCoords, userCoords, isMiles) {
|
|
866
|
+
function toRad(x) {
|
|
867
|
+
return x * Math.PI / 180;
|
|
868
|
+
}
|
|
869
|
+
var lon1 = spotCoords[0];
|
|
870
|
+
var lat1 = spotCoords[1];
|
|
871
|
+
var lon2 = userCoords[0];
|
|
872
|
+
var lat2 = userCoords[1];
|
|
873
|
+
var R = 6371;
|
|
874
|
+
if (isMiles) R = 3959;
|
|
875
|
+
var x1 = lat2 - lat1;
|
|
876
|
+
var dLat = toRad(x1);
|
|
877
|
+
var x2 = lon2 - lon1;
|
|
878
|
+
var dLon = toRad(x2);
|
|
879
|
+
var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
|
|
880
|
+
Math.cos(toRad(lat1)) * Math.cos(toRad(lat2)) *
|
|
881
|
+
Math.sin(dLon / 2) * Math.sin(dLon / 2);
|
|
882
|
+
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
|
|
883
|
+
var d = R * c;
|
|
884
|
+
return d;
|
|
885
|
+
}`,
|
|
886
|
+
args: ["$$spot.location.coordinates", location.coordinates, false],
|
|
887
|
+
lang: "js"
|
|
888
|
+
}
|
|
889
|
+
}
|
|
890
|
+
}
|
|
891
|
+
]
|
|
892
|
+
}
|
|
893
|
+
}
|
|
1364
894
|
}
|
|
1365
|
-
}
|
|
1366
|
-
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
895
|
+
}
|
|
896
|
+
},
|
|
897
|
+
{
|
|
898
|
+
$addFields: {
|
|
899
|
+
distance: { $min: "$spots.distance" },
|
|
900
|
+
distanceExist: {
|
|
901
|
+
$cond: {
|
|
902
|
+
if: { $eq: [{ $type: "$distance" }, "double"] },
|
|
903
|
+
then: true,
|
|
904
|
+
else: false
|
|
905
|
+
}
|
|
1373
906
|
}
|
|
1374
|
-
}
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
return
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
|
|
907
|
+
}
|
|
908
|
+
}
|
|
909
|
+
];
|
|
910
|
+
const getPriceConditions = (prices) => {
|
|
911
|
+
if (!prices) return [];
|
|
912
|
+
const priceRanges = prices.split(",");
|
|
913
|
+
const priceConditions = priceRanges.map((priceRange) => {
|
|
914
|
+
if (priceRange.startsWith("<")) return { "products.price": { $lt: parseInt(priceRange.slice(1)) } };
|
|
915
|
+
if (priceRange.startsWith(">")) return { "products.price": { $gt: parseInt(priceRange.slice(1)) } };
|
|
916
|
+
const [min, max] = priceRange.split("-").map(Number);
|
|
917
|
+
return { "products.price": { $gte: min, $lte: max } };
|
|
918
|
+
});
|
|
919
|
+
return priceConditions.length > 0 ? [{ $match: { $or: priceConditions } }] : [];
|
|
920
|
+
};
|
|
921
|
+
const getContainConditions = (contain) => {
|
|
922
|
+
if (!contain) return [];
|
|
923
|
+
const conditions = contain.map((property) => ({
|
|
924
|
+
[property]: { $exists: true, $not: { $size: 0 } }
|
|
925
|
+
}));
|
|
926
|
+
return conditions.length > 0 ? [{ $match: { $and: conditions } }] : [];
|
|
927
|
+
};
|
|
928
|
+
const getBasicMatchConditions = (query) => [
|
|
929
|
+
...query._id ? [{ _id: new ObjectId(query._id) }] : [],
|
|
930
|
+
...query.owner ? [{ owner: new ObjectId(query.owner) }] : [],
|
|
931
|
+
...query.types ? [{ types: { $in: query.types } }] : [],
|
|
932
|
+
...query.member ? [
|
|
933
|
+
{
|
|
934
|
+
memberships: {
|
|
935
|
+
$elemMatch: {
|
|
936
|
+
user: new ObjectId(query.member),
|
|
937
|
+
role: "member"
|
|
938
|
+
}
|
|
1394
939
|
}
|
|
1395
|
-
}
|
|
1396
|
-
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
}
|
|
940
|
+
}
|
|
941
|
+
] : [],
|
|
942
|
+
...query.subscriber ? [
|
|
943
|
+
{
|
|
944
|
+
memberships: {
|
|
945
|
+
$elemMatch: {
|
|
946
|
+
user: new ObjectId(query.subscriber),
|
|
947
|
+
role: "subscriber"
|
|
948
|
+
}
|
|
1404
949
|
}
|
|
1405
|
-
|
|
1406
|
-
|
|
1407
|
-
|
|
1408
|
-
|
|
950
|
+
}
|
|
951
|
+
] : [],
|
|
952
|
+
...query.categories?.split(",").length > 0 ? [{ "products.category": { $in: query.categories?.split(",") } }] : [],
|
|
953
|
+
...query.delivery?.split(",").length > 0 ? [{ "spots.delivery": { $all: query.delivery?.split(",") } }] : []
|
|
954
|
+
];
|
|
955
|
+
const getPostableConditions = (postableId) => {
|
|
956
|
+
if (!postableId) return [];
|
|
957
|
+
return [
|
|
958
|
+
{
|
|
959
|
+
$match: {
|
|
960
|
+
$or: [
|
|
961
|
+
{ owner: new ObjectId(postableId) },
|
|
962
|
+
{
|
|
963
|
+
$and: [
|
|
964
|
+
{ types: { $elemMatch: { $eq: "public" } } },
|
|
965
|
+
{
|
|
966
|
+
memberships: {
|
|
967
|
+
$elemMatch: {
|
|
968
|
+
user: new ObjectId(postableId)
|
|
969
|
+
}
|
|
970
|
+
}
|
|
971
|
+
}
|
|
972
|
+
]
|
|
973
|
+
},
|
|
974
|
+
{
|
|
975
|
+
$and: [
|
|
976
|
+
{ types: { $elemMatch: { $in: ["exclusive", "hidden"] } } },
|
|
977
|
+
{
|
|
978
|
+
memberships: {
|
|
979
|
+
$elemMatch: {
|
|
980
|
+
user: new ObjectId(postableId),
|
|
981
|
+
role: { $ne: "subscriber" }
|
|
982
|
+
}
|
|
983
|
+
}
|
|
984
|
+
}
|
|
985
|
+
]
|
|
1409
986
|
}
|
|
1410
|
-
|
|
1411
|
-
|
|
987
|
+
]
|
|
988
|
+
}
|
|
989
|
+
}
|
|
990
|
+
];
|
|
991
|
+
};
|
|
992
|
+
const controllerFactory = (db) => {
|
|
993
|
+
const Organization = db.organization;
|
|
994
|
+
const Department = db.department;
|
|
995
|
+
const Membership = db.membership;
|
|
996
|
+
const cache = new Cache({ ttlSeconds: 60 * 5 });
|
|
997
|
+
const read = async (req, res) => {
|
|
998
|
+
console.log("controller query", req.query);
|
|
999
|
+
try {
|
|
1000
|
+
const cacheKey = JSON.stringify(req.query);
|
|
1001
|
+
let cachedResult = await cache.get(cacheKey);
|
|
1002
|
+
if (cachedResult) {
|
|
1003
|
+
return res.status(200).send(cachedResult);
|
|
1004
|
+
}
|
|
1005
|
+
const requestedLookups = getRequestedLookups(req.query);
|
|
1006
|
+
const matchConditions = getBasicMatchConditions(req.query);
|
|
1007
|
+
const stages = [
|
|
1008
|
+
...getLookupStages(requestedLookups, lookupConfigs),
|
|
1009
|
+
...getPostableConditions(req.query.postable),
|
|
1010
|
+
...getContainConditions(req.query.contain),
|
|
1011
|
+
...queryProcessorGlobals.getSearchOptions(req.query.search, {
|
|
1012
|
+
fields: requestedLookups.includes("products") ? ["profile.name", "products.name"] : ["profile.name"]
|
|
1013
|
+
}),
|
|
1014
|
+
...requestedLookups.includes("products") && req.query.prices ? getPriceConditions(req.query.prices) : [],
|
|
1015
|
+
...requestedLookups.includes("spots") ? (await getLocationStages(req.query)).stages : [],
|
|
1016
|
+
...requestedLookups.includes("memberships") ? [addUserStatusFields(req.query.user), addMembersQuantity(req.query.user)] : [],
|
|
1017
|
+
...matchConditions.length > 0 ? [{ $match: { $and: matchConditions } }] : [],
|
|
1018
|
+
...queryProcessorGlobals.getSortingOptions(req.query.sortParam, req.query.sortOrder),
|
|
1019
|
+
...queryProcessorGlobals.getPaginationOptions(req.query.skip, req.query.limit)
|
|
1020
|
+
].filter(Boolean);
|
|
1021
|
+
console.log(JSON.stringify(stages, null, 2));
|
|
1022
|
+
const organizations = await Organization.aggregate(stages);
|
|
1023
|
+
for (const org of organizations) {
|
|
1024
|
+
const orgTag = `organization_${org._id}`;
|
|
1025
|
+
await cache.setWithTags(cacheKey, organizations, [orgTag, "organizations"]);
|
|
1026
|
+
}
|
|
1027
|
+
res.status(200).send(organizations);
|
|
1028
|
+
} catch (err) {
|
|
1029
|
+
console.error(err);
|
|
1030
|
+
res.status(500).send({ message: err.message });
|
|
1031
|
+
}
|
|
1032
|
+
};
|
|
1033
|
+
const create = async (req, res) => {
|
|
1034
|
+
if (req.body._id === null) {
|
|
1035
|
+
delete req.body._id;
|
|
1036
|
+
}
|
|
1037
|
+
try {
|
|
1038
|
+
const organization = new Organization(req.body);
|
|
1039
|
+
const savedOrganization = await organization.save();
|
|
1040
|
+
const membership = new Membership({
|
|
1041
|
+
user: savedOrganization.owner,
|
|
1042
|
+
type: "organization",
|
|
1043
|
+
target: savedOrganization._id,
|
|
1044
|
+
role: "owner",
|
|
1045
|
+
label: "owner"
|
|
1046
|
+
});
|
|
1047
|
+
const savedMembership = await membership.save();
|
|
1048
|
+
const orgTag = `organization_${savedOrganization._id}`;
|
|
1049
|
+
await cache.delByTag(orgTag);
|
|
1050
|
+
const organizationObject = savedOrganization.toObject();
|
|
1051
|
+
const newCacheKey = JSON.stringify({ id: organizationObject._id });
|
|
1052
|
+
await cache.setWithTags(newCacheKey, [organizationObject], [orgTag, "organizations"]);
|
|
1053
|
+
res.status(201).json(savedOrganization);
|
|
1054
|
+
} catch (error) {
|
|
1055
|
+
console.error("Error:", error);
|
|
1056
|
+
res.status(500).send(error);
|
|
1057
|
+
}
|
|
1058
|
+
};
|
|
1059
|
+
const update = async (req, res) => {
|
|
1060
|
+
try {
|
|
1061
|
+
const organizationId = req.params._id;
|
|
1062
|
+
const updatedData = req.body;
|
|
1063
|
+
const organization = await Organization.findByIdAndUpdate(organizationId, updatedData, {
|
|
1064
|
+
new: true,
|
|
1065
|
+
runValidators: true
|
|
1066
|
+
});
|
|
1067
|
+
if (!organization) {
|
|
1068
|
+
return res.status(404).json({ message: "Organization not found" });
|
|
1069
|
+
}
|
|
1070
|
+
const orgTag = `organization_${organizationId}`;
|
|
1071
|
+
await cache.delByTag(orgTag);
|
|
1072
|
+
const organizationObject = organization.toObject();
|
|
1073
|
+
const updateCacheKey = JSON.stringify({ _id: organizationId });
|
|
1074
|
+
await cache.setWithTags(updateCacheKey, [organizationObject], [orgTag, "organizations"]);
|
|
1075
|
+
res.status(200).json({ message: "Organization updated successfully", organization });
|
|
1076
|
+
} catch (error) {
|
|
1077
|
+
res.status(500).json({ error: error.message });
|
|
1078
|
+
}
|
|
1079
|
+
};
|
|
1080
|
+
const deleteOrganization = async (req, res) => {
|
|
1081
|
+
try {
|
|
1082
|
+
const organization = await Organization.findOneAndRemove({ _id: req.params._id });
|
|
1083
|
+
if (!organization) {
|
|
1084
|
+
return res.status(404).send({ message: "Organization not found" });
|
|
1085
|
+
}
|
|
1086
|
+
await Membership.deleteMany({ target: req.params._id });
|
|
1087
|
+
const newToken = jwt.sign(
|
|
1088
|
+
{
|
|
1089
|
+
_id: req.userId,
|
|
1090
|
+
// Предполагаю, что req.userId доступен
|
|
1091
|
+
organization: null
|
|
1092
|
+
},
|
|
1093
|
+
process.env.SECRET_KEY,
|
|
1094
|
+
{
|
|
1095
|
+
expiresIn: 86400
|
|
1096
|
+
// 24 hours
|
|
1097
|
+
}
|
|
1098
|
+
);
|
|
1099
|
+
const orgTag = `organization_${req.params._id}`;
|
|
1100
|
+
await cache.delByTag(orgTag);
|
|
1101
|
+
res.send({ newToken });
|
|
1102
|
+
} catch (err) {
|
|
1103
|
+
res.status(500).send({ message: err.message });
|
|
1104
|
+
}
|
|
1105
|
+
};
|
|
1106
|
+
const checkAccesses = async (req, res) => {
|
|
1107
|
+
try {
|
|
1108
|
+
const uid = new db.mongoose.Types.ObjectId(req.userId);
|
|
1109
|
+
const cacheKey = `accesses_${uid.toString()}`;
|
|
1110
|
+
const cachedResult = await cache.get(cacheKey);
|
|
1111
|
+
if (cachedResult) {
|
|
1112
|
+
return res.status(200).json(cachedResult);
|
|
1113
|
+
}
|
|
1114
|
+
const depts = await Department.find({ "members.user": uid }).lean();
|
|
1115
|
+
const ownedOrgs = await Organization.find({ owner: uid }).lean();
|
|
1116
|
+
const ownedOrgIds = ownedOrgs.map((org) => org._id.toString());
|
|
1117
|
+
const accesses = {};
|
|
1118
|
+
const processAccesses = (orgId, isOwner, deptAccesses) => {
|
|
1119
|
+
if (!accesses[orgId]) {
|
|
1120
|
+
accesses[orgId] = { organization: orgId, rights: {} };
|
|
1121
|
+
}
|
|
1122
|
+
const rights = accesses[orgId].rights;
|
|
1123
|
+
const defaultAccesses = new Department().accesses;
|
|
1124
|
+
const accessData = isOwner ? defaultAccesses : deptAccesses;
|
|
1125
|
+
Object.keys(accessData).forEach((key) => {
|
|
1126
|
+
if (!rights[key]) {
|
|
1127
|
+
rights[key] = {};
|
|
1412
1128
|
}
|
|
1413
|
-
|
|
1414
|
-
|
|
1129
|
+
const accessRights = accessData[key];
|
|
1130
|
+
Object.entries(accessRights).forEach(([right, value]) => {
|
|
1131
|
+
rights[key][right] = isOwner || rights[key][right] || value;
|
|
1132
|
+
});
|
|
1133
|
+
});
|
|
1134
|
+
};
|
|
1135
|
+
const orgDepts = depts.reduce((acc, dept) => {
|
|
1136
|
+
const orgId = dept.organization.toString();
|
|
1137
|
+
if (!acc[orgId]) {
|
|
1138
|
+
acc[orgId] = [];
|
|
1139
|
+
}
|
|
1140
|
+
acc[orgId].push(dept);
|
|
1141
|
+
return acc;
|
|
1142
|
+
}, {});
|
|
1143
|
+
Object.entries(orgDepts).forEach(([orgId, departments]) => {
|
|
1144
|
+
const combinedAccesses = departments.reduce((acc, dept) => {
|
|
1145
|
+
Object.entries(dept.accesses).forEach(([key, rights]) => {
|
|
1146
|
+
if (!acc[key]) {
|
|
1147
|
+
acc[key] = {};
|
|
1148
|
+
}
|
|
1149
|
+
Object.entries(rights).forEach(([right, value]) => {
|
|
1150
|
+
acc[key][right] = acc[key][right] || value;
|
|
1151
|
+
});
|
|
1152
|
+
});
|
|
1153
|
+
return acc;
|
|
1154
|
+
}, {});
|
|
1155
|
+
processAccesses(orgId, false, combinedAccesses);
|
|
1156
|
+
});
|
|
1157
|
+
ownedOrgIds.forEach((orgId) => {
|
|
1158
|
+
processAccesses(orgId, true, {});
|
|
1159
|
+
});
|
|
1160
|
+
const accessArray = Object.values(accesses);
|
|
1161
|
+
const userTag = `access_${uid.toString()}`;
|
|
1162
|
+
await cache.setWithTags(cacheKey, accessArray, [userTag, "accesses"]);
|
|
1163
|
+
res.status(200).json(accessArray);
|
|
1164
|
+
} catch (err) {
|
|
1165
|
+
console.error("Error getting accesses:", err);
|
|
1166
|
+
res.status(500).json({ message: "Internal server error" });
|
|
1167
|
+
}
|
|
1168
|
+
};
|
|
1169
|
+
return {
|
|
1170
|
+
fetch,
|
|
1171
|
+
read,
|
|
1172
|
+
create,
|
|
1173
|
+
update,
|
|
1174
|
+
delete: deleteOrganization,
|
|
1175
|
+
// Map the method to 'delete' key
|
|
1176
|
+
checkAccesses
|
|
1177
|
+
};
|
|
1178
|
+
};
|
|
1179
|
+
const { getInstance: getInstance$1 } = globalsabac;
|
|
1180
|
+
const organizationsRoutes = function(app, db) {
|
|
1181
|
+
const controller = controllerFactory(db);
|
|
1182
|
+
const { authJwt } = middlewareIndexFactory(db);
|
|
1183
|
+
getInstance$1(db);
|
|
1184
|
+
app.get(
|
|
1185
|
+
"/api/organizations",
|
|
1186
|
+
[
|
|
1187
|
+
authJwt.verifyToken(true)
|
|
1188
|
+
// abac.middleware('organizations', 'read', {
|
|
1189
|
+
// allowPublished: true,
|
|
1190
|
+
// allowUnauthenticated: true
|
|
1191
|
+
// })
|
|
1192
|
+
],
|
|
1193
|
+
controller.read
|
|
1194
|
+
);
|
|
1195
|
+
app.post("/api/organizations/create", controller.create);
|
|
1196
|
+
app.post("/api/organizations/:_id/update", controller.update);
|
|
1197
|
+
app.delete("/api/organizations/:_id/delete", controller.delete);
|
|
1198
|
+
app.get("/api/auth/check-accesses", [authJwt.verifyToken()], controller.checkAccesses);
|
|
1199
|
+
};
|
|
1200
|
+
const initOrganizationPolicies = function initializeOrganizationPolicies(abacAccessControl, db) {
|
|
1201
|
+
const Organization = db.organization;
|
|
1202
|
+
const Department = db.department;
|
|
1203
|
+
const publicAccessVerifier = new Verifier({
|
|
1204
|
+
status: {
|
|
1205
|
+
rule: "optional",
|
|
1206
|
+
validator: Validator.schema({ context: "Status" }).string().required().oneOf(["published", "active", "featured"])
|
|
1207
|
+
}
|
|
1208
|
+
});
|
|
1209
|
+
const organizationHelpers = {
|
|
1210
|
+
// Проверка, является ли пользователь владельцем организации
|
|
1211
|
+
async isOrganizationOwner(userId, orgId) {
|
|
1212
|
+
if (!userId || !orgId) return false;
|
|
1213
|
+
try {
|
|
1214
|
+
const objectId = new db.mongoose.Types.ObjectId(orgId);
|
|
1215
|
+
return await Organization.exists({
|
|
1216
|
+
_id: objectId,
|
|
1217
|
+
owner: userId
|
|
1218
|
+
});
|
|
1219
|
+
} catch (error) {
|
|
1220
|
+
console.error("Error checking organization ownership:", error);
|
|
1221
|
+
return false;
|
|
1222
|
+
}
|
|
1223
|
+
},
|
|
1224
|
+
// Получить права пользователя в организации
|
|
1225
|
+
async getUserOrganizationRights(userId, orgId) {
|
|
1226
|
+
if (!userId || !orgId) return null;
|
|
1227
|
+
try {
|
|
1228
|
+
const objectId = new db.mongoose.Types.ObjectId(orgId);
|
|
1229
|
+
const isOwner = await this.isOrganizationOwner(userId, orgId);
|
|
1230
|
+
if (isOwner) {
|
|
1231
|
+
const defaultAccesses = new Department().accesses;
|
|
1232
|
+
return {
|
|
1233
|
+
isOwner: true,
|
|
1234
|
+
rights: defaultAccesses,
|
|
1235
|
+
departments: []
|
|
1236
|
+
};
|
|
1415
1237
|
}
|
|
1238
|
+
const departments = await Department.find({
|
|
1239
|
+
organization: objectId,
|
|
1240
|
+
"members.user": userId
|
|
1241
|
+
});
|
|
1242
|
+
if (!departments.length) return null;
|
|
1243
|
+
const combinedRights = {};
|
|
1244
|
+
departments.forEach((dept) => {
|
|
1245
|
+
Object.entries(dept.accesses).forEach(([resource, rights]) => {
|
|
1246
|
+
if (!combinedRights[resource]) {
|
|
1247
|
+
combinedRights[resource] = {};
|
|
1248
|
+
}
|
|
1249
|
+
Object.entries(rights).forEach(([action, allowed]) => {
|
|
1250
|
+
combinedRights[resource][action] = combinedRights[resource][action] || allowed;
|
|
1251
|
+
});
|
|
1252
|
+
});
|
|
1253
|
+
});
|
|
1254
|
+
return {
|
|
1255
|
+
isOwner: false,
|
|
1256
|
+
rights: combinedRights,
|
|
1257
|
+
departments: departments.map((d) => ({
|
|
1258
|
+
_id: d._id,
|
|
1259
|
+
name: d.name,
|
|
1260
|
+
accesses: d.accesses,
|
|
1261
|
+
members: d.members
|
|
1262
|
+
// Добавляем members для проверки permissions
|
|
1263
|
+
}))
|
|
1264
|
+
};
|
|
1265
|
+
} catch (error) {
|
|
1266
|
+
console.error("Error getting user organization rights:", error);
|
|
1416
1267
|
return null;
|
|
1268
|
+
}
|
|
1269
|
+
},
|
|
1270
|
+
// Проверка конкретного права
|
|
1271
|
+
async hasOrganizationRight(userId, orgId, resource, action) {
|
|
1272
|
+
const rights = await this.getUserOrganizationRights(userId, orgId);
|
|
1273
|
+
return rights?.rights?.[resource]?.[action] || false;
|
|
1274
|
+
},
|
|
1275
|
+
// Получить организацию из контекста
|
|
1276
|
+
getOrganizationId(context) {
|
|
1277
|
+
const { currentResource, data } = context;
|
|
1278
|
+
if (currentResource?.owner?.type === "organization") {
|
|
1279
|
+
return String(currentResource.owner.target);
|
|
1280
|
+
}
|
|
1281
|
+
if (data?.owner?.type === "organization") {
|
|
1282
|
+
return String(data.owner.target);
|
|
1283
|
+
}
|
|
1284
|
+
if (data?.organization) {
|
|
1285
|
+
return String(data.organization);
|
|
1286
|
+
}
|
|
1287
|
+
if (currentResource?.organization) {
|
|
1288
|
+
return String(currentResource.organization);
|
|
1289
|
+
}
|
|
1290
|
+
return null;
|
|
1291
|
+
}
|
|
1292
|
+
};
|
|
1293
|
+
const enhanceContext = (context) => {
|
|
1294
|
+
context.organizationHelpers = organizationHelpers;
|
|
1295
|
+
context.checkOrganizationOwner = async (orgId = null) => {
|
|
1296
|
+
const organizationId = orgId || organizationHelpers.getOrganizationId(context);
|
|
1297
|
+
if (!organizationId || !context.user) return false;
|
|
1298
|
+
return organizationHelpers.isOrganizationOwner(context.user, organizationId);
|
|
1299
|
+
};
|
|
1300
|
+
context.checkOrganizationRight = async (resource, action, orgId = null) => {
|
|
1301
|
+
const organizationId = orgId || organizationHelpers.getOrganizationId(context);
|
|
1302
|
+
if (!organizationId || !context.user) return false;
|
|
1303
|
+
return organizationHelpers.hasOrganizationRight(context.user, organizationId, resource, action);
|
|
1304
|
+
};
|
|
1305
|
+
context.getOrganizationRights = async (orgId = null) => {
|
|
1306
|
+
const organizationId = orgId || organizationHelpers.getOrganizationId(context);
|
|
1307
|
+
if (!organizationId || !context.user) return null;
|
|
1308
|
+
return organizationHelpers.getUserOrganizationRights(context.user, organizationId);
|
|
1309
|
+
};
|
|
1310
|
+
};
|
|
1311
|
+
abacAccessControl.registerExtension("OrganizationHelpers", async (context) => {
|
|
1312
|
+
enhanceContext(context);
|
|
1313
|
+
return {
|
|
1314
|
+
allow: true,
|
|
1315
|
+
reason: "ORGANIZATION_HELPERS_ADDED"
|
|
1316
|
+
};
|
|
1317
|
+
});
|
|
1318
|
+
abacAccessControl.registerGlobalPolicy("OrganizationAccessPolicy", async (context) => {
|
|
1319
|
+
if (!context.checkOrganizationOwner) {
|
|
1320
|
+
enhanceContext(context);
|
|
1321
|
+
}
|
|
1322
|
+
const { user, resource, data, action, currentResource, req } = context;
|
|
1323
|
+
if (!resource || !action) {
|
|
1324
|
+
return {
|
|
1325
|
+
allow: false,
|
|
1326
|
+
force: false,
|
|
1327
|
+
reason: "MISSING_REQUIRED_PARAMETERS"
|
|
1328
|
+
};
|
|
1329
|
+
}
|
|
1330
|
+
const orgId = organizationHelpers.getOrganizationId(context);
|
|
1331
|
+
if (!orgId) {
|
|
1332
|
+
return {
|
|
1333
|
+
allow: true,
|
|
1334
|
+
force: false,
|
|
1335
|
+
reason: "NOT_ORGANIZATION_RESOURCE"
|
|
1417
1336
|
};
|
|
1418
|
-
|
|
1419
|
-
|
|
1337
|
+
}
|
|
1338
|
+
if (user) {
|
|
1339
|
+
try {
|
|
1340
|
+
const isOrgOwner = await organizationHelpers.isOrganizationOwner(user, orgId);
|
|
1341
|
+
if (isOrgOwner) {
|
|
1342
|
+
return {
|
|
1343
|
+
allow: true,
|
|
1344
|
+
force: true,
|
|
1345
|
+
// Владелец организации получает принудительный доступ
|
|
1346
|
+
reason: "ORGANIZATION_OWNER_ACCESS"
|
|
1347
|
+
};
|
|
1348
|
+
}
|
|
1349
|
+
const hasAccess = await organizationHelpers.hasOrganizationRight(user, orgId, resource, action);
|
|
1350
|
+
if (hasAccess) {
|
|
1351
|
+
return {
|
|
1352
|
+
allow: true,
|
|
1353
|
+
force: false,
|
|
1354
|
+
// Доступ через департамент не является принудительным
|
|
1355
|
+
reason: "DEPARTMENT_MEMBER_ACCESS"
|
|
1356
|
+
};
|
|
1357
|
+
}
|
|
1358
|
+
} catch (error) {
|
|
1359
|
+
console.error("Error checking user access:", error);
|
|
1420
1360
|
return {
|
|
1421
|
-
allow:
|
|
1361
|
+
allow: false,
|
|
1422
1362
|
force: false,
|
|
1423
|
-
reason: "
|
|
1363
|
+
reason: "ORGANIZATION_ACCESS_CHECK_ERROR"
|
|
1424
1364
|
};
|
|
1425
1365
|
}
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
allow: true,
|
|
1436
|
-
force: true,
|
|
1437
|
-
// Владелец организации получает принудительный доступ
|
|
1438
|
-
reason: "ORGANIZATION_OWNER_ACCESS"
|
|
1439
|
-
};
|
|
1440
|
-
}
|
|
1441
|
-
const departments = await Department.find({
|
|
1442
|
-
organization: objectId,
|
|
1443
|
-
"members.user": user
|
|
1444
|
-
});
|
|
1445
|
-
const hasAccess = departments.some((department) => {
|
|
1446
|
-
const accessRights = department.accesses?.[resource];
|
|
1447
|
-
return accessRights && accessRights[action];
|
|
1448
|
-
});
|
|
1449
|
-
if (hasAccess) {
|
|
1450
|
-
return {
|
|
1451
|
-
allow: true,
|
|
1452
|
-
force: false,
|
|
1453
|
-
// Доступ через департамент не является принудительным
|
|
1454
|
-
reason: "DEPARTMENT_MEMBER_ACCESS"
|
|
1455
|
-
};
|
|
1456
|
-
}
|
|
1457
|
-
} catch (error) {
|
|
1458
|
-
console.error("Error checking user access:", error);
|
|
1366
|
+
}
|
|
1367
|
+
if (action === "read" && req && req.query) {
|
|
1368
|
+
try {
|
|
1369
|
+
const validationResult = publicAccessVerifier.verify(req.query, {
|
|
1370
|
+
only: ["status"]
|
|
1371
|
+
});
|
|
1372
|
+
req.query = validationResult.verifiedData;
|
|
1373
|
+
req.queryValidation = validationResult;
|
|
1374
|
+
if (currentResource && !publicAccessVerifier.verifyParam("status", currentResource.status)) {
|
|
1459
1375
|
return {
|
|
1460
1376
|
allow: false,
|
|
1461
1377
|
force: false,
|
|
1462
|
-
|
|
1378
|
+
// Принудительно запрещаем доступ к непубличным ресурсам
|
|
1379
|
+
reason: "INVALID_RESOURCE_STATUS_FOR_PUBLIC_ACCESS"
|
|
1463
1380
|
};
|
|
1464
1381
|
}
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
}
|
|
1471
|
-
|
|
1472
|
-
req.queryValidation = validationResult;
|
|
1473
|
-
if (currentResource && !publicAccessVerifier.verifyParam("status", currentResource.status)) {
|
|
1474
|
-
return {
|
|
1475
|
-
allow: false,
|
|
1476
|
-
force: false,
|
|
1477
|
-
// Принудительно запрещаем доступ к непубличным ресурсам
|
|
1478
|
-
reason: "INVALID_RESOURCE_STATUS_FOR_PUBLIC_ACCESS"
|
|
1479
|
-
};
|
|
1480
|
-
}
|
|
1481
|
-
if (validationResult.isValid) {
|
|
1482
|
-
return {
|
|
1483
|
-
allow: true,
|
|
1484
|
-
force: false,
|
|
1485
|
-
reason: "PUBLIC_ACCESS_ALLOWED"
|
|
1486
|
-
};
|
|
1487
|
-
} else {
|
|
1488
|
-
return {
|
|
1489
|
-
allow: false,
|
|
1490
|
-
force: false,
|
|
1491
|
-
// Принудительно запрещаем, если невалидные параметры
|
|
1492
|
-
reason: "INVALID_PUBLIC_ACCESS_PARAMETERS"
|
|
1493
|
-
};
|
|
1494
|
-
}
|
|
1495
|
-
} catch (error) {
|
|
1496
|
-
console.error("Error validating query:", error);
|
|
1382
|
+
if (validationResult.isValid) {
|
|
1383
|
+
return {
|
|
1384
|
+
allow: true,
|
|
1385
|
+
force: false,
|
|
1386
|
+
reason: "PUBLIC_ACCESS_ALLOWED"
|
|
1387
|
+
};
|
|
1388
|
+
} else {
|
|
1497
1389
|
return {
|
|
1498
1390
|
allow: false,
|
|
1499
1391
|
force: false,
|
|
1500
|
-
|
|
1392
|
+
// Принудительно запрещаем, если невалидные параметры
|
|
1393
|
+
reason: "INVALID_PUBLIC_ACCESS_PARAMETERS"
|
|
1501
1394
|
};
|
|
1502
1395
|
}
|
|
1503
|
-
}
|
|
1504
|
-
|
|
1396
|
+
} catch (error) {
|
|
1397
|
+
console.error("Error validating query:", error);
|
|
1505
1398
|
return {
|
|
1506
1399
|
allow: false,
|
|
1507
1400
|
force: false,
|
|
1508
|
-
reason: "
|
|
1401
|
+
reason: "QUERY_VALIDATION_ERROR"
|
|
1509
1402
|
};
|
|
1510
1403
|
}
|
|
1404
|
+
}
|
|
1405
|
+
if (action !== "read") {
|
|
1511
1406
|
return {
|
|
1512
1407
|
allow: false,
|
|
1513
1408
|
force: false,
|
|
1514
|
-
reason: "
|
|
1409
|
+
reason: "ORGANIZATION_RESOURCE_OPERATION_FORBIDDEN"
|
|
1515
1410
|
};
|
|
1516
|
-
});
|
|
1517
|
-
abacAccessControl.updatePublicAccessConfig = (newConfig) => {
|
|
1518
|
-
if (typeof newConfig !== "object" || newConfig === null) {
|
|
1519
|
-
throw new TypeError("Config must be an object");
|
|
1520
|
-
}
|
|
1521
|
-
publicAccessVerifier.updateConfig(newConfig);
|
|
1522
|
-
};
|
|
1523
|
-
abacAccessControl.getPublicAccessConfig = () => {
|
|
1524
|
-
return publicAccessVerifier.getConfig();
|
|
1525
|
-
};
|
|
1526
|
-
abacAccessControl.publicAccessVerifier = publicAccessVerifier;
|
|
1527
|
-
return abacAccessControl;
|
|
1528
|
-
};
|
|
1529
|
-
return organizations_policies;
|
|
1530
|
-
}
|
|
1531
|
-
var organizations_server$1;
|
|
1532
|
-
var hasRequiredOrganizations_server;
|
|
1533
|
-
function requireOrganizations_server() {
|
|
1534
|
-
if (hasRequiredOrganizations_server) return organizations_server$1;
|
|
1535
|
-
hasRequiredOrganizations_server = 1;
|
|
1536
|
-
const DepartmentsController = requireDepartments_controller();
|
|
1537
|
-
const OrganizationsController = requireOrganizations_controller();
|
|
1538
|
-
const MembershipsController = requireMemberships_controller();
|
|
1539
|
-
const InvitesController = requireInvites_controller();
|
|
1540
|
-
const departmentsRoutes = requireDepartments_routes();
|
|
1541
|
-
const organizationsRoutes = requireOrganizations_routes();
|
|
1542
|
-
const membershipsRoutes = requireMemberships_routes();
|
|
1543
|
-
const invitesRoutes = requireInvites_routes();
|
|
1544
|
-
const DepartmentModel = requireDepartment_model();
|
|
1545
|
-
const OrganizationModel = requireOrganization_model();
|
|
1546
|
-
const MembershipModel = requireMembership_model();
|
|
1547
|
-
const InviteModel = requireInvite_model();
|
|
1548
|
-
const { getInstance } = globals_abac.requireGlobals_abac();
|
|
1549
|
-
const initOrganizationPolicies = requireOrganizations_policies();
|
|
1550
|
-
function initializeOrganization(app, db, origins, publicPath) {
|
|
1551
|
-
db.department = DepartmentModel(db);
|
|
1552
|
-
db.organization = OrganizationModel(db);
|
|
1553
|
-
db.membership = MembershipModel(db);
|
|
1554
|
-
db.invite = InviteModel(db);
|
|
1555
|
-
const abac = getInstance(db);
|
|
1556
|
-
initOrganizationPolicies(abac, db);
|
|
1557
|
-
if (app) {
|
|
1558
|
-
departmentsRoutes(app, db, origins, publicPath);
|
|
1559
|
-
organizationsRoutes(app, db, origins, publicPath);
|
|
1560
|
-
membershipsRoutes(app, db, origins, publicPath);
|
|
1561
|
-
invitesRoutes(app, db, origins, publicPath);
|
|
1562
1411
|
}
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
routes: {
|
|
1573
|
-
departmentsRoutes,
|
|
1574
|
-
organizationsRoutes,
|
|
1575
|
-
membershipsRoutes,
|
|
1576
|
-
invitesRoutes
|
|
1577
|
-
},
|
|
1578
|
-
controllers: {
|
|
1579
|
-
DepartmentsController,
|
|
1580
|
-
OrganizationsController,
|
|
1581
|
-
MembershipsController,
|
|
1582
|
-
InvitesController
|
|
1412
|
+
return {
|
|
1413
|
+
allow: false,
|
|
1414
|
+
force: false,
|
|
1415
|
+
reason: "ORGANIZATION_RESOURCE_ACCESS_DENIED"
|
|
1416
|
+
};
|
|
1417
|
+
});
|
|
1418
|
+
abacAccessControl.updatePublicAccessConfig = (newConfig) => {
|
|
1419
|
+
if (typeof newConfig !== "object" || newConfig === null) {
|
|
1420
|
+
throw new TypeError("Config must be an object");
|
|
1583
1421
|
}
|
|
1422
|
+
publicAccessVerifier.updateConfig(newConfig);
|
|
1584
1423
|
};
|
|
1585
|
-
|
|
1424
|
+
abacAccessControl.getPublicAccessConfig = () => {
|
|
1425
|
+
return publicAccessVerifier.getConfig();
|
|
1426
|
+
};
|
|
1427
|
+
abacAccessControl.publicAccessVerifier = publicAccessVerifier;
|
|
1428
|
+
abacAccessControl.organizationHelpers = organizationHelpers;
|
|
1429
|
+
return abacAccessControl;
|
|
1430
|
+
};
|
|
1431
|
+
const { getInstance } = ABAC;
|
|
1432
|
+
function initializeOrganization(app, db, origins, publicPath) {
|
|
1433
|
+
db.department = DepartmentModel(db);
|
|
1434
|
+
db.organization = OrganizationModel(db);
|
|
1435
|
+
db.membership = MembershipModel(db);
|
|
1436
|
+
db.invite = InviteModel(db);
|
|
1437
|
+
const abac = getInstance(db);
|
|
1438
|
+
initOrganizationPolicies(abac, db);
|
|
1439
|
+
if (app) {
|
|
1440
|
+
departmentsRoutes(app, db);
|
|
1441
|
+
organizationsRoutes(app, db);
|
|
1442
|
+
membershipsRoutes(app, db);
|
|
1443
|
+
invitesRoutes(app, db);
|
|
1444
|
+
}
|
|
1586
1445
|
}
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
|
|
1446
|
+
const models = {
|
|
1447
|
+
DepartmentModel,
|
|
1448
|
+
OrganizationModel,
|
|
1449
|
+
MembershipModel,
|
|
1450
|
+
InviteModel
|
|
1451
|
+
};
|
|
1452
|
+
const routes = {
|
|
1453
|
+
departmentsRoutes,
|
|
1454
|
+
organizationsRoutes,
|
|
1455
|
+
membershipsRoutes,
|
|
1456
|
+
invitesRoutes
|
|
1457
|
+
};
|
|
1458
|
+
const controllers = {
|
|
1459
|
+
DepartmentsController: controllerFactory$2,
|
|
1460
|
+
OrganizationsController: controllerFactory,
|
|
1461
|
+
MembershipsController: controllerFactory$1,
|
|
1462
|
+
InvitesController: сontrollerFactory
|
|
1463
|
+
};
|
|
1464
|
+
const organizations_server = {
|
|
1465
|
+
initialize: initializeOrganization,
|
|
1466
|
+
models,
|
|
1467
|
+
routes,
|
|
1468
|
+
controllers
|
|
1469
|
+
};
|
|
1470
|
+
export {
|
|
1471
|
+
controllers,
|
|
1472
|
+
organizations_server as default,
|
|
1473
|
+
initializeOrganization as initialize,
|
|
1474
|
+
models,
|
|
1475
|
+
routes
|
|
1476
|
+
};
|