@ozdao/martyrs 0.2.585 → 0.2.587

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (391) hide show
  1. package/dist/auth.server.js +175 -97
  2. package/dist/{authJwt-J1csaMWA.js → authJwt-DKbMMjw0.js} +33 -0
  3. package/dist/chats.server.js +3 -3
  4. package/dist/community.server.js +2 -2
  5. package/dist/core.server.js +201 -13
  6. package/dist/{core.websocket-C2FxNmZ1.js → core.websocket-Cl76z2wT.js} +41 -5
  7. package/dist/{crud-q1ye5IhV.js → crud-DpOXTZep.js} +1 -1
  8. package/dist/events.server.js +3 -3
  9. package/dist/files.server.js +2 -2
  10. package/dist/gallery.server.js +2 -2
  11. package/dist/index-kvBwwb0w.js +427 -0
  12. package/dist/inventory.server.js +3 -3
  13. package/dist/{mailing-DuEFRsa3.js → mailing-DT7nbNjZ.js} +16 -3
  14. package/dist/{main-xL-jtBkT.js → main-BIf-WirR.js} +863 -865
  15. package/dist/marketplace.server.js +2 -2
  16. package/dist/martyrs/dist/{main-xL-jtBkT.js → main-BIf-WirR.js} +192 -38
  17. package/dist/martyrs/dist/main-BIf-WirR.js.map +1 -0
  18. package/dist/martyrs/dist/{web-BA6h6Z8P.js → web-O7lXcjg0.js} +2 -2
  19. package/dist/martyrs/dist/{web-BA6h6Z8P.js.map → web-O7lXcjg0.js.map} +1 -1
  20. package/dist/martyrs/src/components/Button/{Button.vue2.js → Button.vue.js} +8 -7
  21. package/dist/martyrs/src/components/Button/Button.vue.js.map +1 -0
  22. package/dist/martyrs/src/components/Feed/Carousel.vue.js +1 -1
  23. package/dist/martyrs/src/components/Feed/Feed.vue.js +1 -1
  24. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js +1 -1
  25. package/dist/martyrs/src/components/Loader/{Loader.vue.js → Loader.vue2.js} +3 -3
  26. package/dist/martyrs/src/components/Loader/Loader.vue2.js.map +1 -0
  27. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue.js +1 -1
  28. package/dist/martyrs/src/components/Media/Media.vue.js +1 -1
  29. package/dist/martyrs/src/components/Menu/{Menu.vue.js → Menu.vue2.js} +2 -2
  30. package/dist/martyrs/src/components/Menu/Menu.vue2.js.map +1 -0
  31. package/dist/martyrs/src/components/Select/{Select.vue.js → Select.vue2.js} +2 -2
  32. package/dist/martyrs/src/components/Select/Select.vue2.js.map +1 -0
  33. package/dist/martyrs/src/components/Tooltip/Tooltip.vue2.js +17 -22
  34. package/dist/martyrs/src/components/Tooltip/Tooltip.vue2.js.map +1 -1
  35. package/dist/martyrs/src/components/UploadImage/UploadImage.vue.js +1 -1
  36. package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.js +1 -1
  37. package/dist/martyrs/src/modules/auth/auth.client.js +18 -24
  38. package/dist/martyrs/src/modules/auth/auth.client.js.map +1 -1
  39. package/dist/martyrs/src/modules/auth/views/components/blocks/OtpDialog.vue.js +178 -0
  40. package/dist/martyrs/src/modules/auth/views/components/blocks/OtpDialog.vue.js.map +1 -0
  41. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +1 -1
  42. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +53 -45
  43. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js.map +1 -1
  44. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js +1 -1
  45. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js +198 -14
  46. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js.map +1 -1
  47. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js +1 -1
  48. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +70 -29
  49. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js.map +1 -1
  50. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +2 -2
  51. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js.map +1 -1
  52. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +86 -30
  53. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js.map +1 -1
  54. package/dist/martyrs/src/modules/auth/views/plugins/otp.plugin.js +100 -0
  55. package/dist/martyrs/src/modules/auth/views/plugins/otp.plugin.js.map +1 -0
  56. package/dist/martyrs/src/modules/auth/views/router/auth.router.js +2 -31
  57. package/dist/martyrs/src/modules/auth/views/router/auth.router.js.map +1 -1
  58. package/dist/martyrs/src/modules/auth/views/router/users.router.js +0 -14
  59. package/dist/martyrs/src/modules/auth/views/router/users.router.js.map +1 -1
  60. package/dist/martyrs/src/modules/auth/views/store/auth.js +1 -56
  61. package/dist/martyrs/src/modules/auth/views/store/auth.js.map +1 -1
  62. package/dist/martyrs/src/modules/auth/views/store/users.js +5 -1
  63. package/dist/martyrs/src/modules/auth/views/store/users.js.map +1 -1
  64. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js +1 -1
  65. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +2 -2
  66. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +1 -1
  67. package/dist/martyrs/src/modules/core/views/components/blocks/CardHeader.vue.js +0 -1
  68. package/dist/martyrs/src/modules/core/views/components/blocks/CardHeader.vue.js.map +1 -1
  69. package/dist/martyrs/src/modules/core/views/components/blocks/PopupAuth.vue.js +1 -1
  70. package/dist/martyrs/src/modules/core/views/components/blocks/PopupDateSelector.vue.js +2 -2
  71. package/dist/martyrs/src/modules/core/views/components/elements/OnlineIndicator.vue.js +74 -0
  72. package/dist/martyrs/src/modules/core/views/components/elements/OnlineIndicator.vue.js.map +1 -0
  73. package/dist/martyrs/src/modules/core/views/components/layouts/App.vue.js.map +1 -1
  74. package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js +64 -48
  75. package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js.map +1 -1
  76. package/dist/martyrs/src/modules/core/views/components/pages/404.vue.js +10 -33
  77. package/dist/martyrs/src/modules/core/views/components/pages/404.vue.js.map +1 -1
  78. package/dist/martyrs/src/modules/core/views/components/partials/Header.vue.js +2 -2
  79. package/dist/martyrs/src/modules/core/views/components/partials/NavigationBar.vue.js +1 -1
  80. package/dist/martyrs/src/modules/events/components/elements/ButtonCheck.vue.js +1 -1
  81. package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.js +1 -1
  82. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +2 -2
  83. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +1 -1
  84. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +1 -1
  85. package/dist/martyrs/src/modules/events/components/sections/EditTickets.vue.js +1 -1
  86. package/dist/martyrs/src/modules/events/components/sections/Feed.vue.js +1 -1
  87. package/dist/martyrs/src/modules/events/components/sections/List.vue.js +1 -1
  88. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +2 -2
  89. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js +2 -2
  90. package/dist/martyrs/src/modules/inventory/components/forms/ColumnSettingsMenu.vue.js +1 -1
  91. package/dist/martyrs/src/modules/inventory/components/forms/HistoryView.vue.js +1 -1
  92. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js +2 -2
  93. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +2 -2
  94. package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.js +1 -1
  95. package/dist/martyrs/src/modules/music/components/blocks/ActionButtons.vue.js +1 -1
  96. package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js +1 -1
  97. package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js +1 -1
  98. package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.js +1 -1
  99. package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.js +1 -1
  100. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js +2 -2
  101. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +3 -3
  102. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js +1 -1
  103. package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.js +1 -1
  104. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js +2 -2
  105. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +2 -2
  106. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js +2 -2
  107. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js +1 -1
  108. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +2 -2
  109. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js +2 -2
  110. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +2 -2
  111. package/dist/martyrs/src/modules/music/components/pages/TrackCreate.vue.js +0 -1
  112. package/dist/martyrs/src/modules/music/components/pages/TrackCreate.vue.js.map +1 -1
  113. package/dist/martyrs/src/modules/music/components/player/FullscreenPlayer.vue.js +1 -1
  114. package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.js +1 -1
  115. package/dist/martyrs/src/modules/music/components/player/PlayerControls.vue.js +1 -1
  116. package/dist/martyrs/src/modules/music/components/player/VolumeControl.vue.js +1 -1
  117. package/dist/martyrs/src/modules/notifications/components/sections/NotificationPreferences.vue.js +2 -2
  118. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js +2 -2
  119. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js +2 -2
  120. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.js +1 -2
  121. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.js.map +1 -1
  122. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +2 -2
  123. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js +1 -1
  124. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +1 -1
  125. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.js +1 -1
  126. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.js +1 -1
  127. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +1 -1
  128. package/dist/martyrs/src/modules/orders/components/sections/FormPayment.vue.js +1 -1
  129. package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js +1 -1
  130. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js +1 -1
  131. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js +1 -1
  132. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js +1 -1
  133. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +1 -1
  134. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +1 -1
  135. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +3 -3
  136. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +1 -2
  137. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js.map +1 -1
  138. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +2 -2
  139. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +1 -2
  140. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js.map +1 -1
  141. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js +0 -1
  142. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js.map +1 -1
  143. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +1 -1
  144. package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.js +1 -1
  145. package/dist/martyrs/src/modules/products/components/elements/Image360.vue.js +1 -1
  146. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +0 -1
  147. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js.map +1 -1
  148. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +3 -3
  149. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +0 -1
  150. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js.map +1 -1
  151. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +2 -2
  152. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +1 -1
  153. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js.map +1 -1
  154. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js +1 -1
  155. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +2 -2
  156. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +2 -2
  157. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js +1 -1
  158. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js +1 -1
  159. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +1 -1
  160. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +1 -1
  161. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js +1 -1
  162. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js +2 -2
  163. package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.js +1 -1
  164. package/dist/martyrs/src/modules/spots/components/pages/Map.vue.js +1 -1
  165. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +2 -2
  166. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +2 -2
  167. package/dist/martyrs.css +1 -1
  168. package/dist/martyrs.es.js +1 -1
  169. package/dist/music.server.js +1 -1
  170. package/dist/notifications.server.js +2 -2
  171. package/dist/orders.server.js +8 -7
  172. package/dist/organizations.server.js +3 -3
  173. package/dist/pages.server.js +1 -1
  174. package/dist/products.server.js +3 -3
  175. package/dist/profile.schema-C31Lynn3.js +21 -0
  176. package/dist/rents.server.js +2 -2
  177. package/dist/reports.server.js +1 -1
  178. package/dist/sessions.service-COcwjd0f.js +86 -0
  179. package/dist/spots.server.js +1 -1
  180. package/dist/style.css +180 -110
  181. package/dist/{tickets.controller-B7r0mK-5.js → tickets.controller-DdF85W-i.js} +1 -1
  182. package/dist/visitors.service-B1dhhuSo.js +83 -0
  183. package/dist/wallet.server.js +3 -3
  184. package/dist/{web-BA6h6Z8P.js → web-O7lXcjg0.js} +1 -1
  185. package/package.json +3 -1
  186. package/src/components/Button/Button.vue +61 -15
  187. package/src/components/Loader/Loader.vue +1 -1
  188. package/src/components/Tooltip/Tooltip.vue +31 -23
  189. package/src/modules/TASKS.MD +30 -1
  190. package/src/modules/auth/CLAUDE.md +381 -0
  191. package/src/modules/auth/FIXES.md +0 -38
  192. package/src/modules/auth/auth.client.js +4 -6
  193. package/src/modules/auth/auth.server.js +19 -16
  194. package/src/modules/auth/controllers/middlewares/authJwt.js +59 -17
  195. package/src/modules/auth/controllers/middlewares/index.js +4 -1
  196. package/src/modules/auth/controllers/middlewares/otp.middleware.js +166 -0
  197. package/src/modules/auth/controllers/middlewares/verifySignUp.js +0 -1
  198. package/src/modules/auth/controllers/middlewares/verifyUser.js +58 -11
  199. package/src/modules/auth/controllers/routes/auth.routes.js +48 -6
  200. package/src/modules/auth/controllers/routes/users.routes.js +29 -8
  201. package/src/modules/auth/controllers/services/auth.service.js +62 -12
  202. package/src/modules/auth/controllers/services/otp.service.js +109 -0
  203. package/src/modules/auth/controllers/services/users.service.js +46 -6
  204. package/src/modules/auth/models/otp.model.js +20 -0
  205. package/src/modules/auth/views/components/blocks/OtpDialog.vue +168 -0
  206. package/src/modules/auth/views/components/pages/Profile.vue +18 -13
  207. package/src/modules/auth/views/components/pages/ProfileEditAccount.vue +199 -45
  208. package/src/modules/auth/views/components/pages/ResetPassword.vue +170 -132
  209. package/src/modules/auth/views/components/pages/SignIn.vue +2 -1
  210. package/src/modules/auth/views/components/pages/SignUp.vue +203 -147
  211. package/src/modules/auth/views/plugins/otp.plugin.js +104 -0
  212. package/src/modules/auth/views/router/auth.router.js +1 -24
  213. package/src/modules/auth/views/router/users.router.js +1 -12
  214. package/src/modules/auth/views/store/auth.js +0 -68
  215. package/src/modules/auth/views/store/users.js +6 -2
  216. package/src/modules/chats/chats.server.js +1 -1
  217. package/src/modules/community/community.server.js +1 -1
  218. package/src/modules/core/controllers/classes/core.websocket.js +57 -6
  219. package/src/modules/core/controllers/middlewares/visitor.logger.js +49 -0
  220. package/src/modules/core/controllers/services/requests.service.js +53 -0
  221. package/src/modules/core/controllers/services/sessions.service.js +98 -0
  222. package/src/modules/core/controllers/services/visitors.service.js +102 -0
  223. package/src/modules/core/controllers/utils/mailing.js +16 -3
  224. package/src/modules/core/core.server.js +31 -16
  225. package/src/modules/core/models/log.model.js +24 -0
  226. package/src/modules/core/models/request.model.js +30 -0
  227. package/src/modules/core/models/session.model.js +43 -0
  228. package/src/modules/core/models/visitor.model.js +28 -0
  229. package/src/modules/core/views/components/elements/OnlineIndicator.vue +115 -0
  230. package/src/modules/core/views/components/layouts/App.vue +2 -2
  231. package/src/modules/core/views/components/layouts/Client.vue +443 -477
  232. package/src/modules/core/views/components/pages/404.vue +2 -3
  233. package/src/modules/events/events.server.js +1 -1
  234. package/src/modules/files/files.server.js +1 -1
  235. package/src/modules/gallery/gallery.server.js +1 -1
  236. package/src/modules/governance/governance.server.js +1 -1
  237. package/src/modules/icons/icons.server.js +1 -1
  238. package/src/modules/inventory/inventory.server.js +1 -1
  239. package/src/modules/marketplace/marketplace.server.js +1 -1
  240. package/src/modules/notifications/notifications.server.js +1 -1
  241. package/src/modules/orders/controllers/orders.controller.js +3 -3
  242. package/src/modules/orders/orders.server.js +1 -1
  243. package/src/modules/organizations/organizations.server.js +1 -1
  244. package/src/modules/pages/pages.server.js +1 -1
  245. package/src/modules/products/components/pages/Products.vue +1 -1
  246. package/src/modules/products/products.server.js +1 -1
  247. package/src/modules/rents/rents.server.js +1 -1
  248. package/src/modules/reports/reports.server.js +1 -1
  249. package/src/modules/spots/spots.server.js +1 -1
  250. package/src/modules/wallet/wallet.server.js +1 -1
  251. package/dist/_virtual/alignment-pattern.js +0 -5
  252. package/dist/_virtual/alignment-pattern.js.map +0 -1
  253. package/dist/_virtual/browser.js +0 -8
  254. package/dist/_virtual/browser.js.map +0 -1
  255. package/dist/_virtual/browser2.js +0 -5
  256. package/dist/_virtual/browser2.js.map +0 -1
  257. package/dist/_virtual/canvas.js +0 -5
  258. package/dist/_virtual/canvas.js.map +0 -1
  259. package/dist/_virtual/dijkstra.js +0 -5
  260. package/dist/_virtual/dijkstra.js.map +0 -1
  261. package/dist/_virtual/error-correction-code.js +0 -5
  262. package/dist/_virtual/error-correction-code.js.map +0 -1
  263. package/dist/_virtual/error-correction-level.js +0 -5
  264. package/dist/_virtual/error-correction-level.js.map +0 -1
  265. package/dist/_virtual/finder-pattern.js +0 -5
  266. package/dist/_virtual/finder-pattern.js.map +0 -1
  267. package/dist/_virtual/format-info.js +0 -5
  268. package/dist/_virtual/format-info.js.map +0 -1
  269. package/dist/_virtual/galois-field.js +0 -5
  270. package/dist/_virtual/galois-field.js.map +0 -1
  271. package/dist/_virtual/mask-pattern.js +0 -5
  272. package/dist/_virtual/mask-pattern.js.map +0 -1
  273. package/dist/_virtual/mode.js +0 -5
  274. package/dist/_virtual/mode.js.map +0 -1
  275. package/dist/_virtual/polynomial.js +0 -5
  276. package/dist/_virtual/polynomial.js.map +0 -1
  277. package/dist/_virtual/qrcode.js +0 -5
  278. package/dist/_virtual/qrcode.js.map +0 -1
  279. package/dist/_virtual/regex.js +0 -5
  280. package/dist/_virtual/regex.js.map +0 -1
  281. package/dist/_virtual/segments.js +0 -5
  282. package/dist/_virtual/segments.js.map +0 -1
  283. package/dist/_virtual/svg-tag.js +0 -5
  284. package/dist/_virtual/svg-tag.js.map +0 -1
  285. package/dist/_virtual/utils.js +0 -5
  286. package/dist/_virtual/utils.js.map +0 -1
  287. package/dist/_virtual/utils2.js +0 -5
  288. package/dist/_virtual/utils2.js.map +0 -1
  289. package/dist/_virtual/version-check.js +0 -5
  290. package/dist/_virtual/version-check.js.map +0 -1
  291. package/dist/_virtual/version.js +0 -5
  292. package/dist/_virtual/version.js.map +0 -1
  293. package/dist/index-_Edcmck_.js +0 -170
  294. package/dist/martyrs/dist/main-xL-jtBkT.js.map +0 -1
  295. package/dist/martyrs/node_modules/.pnpm/bignumber.js@9.1.2/node_modules/bignumber.js/bignumber.js +0 -1336
  296. package/dist/martyrs/node_modules/.pnpm/bignumber.js@9.1.2/node_modules/bignumber.js/bignumber.js.map +0 -1
  297. package/dist/martyrs/src/components/Button/Button.vue2.js.map +0 -1
  298. package/dist/martyrs/src/components/Loader/Loader.vue.js.map +0 -1
  299. package/dist/martyrs/src/components/Menu/Menu.vue.js.map +0 -1
  300. package/dist/martyrs/src/components/Select/Select.vue.js.map +0 -1
  301. package/dist/martyrs/src/modules/auth/views/components/pages/EnterCode.vue.js +0 -166
  302. package/dist/martyrs/src/modules/auth/views/components/pages/EnterCode.vue.js.map +0 -1
  303. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js +0 -118
  304. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js.map +0 -1
  305. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.js +0 -360
  306. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.js.map +0 -1
  307. package/dist/martyrs/src/modules/auth/views/store/twofa.js +0 -40
  308. package/dist/martyrs/src/modules/auth/views/store/twofa.js.map +0 -1
  309. package/dist/martyrs/src/modules/wallet/views/components/blocks/CardBalanceReplenished.vue.js +0 -43
  310. package/dist/martyrs/src/modules/wallet/views/components/blocks/CardBalanceReplenished.vue.js.map +0 -1
  311. package/dist/martyrs/src/modules/wallet/views/components/blocks/CardDeposit.vue.js +0 -47
  312. package/dist/martyrs/src/modules/wallet/views/components/blocks/CardDeposit.vue.js.map +0 -1
  313. package/dist/martyrs/src/modules/wallet/views/components/blocks/CashDeposit.vue.js +0 -29
  314. package/dist/martyrs/src/modules/wallet/views/components/blocks/CashDeposit.vue.js.map +0 -1
  315. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.js +0 -89
  316. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.js.map +0 -1
  317. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDepositProcessing.vue.js +0 -136
  318. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDepositProcessing.vue.js.map +0 -1
  319. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js +0 -238
  320. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js.map +0 -1
  321. package/dist/martyrs/src/modules/wallet/views/localization/wallet.json.js +0 -9
  322. package/dist/martyrs/src/modules/wallet/views/localization/wallet.json.js.map +0 -1
  323. package/dist/martyrs/src/modules/wallet/views/store/wallet.store.js +0 -134
  324. package/dist/martyrs/src/modules/wallet/views/store/wallet.store.js.map +0 -1
  325. package/dist/node_modules/.pnpm/dijkstrajs@1.0.3/node_modules/dijkstrajs/dijkstra.js +0 -106
  326. package/dist/node_modules/.pnpm/dijkstrajs@1.0.3/node_modules/dijkstrajs/dijkstra.js.map +0 -1
  327. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/browser.js +0 -79
  328. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/browser.js.map +0 -1
  329. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/can-promise.js +0 -14
  330. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/can-promise.js.map +0 -1
  331. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/alignment-pattern.js +0 -43
  332. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/alignment-pattern.js.map +0 -1
  333. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/alphanumeric-data.js +0 -85
  334. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/alphanumeric-data.js.map +0 -1
  335. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/bit-buffer.js +0 -40
  336. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/bit-buffer.js.map +0 -1
  337. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/bit-matrix.js +0 -34
  338. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/bit-matrix.js.map +0 -1
  339. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/byte-data.js +0 -36
  340. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/byte-data.js.map +0 -1
  341. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/error-correction-code.js +0 -367
  342. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/error-correction-code.js.map +0 -1
  343. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/error-correction-level.js +0 -52
  344. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/error-correction-level.js.map +0 -1
  345. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/finder-pattern.js +0 -25
  346. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/finder-pattern.js.map +0 -1
  347. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/format-info.js +0 -24
  348. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/format-info.js.map +0 -1
  349. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/galois-field.js +0 -38
  350. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/galois-field.js.map +0 -1
  351. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/kanji-data.js +0 -46
  352. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/kanji-data.js.map +0 -1
  353. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/mask-pattern.js +0 -149
  354. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/mask-pattern.js.map +0 -1
  355. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/mode.js +0 -90
  356. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/mode.js.map +0 -1
  357. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/numeric-data.js +0 -41
  358. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/numeric-data.js.map +0 -1
  359. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/polynomial.js +0 -44
  360. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/polynomial.js.map +0 -1
  361. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/qrcode.js +0 -279
  362. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/qrcode.js.map +0 -1
  363. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/reed-solomon-encoder.js +0 -38
  364. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/reed-solomon-encoder.js.map +0 -1
  365. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/regex.js +0 -33
  366. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/regex.js.map +0 -1
  367. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/segments.js +0 -201
  368. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/segments.js.map +0 -1
  369. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/utils.js +0 -84
  370. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/utils.js.map +0 -1
  371. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/version-check.js +0 -14
  372. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/version-check.js.map +0 -1
  373. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/version.js +0 -107
  374. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/version.js.map +0 -1
  375. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/canvas.js +0 -61
  376. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/canvas.js.map +0 -1
  377. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/svg-tag.js +0 -64
  378. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/svg-tag.js.map +0 -1
  379. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/utils.js +0 -87
  380. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/utils.js.map +0 -1
  381. package/dist/profile.schema-CjLOfG7b.js +0 -92
  382. package/src/modules/auth/controllers/middlewares/visitor.logger.js +0 -75
  383. package/src/modules/auth/controllers/routes/twofa.routes.js +0 -8
  384. package/src/modules/auth/controllers/services/twofa.service.js +0 -30
  385. package/src/modules/auth/models/request.model.js +0 -14
  386. package/src/modules/auth/models/visitor.model.js +0 -11
  387. package/src/modules/auth/views/components/pages/EnterCode.vue +0 -204
  388. package/src/modules/auth/views/components/pages/EnterPassword.vue +0 -123
  389. package/src/modules/auth/views/components/sections/ProfileEditCredentials.vue +0 -329
  390. package/src/modules/auth/views/store/twofa.js +0 -70
  391. package/src/modules/auth//320/220/320/240/320/245/320/230/320/242/320/225/320/232/320/242/320/243/320/240/320/220.md +0 -445
@@ -1,12 +1,13 @@
1
- import { a as applyProfileSchema, m as modelsFactory } from "./profile.schema-CjLOfG7b.js";
2
- import { m as middlewareIndexFactory } from "./index-_Edcmck_.js";
1
+ import { m as middlewareIndexFactory, i as initOtpService } from "./index-kvBwwb0w.js";
3
2
  import bcrypt from "bcryptjs";
4
3
  import jwt from "jsonwebtoken";
5
4
  import { Types } from "mongoose";
6
5
  import jwkToPem from "jwk-to-pem";
7
- import { m as mailing } from "./mailing-DuEFRsa3.js";
6
+ import { g as getSessionsService } from "./sessions.service-COcwjd0f.js";
7
+ import { g as getVisitorsService } from "./visitors.service-B1dhhuSo.js";
8
8
  import { a as addUserStatusFields, b as addMembersQuantity } from "./addUserStatusFields-Cc-JpmPo.js";
9
9
  import { a as applyCredentialsSchema } from "./credentials.schema--2vvcu8c.js";
10
+ import { a as applyProfileSchema } from "./profile.schema-C31Lynn3.js";
10
11
  import { a as applySocialsSchema } from "./socials.schema-DxnnaBgO.js";
11
12
  async function verifyAppleIdToken(id_token) {
12
13
  const decodedToken = jwt.decode(id_token, { complete: true });
@@ -43,7 +44,7 @@ async function verifyAppleIdToken(id_token) {
43
44
  return decodedToken.payload;
44
45
  }
45
46
  const ObjectId$1 = { Types }.Types.ObjectId;
46
- const controllerFactory$2 = (db) => {
47
+ const controllerFactory$1 = (db) => {
47
48
  const User = db.user;
48
49
  const Membership = db.membership;
49
50
  db.department;
@@ -91,9 +92,24 @@ const controllerFactory$2 = (db) => {
91
92
  return res.status(401).send({ errorCode: "INCORRECT_PASSWORD_ENTERED", accessToken: null });
92
93
  }
93
94
  }
95
+ const sessionsService = getSessionsService();
96
+ const session = await sessionsService.createSession({
97
+ userId: user._id,
98
+ visitorId: req.visitorId || null,
99
+ req
100
+ });
101
+ if (req.visitorId) {
102
+ const visitorsService = getVisitorsService();
103
+ await visitorsService.linkVisitorToUser({
104
+ visitorId: req.visitorId,
105
+ userId: user._id,
106
+ sessionId: session._id
107
+ });
108
+ }
94
109
  const token = jwt.sign(
95
110
  {
96
- _id: user._id
111
+ _id: user._id,
112
+ session_id: session._id
97
113
  },
98
114
  process.env.SECRET_KEY,
99
115
  {
@@ -167,9 +183,24 @@ const controllerFactory$2 = (db) => {
167
183
  console.log(err);
168
184
  }
169
185
  }
186
+ const sessionsService = getSessionsService();
187
+ const session = await sessionsService.createSession({
188
+ userId: user._id,
189
+ visitorId: req.visitorId || null,
190
+ req
191
+ });
192
+ if (req.visitorId) {
193
+ const visitorsService = getVisitorsService();
194
+ await visitorsService.linkVisitorToUser({
195
+ visitorId: req.visitorId,
196
+ userId: user._id,
197
+ sessionId: session._id
198
+ });
199
+ }
170
200
  const token = jwt.sign(
171
201
  {
172
202
  _id: user._id,
203
+ session_id: session._id,
173
204
  organization: invite ? invite.organization : null
174
205
  },
175
206
  process.env.SECRET_KEY,
@@ -189,17 +220,11 @@ const controllerFactory$2 = (db) => {
189
220
  };
190
221
  const updatePassword = async (req, res) => {
191
222
  try {
192
- const { phone, email, password, type } = req.body;
193
- let query;
194
- if (type === "phone" && phone) {
195
- query = { phone };
196
- }
197
- if (type === "email" && email) {
198
- query = { email };
199
- }
200
- if (!query || !password) {
223
+ const { identifier, password, type } = req.body;
224
+ if (!identifier || !type || !password) {
201
225
  return res.status(400).send({ errorCode: "MISSING_REQUIRED_PARAMETERS" });
202
226
  }
227
+ const query = type === "phone" ? { phone: identifier } : { email: identifier };
203
228
  const salt = await bcrypt.genSalt(8);
204
229
  const hashedPassword = await bcrypt.hash(password, salt);
205
230
  const user = await User.findOneAndUpdate(query, {
@@ -208,7 +233,14 @@ const controllerFactory$2 = (db) => {
208
233
  if (!user) {
209
234
  return res.status(404).send({ errorCode: "ERROR_UPDATING_USER" });
210
235
  }
211
- const token = jwt.sign({ _id: user._id }, process.env.SECRET_KEY, {
236
+ const sessionsService = getSessionsService();
237
+ await sessionsService.deactivateAllUserSessions(user._id);
238
+ const session = await sessionsService.createSession({
239
+ userId: user._id,
240
+ visitorId: req.visitorId || null,
241
+ req
242
+ });
243
+ const token = jwt.sign({ _id: user._id, session_id: session._id }, process.env.SECRET_KEY, {
212
244
  expiresIn: 86400
213
245
  });
214
246
  const authorities = user.roles.map((role) => `ROLE_${role.name.toUpperCase()}`);
@@ -231,54 +263,54 @@ const controllerFactory$2 = (db) => {
231
263
  updatePassword
232
264
  };
233
265
  };
234
- const { sendEmail, sendSms } = mailing;
235
- const controllerFactory$1 = (db) => {
236
- const sendcode = async (req, res) => {
237
- const code = Math.floor(1e3 + Math.random() * 9e3);
238
- const type = req.body.type;
239
- const method = req.body.method;
240
- if (type === "email") {
241
- const emailSent = await sendEmail(req.body.email, `${process.env.APP_NAME} Verification Code`, `Your ${process.env.APP_NAME} verification code is ${code}`);
242
- if (emailSent) {
243
- res.send({ code, type, method });
244
- } else {
245
- console.log(emailSent);
246
- res.status(500).send("Failed to send email");
247
- }
248
- } else if (type === "phone") {
249
- const smsSent = await sendSms(req.body.phone, `Your ${process.env.APP_NAME} verification code: ${code}`);
250
- if (smsSent) {
251
- res.send({ code, type, method });
252
- } else {
253
- res.status(500).send("Failed to send SMS");
254
- }
255
- }
256
- };
257
- return {
258
- sendcode
259
- };
260
- };
261
266
  const authRoutes = (function(app, db, origins) {
262
- const controller = controllerFactory$2(db);
263
- const controllerTwofa = controllerFactory$1();
264
- const { verifySignUp, verifyUser } = middlewareIndexFactory(db);
267
+ const controller = controllerFactory$1(db);
268
+ const { verifySignUp, verifyUser, otp, authJwt } = middlewareIndexFactory(db);
265
269
  app.post(
266
270
  "/api/auth/signup",
267
271
  [
268
- verifySignUp.checkDuplicateUsernameOrEmail
269
- // verifySignUp.checkRolesExisted
272
+ verifySignUp.checkDuplicateUsernameOrEmail,
273
+ otp.stepUp("signup", (req) => ({
274
+ identifier: req.body.type === "email" ? req.body.email : req.body.phone,
275
+ type: req.body.type
276
+ }))
270
277
  ],
271
278
  controller.signup
272
279
  );
273
280
  app.post("/api/auth/signin", controller.signin);
274
- app.post("/api/auth/reset-password", [verifyUser.checkUserExist], controllerTwofa.sendcode);
275
- app.post("/api/auth/update-password", controller.updatePassword);
276
- });
277
- const twofaRoutes = (function(app, db) {
278
- const controller = controllerFactory$1();
279
- const { verifySignUp, verifyUser } = middlewareIndexFactory(db);
280
- app.post("/api/twofa/sendcode", [verifySignUp.checkDuplicateUsernameOrEmail], controller.sendcode);
281
- app.post("/api/twofa/sendcodereset", [verifyUser.checkUserExist], controller.sendcode);
281
+ app.post(
282
+ "/api/auth/reset-password",
283
+ [
284
+ verifyUser.checkUserExist,
285
+ otp.stepUp("reset-password", (req) => ({
286
+ identifier: req.body.identifier,
287
+ type: req.body.type
288
+ }))
289
+ ],
290
+ controller.updatePassword
291
+ );
292
+ app.post("/api/auth/logout", [authJwt.verifyToken()], async (req, res) => {
293
+ try {
294
+ if (req.sessionId) {
295
+ const sessionsService = getSessionsService();
296
+ await sessionsService.deactivateSession(req.sessionId);
297
+ }
298
+ res.status(200).send({ success: true });
299
+ } catch (err) {
300
+ res.status(500).send({ message: err.message });
301
+ }
302
+ });
303
+ app.post("/api/auth/logout-all", [authJwt.verifyToken()], async (req, res) => {
304
+ try {
305
+ if (req.userId) {
306
+ const sessionsService = getSessionsService();
307
+ await sessionsService.deactivateAllUserSessions(req.userId);
308
+ }
309
+ res.status(200).send({ success: true });
310
+ } catch (err) {
311
+ res.status(500).send({ message: err.message });
312
+ }
313
+ });
282
314
  });
283
315
  const ObjectId = { Types }.Types.ObjectId;
284
316
  const controllerFactory = (db) => {
@@ -343,6 +375,13 @@ const controllerFactory = (db) => {
343
375
  });
344
376
  query.push(addMembersQuantity());
345
377
  if (req.query.user) query.push(addUserStatusFields(req.query.user));
378
+ query.push({
379
+ $project: {
380
+ password: 0,
381
+ refreshToken: 0,
382
+ __v: 0
383
+ }
384
+ });
346
385
  query.push({
347
386
  $skip: skip
348
387
  });
@@ -371,14 +410,16 @@ const controllerFactory = (db) => {
371
410
  if (!user) {
372
411
  return res.status(404).send({ errorCode: "USER_NOT_CREATED", message: "User is not created." });
373
412
  }
374
- res.status(200).send(user);
413
+ const { password, refreshToken, __v, ...safeUser } = user.toObject();
414
+ res.status(200).send(safeUser);
375
415
  } catch (err) {
376
416
  return res.status(500).send({ errorCode: "INTERNAL_SERVER_ERROR", message: err });
377
417
  }
378
418
  };
379
419
  const update = async (req, res) => {
380
420
  try {
381
- const user = await User.findOneAndUpdate({ _id: req.params._id }, req.body, { new: true });
421
+ const { email, phone, ...safeData } = req.body;
422
+ const user = await User.findOneAndUpdate({ _id: req.params._id }, safeData, { new: true }).select("-password -refreshToken -__v");
382
423
  if (!user) {
383
424
  return res.status(404).send({ errorCode: "UPDATE_FAILED", message: "Something wrong when updating user." });
384
425
  }
@@ -387,11 +428,30 @@ const controllerFactory = (db) => {
387
428
  return res.status(500).send({ errorCode: "INTERNAL_SERVER_ERROR", message: err });
388
429
  }
389
430
  };
390
- const remove = async (req, res) => {
431
+ const updateEmail = async (req, res) => {
391
432
  try {
392
- const user = await User.findOneAndDelete({ phone: req.params.phone });
433
+ const user = await User.findOneAndUpdate(
434
+ { _id: req.params._id },
435
+ { email: req.body.email },
436
+ { new: true }
437
+ ).select("-password -refreshToken -__v");
393
438
  if (!user) {
394
- return res.status(404).send({ errorCode: "DELETION_FAILED", message: "User is not deleted." });
439
+ return res.status(404).send({ errorCode: "UPDATE_FAILED", message: "Something wrong when updating email." });
440
+ }
441
+ res.status(200).send(user);
442
+ } catch (err) {
443
+ return res.status(500).send({ errorCode: "INTERNAL_SERVER_ERROR", message: err });
444
+ }
445
+ };
446
+ const updatePhone = async (req, res) => {
447
+ try {
448
+ const user = await User.findOneAndUpdate(
449
+ { _id: req.params._id },
450
+ { phone: req.body.phone },
451
+ { new: true }
452
+ ).select("-password -refreshToken -__v");
453
+ if (!user) {
454
+ return res.status(404).send({ errorCode: "UPDATE_FAILED", message: "Something wrong when updating phone." });
395
455
  }
396
456
  res.status(200).send(user);
397
457
  } catch (err) {
@@ -402,31 +462,35 @@ const controllerFactory = (db) => {
402
462
  read,
403
463
  create,
404
464
  update,
405
- remove
465
+ updateEmail,
466
+ updatePhone
406
467
  };
407
468
  };
408
469
  const usersRoutes = (function(app, db, origins) {
409
470
  const controller = controllerFactory(db);
410
- const { authJwt, verifyUser } = middlewareIndexFactory(db);
471
+ const { authJwt, verifyUser, otp } = middlewareIndexFactory(db);
411
472
  app.post("/api/users", [authJwt.verifyToken(), verifyUser.checkDuplicateUsername], controller.create);
412
473
  app.get("/api/users", controller.read);
413
- app.put("/api/users/:_id", [authJwt.verifyToken(), verifyUser.checkDuplicateUsername], controller.update);
414
- app.delete("/api/users/:_id", [authJwt.verifyToken()], controller.remove);
474
+ app.put("/api/users/:_id", [
475
+ authJwt.verifyToken(),
476
+ verifyUser.checkOwnership,
477
+ verifyUser.checkDuplicateUsername
478
+ ], controller.update);
479
+ app.put("/api/users/:_id/email", [
480
+ authJwt.verifyToken(),
481
+ authJwt.loadUser,
482
+ verifyUser.checkOwnership,
483
+ verifyUser.checkDuplicateEmail,
484
+ otp.dualVerify("email")
485
+ ], controller.updateEmail);
486
+ app.put("/api/users/:_id/phone", [
487
+ authJwt.verifyToken(),
488
+ authJwt.loadUser,
489
+ verifyUser.checkOwnership,
490
+ verifyUser.checkDuplicatePhone,
491
+ otp.dualVerify("phone")
492
+ ], controller.updatePhone);
415
493
  });
416
- const RequestModel = (db) => {
417
- const RequestSchema = new db.mongoose.Schema({
418
- visitor: {
419
- type: db.mongoose.Schema.Types.ObjectId,
420
- ref: "Visitor"
421
- },
422
- path: String,
423
- method: String,
424
- timestamp: { type: Date, default: Date.now }
425
- });
426
- RequestSchema.index({ visitor: 1 });
427
- const Request = db.mongoose.model("Request", RequestSchema);
428
- return Request;
429
- };
430
494
  const RoleModel = (db) => {
431
495
  const RoleSchema = new db.mongoose.Schema({
432
496
  name: String
@@ -476,42 +540,56 @@ const UserModel = (db) => {
476
540
  const User = db.mongoose.model("User", UserSchema);
477
541
  return User;
478
542
  };
479
- const VisitorModel = (db) => {
480
- const VisitorSchema = new db.mongoose.Schema({
481
- ip: String,
482
- userAgent: String,
483
- acceptLanguage: String,
484
- fingerprint: { type: String, unique: true }
543
+ const OtpModel = (db) => {
544
+ const OtpSchema = new db.mongoose.Schema({
545
+ challengeId: { type: String, required: true, unique: true },
546
+ identifier: { type: String, required: true },
547
+ target: { type: db.mongoose.Schema.Types.ObjectId, ref: "User", default: null },
548
+ code: { type: String, required: true },
549
+ type: { type: String, enum: ["email", "phone"], required: true },
550
+ purpose: { type: String, required: true },
551
+ attempts: { type: Number, default: 0 },
552
+ verifiedAt: { type: Date, default: null },
553
+ invalidatedAt: { type: Date, default: null },
554
+ createdAt: { type: Date, default: Date.now, expires: 600 }
485
555
  });
486
- const Visitor = db.mongoose.model("Visitor", VisitorSchema);
487
- return Visitor;
556
+ OtpSchema.index({ identifier: 1, purpose: 1 });
557
+ OtpSchema.index({ target: 1, purpose: 1 }, { sparse: true });
558
+ return db.mongoose.model("Otp", OtpSchema);
488
559
  };
489
- function initializeAuth(app, db, origins, publicPath) {
560
+ function initializeAuth({ app, db, origins, publicPath, wss }) {
490
561
  db.role = RoleModel(db);
491
562
  db.user = UserModel(db);
492
- db.visitor = VisitorModel(db);
493
- db.request = RequestModel(db);
563
+ db.otp = OtpModel(db);
564
+ initOtpService(db);
494
565
  if (app) {
495
566
  authRoutes(app, db);
496
- twofaRoutes(app, db);
497
567
  usersRoutes(app, db);
498
- const visitorModule = modelsFactory(db);
499
- app.use(visitorModule.visitorLogger);
568
+ }
569
+ if (wss) {
570
+ wss.registerRpcMethod("auth", "getOnlineStatus", async ({ userId }) => {
571
+ if (!userId) return { isOnline: false, lastSeenAt: null };
572
+ const isOnline = wss.userConnections.has(userId.toString());
573
+ if (isOnline) return { isOnline: true, lastSeenAt: /* @__PURE__ */ new Date() };
574
+ const session = await db.session.findOne(
575
+ { target: new db.mongoose.Types.ObjectId(userId), isActive: true },
576
+ { lastSeenAt: 1 },
577
+ { sort: { lastSeenAt: -1 } }
578
+ ).lean();
579
+ return { isOnline: false, lastSeenAt: session?.lastSeenAt || null };
580
+ }, { requireAuth: false });
500
581
  }
501
582
  }
502
583
  const models = {
503
584
  RoleModel,
504
- UserModel,
505
- VisitorModel
585
+ UserModel
506
586
  };
507
587
  const routes = {
508
588
  authRoutes,
509
- twofaRoutes,
510
589
  usersRoutes
511
590
  };
512
591
  const controllers = {
513
- AuthController: controllerFactory$2,
514
- TwoFaController: controllerFactory$1,
592
+ AuthController: controllerFactory$1,
515
593
  UsersController: controllerFactory
516
594
  };
517
595
  const auth_server = {
@@ -1,4 +1,5 @@
1
1
  import jwt from "jsonwebtoken";
2
+ import { g as getSessionsService } from "./sessions.service-COcwjd0f.js";
2
3
  const middlewareFactory = (db) => {
3
4
  const User = db.user;
4
5
  const Role = db.role;
@@ -28,6 +29,22 @@ const middlewareFactory = (db) => {
28
29
  }
29
30
  }
30
31
  const decoded = jwt.verify(token, process.env.SECRET_KEY);
32
+ if (decoded.session_id) {
33
+ const sessionsService = getSessionsService();
34
+ const session = await sessionsService.validateSession({
35
+ sessionId: decoded.session_id,
36
+ userId: decoded._id
37
+ });
38
+ if (!session) {
39
+ req.userId = null;
40
+ if (continueOnFail) {
41
+ return next();
42
+ } else {
43
+ return res.status(401).send({ message: "Unauthorized: Session expired or revoked" });
44
+ }
45
+ }
46
+ req.sessionId = decoded.session_id;
47
+ }
31
48
  req.userId = decoded._id;
32
49
  req.user = {
33
50
  _id: decoded._id
@@ -43,6 +60,21 @@ const middlewareFactory = (db) => {
43
60
  }
44
61
  };
45
62
  };
63
+ const loadUser = async (req, res, next) => {
64
+ try {
65
+ if (!req.userId) {
66
+ return res.status(401).json({ errorCode: "AUTH_REQUIRED" });
67
+ }
68
+ const user = await User.findById(req.userId).exec();
69
+ if (!user) {
70
+ return res.status(404).json({ errorCode: "USER_NOT_FOUND" });
71
+ }
72
+ req.user = user;
73
+ next();
74
+ } catch (err) {
75
+ res.status(500).send({ message: err.message });
76
+ }
77
+ };
46
78
  const checkRole = (roleToCheck) => async (req, res, next) => {
47
79
  try {
48
80
  const user = await User.findById(req.userId).exec();
@@ -66,6 +98,7 @@ const middlewareFactory = (db) => {
66
98
  const isModerator = checkRole("moderator");
67
99
  const authJwt = {
68
100
  verifyToken,
101
+ loadUser,
69
102
  isAdmin,
70
103
  isModerator
71
104
  };
@@ -1,5 +1,5 @@
1
- import "./mailing-DuEFRsa3.js";
2
- import { m as middlewareIndexFactory } from "./index-_Edcmck_.js";
1
+ import "./mailing-DT7nbNjZ.js";
2
+ import { m as middlewareIndexFactory } from "./index-kvBwwb0w.js";
3
3
  const controllerFactory = (db) => {
4
4
  const ChatMessage = db.chat;
5
5
  const Department = db.department;
@@ -293,7 +293,7 @@ const chatsRoutes = (function(app, db, wss) {
293
293
  next();
294
294
  });
295
295
  });
296
- function initializeChats(app, db, wss, origins, publicPath) {
296
+ function initializeChats({ app, db, wss, origins, publicPath }) {
297
297
  db.chat = ChatModel(db);
298
298
  if (app) {
299
299
  chatsRoutes(app, db, wss);
@@ -4,7 +4,7 @@ import { a as applyCommonSchema } from "./common.schema-DswiUXKB.js";
4
4
  import { a as applyEngagementSchema } from "./engagement.schema-fh6W1fb_.js";
5
5
  import { a as applyMetadataSchema } from "./metadata.schema-CIRR_WQ-.js";
6
6
  import { a as applyOwnershipSchema } from "./ownership.schema-fwwDf_e5.js";
7
- import { m as middlewareIndexFactory$1 } from "./index-_Edcmck_.js";
7
+ import { m as middlewareIndexFactory$1 } from "./index-kvBwwb0w.js";
8
8
  import { c as coreabac } from "./abac-BPl9Bmf9.js";
9
9
  const ObjectId$2 = { Types }.Types.ObjectId;
10
10
  function getCommentsLookupStage() {
@@ -836,7 +836,7 @@ function initBlogPolicies(abac, db) {
836
836
  );
837
837
  return abac;
838
838
  }
839
- function initializeCommunity(app, db, origins, publicPath) {
839
+ function initializeCommunity({ app, db, origins, publicPath }) {
840
840
  db.blogpost = BlogpostModel(db);
841
841
  db.comment = CommentModel(db);
842
842
  db.reaction = ReactionModel(db);