@abtnode/blocklet-services 1.16.52-beta-20251002-030549-0f91dab2 → 1.16.52-beta-20251005-235515-42ad5caf
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/api/libs/connect/session.js +49 -37
- package/api/middlewares/check-running.js +9 -8
- package/api/middlewares/ensure-org-enabled.js +17 -0
- package/api/routes/blocklet.js +3 -3
- package/api/routes/user-session.js +1 -1
- package/api/routes/user.js +177 -3
- package/api/services/auth/connect/invite.js +1 -1
- package/api/services/auth/connect/issue-passport.js +1 -1
- package/api/services/auth/connect/switch-passport.js +2 -1
- package/api/services/auth/session.js +35 -3
- package/dist/assets/{AdapterDayjs-CAaLcejt.js → AdapterDayjs-wck-CfDF.js} +1 -1
- package/dist/assets/{Google-BMeng9mn.js → Google-BFauCF2k.js} +1 -1
- package/dist/assets/{access-control-Cw0_MVFj.js → access-control-0wy7XAQb.js} +1 -1
- package/dist/assets/{actions-DbBJOD0d.js → actions-B4VXcSRp.js} +1 -1
- package/dist/assets/{add-component-core-B4fftW3o.js → add-component-core-BM7p_09p.js} +23 -23
- package/dist/assets/add-resource-DbQFT7Gg.js +1 -0
- package/dist/assets/{addon-CBAld8jW.js → addon-CUvC0k6Y.js} +1 -1
- package/dist/assets/{advanced-DPeAQM5T.js → advanced-BhCewgzQ.js} +3 -3
- package/dist/assets/{aigne-DD21HBlT.js → aigne-BQckonxP.js} +1 -1
- package/dist/assets/api-rC33aBSs.js +1 -0
- package/dist/assets/{appearance-CwcRjBdx.js → appearance-CjrhZWhd.js} +1 -1
- package/dist/assets/ar-CHd3xUx5.js +7 -0
- package/dist/assets/{arrow-down.svg-B1ffj_Bi.js → arrow-down.svg-f3YCmAji.js} +1 -1
- package/dist/assets/{audit-logs-CIL7B8dX.js → audit-logs-CASGp36e.js} +2 -2
- package/dist/assets/{authorize-DPXeAf_q.js → authorize-CkVYs-vE.js} +1 -1
- package/dist/assets/{base-chart-BbbiwJIa.js → base-chart-UFWO9a3P.js} +1 -1
- package/dist/assets/{base32-CgLd9kUN.js → base32-Cyneng4p.js} +1 -1
- package/dist/assets/{bind-account-Ci1GnBqL.js → bind-account-D6KenxOW.js} +1 -1
- package/dist/assets/{branding-Y62inJ9A.js → branding-BVr5wVa5.js} +5 -5
- package/dist/assets/{branding-CGCnGFEE.js → branding-CHhPscOd.js} +2 -2
- package/dist/assets/branding-DLDF3ZZP.js +1 -0
- package/dist/assets/{bundle-avatar-BrBIjq4r.js → bundle-avatar-BpummNxa.js} +1 -1
- package/dist/assets/button-DGHIlhos.js +1 -0
- package/dist/assets/{click-to-copy-CVHuu877.js → click-to-copy-B379bwP3.js} +1 -1
- package/dist/assets/{cloneDeep-E2Pxqpbv.js → cloneDeep-LRq4Ya2k.js} +1 -1
- package/dist/assets/{collapse-DhGi244c.js → collapse-DJGzUM1Q.js} +1 -1
- package/dist/assets/complete-CQkeXJPL.js +39 -0
- package/dist/assets/{component-M75sOZuG.js → component-DWN2cI-c.js} +34 -34
- package/dist/assets/{config-Bshk_mlq.js → config-BgdQYz7Z.js} +2 -2
- package/dist/assets/{config-BASOtMEK.js → config-CPB45HHq.js} +4 -4
- package/dist/assets/{config-BOttfQk3.js → config-CRxOjKmb.js} +1 -1
- package/dist/assets/config-navigation-D1TBA90f.js +40 -0
- package/dist/assets/config-space-DpOC6rFp.js +1 -0
- package/dist/assets/{confirm-LpOyjg-M.js → confirm-BfJfcPyj.js} +1 -1
- package/dist/assets/{connect-A31Nzurl.js → connect-BbLXTlyu.js} +1 -1
- package/dist/assets/{connect-DEe_baYC.js → connect-ZcwxKVuN.js} +1 -1
- package/dist/assets/{connect-to-Cco6-qou.js → connect-to-Skv-ek56.js} +1 -1
- package/dist/assets/{content-layout-CaGd-JXO.js → content-layout-B9tc9LCL.js} +1 -1
- package/dist/assets/create-passport-svg-DosyhcHP.js +1 -0
- package/dist/assets/{createClass-BuhPvJV8.js → createClass-HFwzUuOB.js} +1 -1
- package/dist/assets/dashboard-DJ6Tc_2L.js +106 -0
- package/dist/assets/de-CD44Obtw.js +7 -0
- package/dist/assets/{delete-confirm-V3_sRk8l.js → delete-confirm-DNg1Z1xV.js} +1 -1
- package/dist/assets/{did-address-CeTjTMC4.js → did-address-Dbg_LiWL.js} +1 -1
- package/dist/assets/{domain-B9OATbrX.js → domain-3JvbKqlt.js} +1 -1
- package/dist/assets/{domain-action-card-D-_-tvd3.js → domain-action-card-BixPviaZ.js} +2 -2
- package/dist/assets/domains-D8QMeppe.js +1 -0
- package/dist/assets/{email-BpimKMdd.js → email-C6m1mnbN.js} +1 -1
- package/dist/assets/{empty-spinner-CkCqfxFX.js → empty-spinner-LXNYl6_1.js} +1 -1
- package/dist/assets/engine-DkWTqqhM.js +1 -0
- package/dist/assets/es-DNFAt0y7.js +9 -0
- package/dist/assets/{exchange-passport-XYv5fxqy.js → exchange-passport-BraV0EOe.js} +1 -1
- package/dist/assets/{form-CHueGgAz.js → form-BIoto8u8.js} +1 -1
- package/dist/assets/form-text-input-BgpOkOYh.js +11 -0
- package/dist/assets/{form-wrapper-DNqXvSru.js → form-wrapper-Dt1iJZge.js} +1 -1
- package/dist/assets/fr-C9xE9tD4.js +7 -0
- package/dist/assets/{fuel-CfnN-Pjf.js → fuel-Dwo_gklT.js} +1 -1
- package/dist/assets/gen-access-key-DuRApUI5.js +1 -0
- package/dist/assets/{gen-simple-access-key-EujuCaoZ.js → gen-simple-access-key-xXyYChfi.js} +1 -1
- package/dist/assets/get-safe-url-HFT553nb.js +1 -0
- package/dist/assets/hi-D_0DFJcS.js +5 -0
- package/dist/assets/{home-CSzo40aP.js → home-D0rR9_38.js} +1 -1
- package/dist/assets/id-BgJjfH2L.js +7 -0
- package/dist/assets/iframe-COascK-f.js +1 -0
- package/dist/assets/{index-Dr9NaKfR.js → index-3ePiAFIp.js} +1 -1
- package/dist/assets/{index-BjcHj49D.js → index-A5fXAFXl.js} +1 -1
- package/dist/assets/{index-BC0KaiLK.js → index-AMzbVwE1.js} +1 -1
- package/dist/assets/{index-C_YGTMJ4.js → index-B3o5bPY9.js} +1 -1
- package/dist/assets/{index-DZkt7K0r.js → index-BAMrdOx5.js} +1 -1
- package/dist/assets/{index-BVRSxJRS.js → index-BO080WnZ.js} +1 -1
- package/dist/assets/index-BU5Qj_Uf.js +93 -0
- package/dist/assets/index-BiMTr9N1.js +6 -0
- package/dist/assets/index-BkMwz7Ha.js +281 -0
- package/dist/assets/{index-DOo8QRm-.js → index-BoF74OVD.js} +12 -12
- package/dist/assets/{index-6IwthDxj.js → index-BrrIKxMS.js} +1 -1
- package/dist/assets/{index-3xeMR-Qg.js → index-Bx-RW9vi.js} +1 -1
- package/dist/assets/{index-IN8OKZ_V.js → index-CARCeLG0.js} +2 -2
- package/dist/assets/index-CX8XMi66.js +1 -0
- package/dist/assets/{index-CX0nBp11.js → index-CjUelepA.js} +1 -1
- package/dist/assets/{index-C-QPG4ba.js → index-Cv0WQg6r.js} +3 -3
- package/dist/assets/{index-D04UESXe.js → index-DKQpQSIL.js} +2 -2
- package/dist/assets/index-DKp1VidC.js +7 -0
- package/dist/assets/index-DOTZtBXk.js +113 -0
- package/dist/assets/{index-ZXxjnrfz.js → index-DXDOA6wf.js} +2 -2
- package/dist/assets/{index-iIT2_Y_I.js → index-DcGTEgwU.js} +4 -4
- package/dist/assets/index-DnsQF6x_.js +1 -0
- package/dist/assets/{index-COFNyzYu.js → index-Ds4S1_JK.js} +3 -3
- package/dist/assets/index-DsZw1jDU.js +1039 -0
- package/dist/assets/{index-DbXxI_D0.js → index-IYdn8PnM.js} +1 -1
- package/dist/assets/index-Z8qCN0P1.js +200 -0
- package/dist/assets/{index-BFZ5LKID.js → index-cc7PDHui.js} +1 -1
- package/dist/assets/{index-B0JZLMkR.js → index-d3X4O8S1.js} +4 -4
- package/dist/assets/{index-DxuK3aPg.js → index-g1J2WU69.js} +1 -1
- package/dist/assets/index-o5365tSi.js +124 -0
- package/dist/assets/{index-CmkQ05MW.js → index-pMD5HObM.js} +10 -10
- package/dist/assets/{index-Cs6DTc99.js → index-un8ZaNww.js} +5 -5
- package/dist/assets/{index-BA8N8sek.js → index-yINGgTD8.js} +6 -6
- package/dist/assets/{invitation-Bud5mQS8.js → invitation-HIuSHONR.js} +7 -7
- package/dist/assets/invitations-Bol3LHDV.js +3 -0
- package/dist/assets/invite--kfNCB-y.js +1 -0
- package/dist/assets/{isURL-BkRG9xZw.js → isURL-NLB1KXWU.js} +1 -1
- package/dist/assets/issue-passport-DEKfDU5Q.js +1 -0
- package/dist/assets/{item-CZxO50cp.js → item-8d2bomfb.js} +1 -1
- package/dist/assets/ja-SFs9TI5a.js +9 -0
- package/dist/assets/ko-CHdBh-EI.js +9 -0
- package/dist/assets/{landing-page-Co0EA4cx.js → landing-page-BKWBeaB2.js} +1 -1
- package/dist/assets/{launch-result-message-B0--4ubW.js → launch-result-message-DW948RfZ.js} +1 -1
- package/dist/assets/{layout-CiBZwE8j.js → layout-BCGFP2fM.js} +1 -1
- package/dist/assets/{list-CgUqi7mZ.js → list-CLnYaffq.js} +2 -2
- package/dist/assets/{list-CoRNWpJL.js → list-CjwYZK4C.js} +2 -2
- package/dist/assets/{list-header-DlrmpNef.js → list-header-DMpz8A8v.js} +1 -1
- package/dist/assets/localization-D4M90esB.js +1 -0
- package/dist/assets/{log-BLtV-mr3.js → log-CwhRn7dG.js} +1 -1
- package/dist/assets/logger-GZGSMwyW.js +1 -0
- package/dist/assets/login-D6vdg4tV.js +1 -0
- package/dist/assets/{login-oauth-callback-BhX1vXuH.js → login-oauth-callback-DNSbhkTX.js} +1 -1
- package/dist/assets/{logo-uploader-x03Hv0sw.js → logo-uploader-CehwiZZl.js} +2 -2
- package/dist/assets/{lost-passport-DuQjRy5y.js → lost-passport-JcRjjJMu.js} +3 -3
- package/dist/assets/{observability-3BjnzXRV.js → observability-pdEZhjSl.js} +1 -1
- package/dist/assets/{omit-r-0RLWOV.js → omit-BQZKecPT.js} +1 -1
- package/dist/assets/{open-window-C2521tBf.js → open-window-5tX5UogI.js} +1 -1
- package/dist/assets/{over-due-invoice-payment-CeMW933U.js → over-due-invoice-payment-BQTpVcW4.js} +1 -1
- package/dist/assets/overview-8cijjh6D.js +85 -0
- package/dist/assets/{page-header-DP0csqkR.js → page-header-DvSb4Cmz.js} +1 -1
- package/dist/assets/passport-dBKTMShn.js +1 -0
- package/dist/assets/{passport-item-CBQOM3AQ.js → passport-item-DybXmjDL.js} +1 -1
- package/dist/assets/{permission-BeuMG3nG.js → permission-DPZmpN88.js} +1 -1
- package/dist/assets/{playground-BEhnKrD-.js → playground-C0bWoIDS.js} +1 -1
- package/dist/assets/preferences-CSIWwAIC.js +1 -0
- package/dist/assets/profile-embed-Dxmu0kHv.js +1 -0
- package/dist/assets/pt-BJowi6tZ.js +5 -0
- package/dist/assets/publish-resource-BEWgZsl5.js +1 -0
- package/dist/assets/{react-beautiful-dnd.esm-9QLg1KOC.js → react-beautiful-dnd.esm-BbVphn6n.js} +1 -1
- package/dist/assets/{react-stripe.esm-DWiCVD55.js → react-stripe.esm-C51Uah32.js} +1 -1
- package/dist/assets/{required-BUAaYcMZ.js → required-BT8zXV8U.js} +1 -1
- package/dist/assets/ru-DTjDV3Pw.js +5 -0
- package/dist/assets/runtime-Dw23IX1l.js +1 -0
- package/dist/assets/{sanitize-mRppk1lK.js → sanitize-C5jEFDvG.js} +1 -1
- package/dist/assets/sdk-BIWRdmX9.js +1 -0
- package/dist/assets/{section-CCfmWVdK.js → section-ZPKr6_ii.js} +1 -1
- package/dist/assets/{security-DAv6SG0v.js → security-D_vkAC2F.js} +1 -1
- package/dist/assets/session-tOfkTx-G.js +1 -0
- package/dist/assets/{setup-CWKcr-SA.js → setup-eJiK00ap.js} +1 -1
- package/dist/assets/{shorten-label-DAXPWCI6.js → shorten-label-DVy6K5I7.js} +1 -1
- package/dist/assets/simple-select-BeAlThKq.js +1 -0
- package/dist/assets/{spaces-DdStEDKL.js → spaces-f3sezu1Y.js} +1 -1
- package/dist/assets/start-tshF2U2D.js +187 -0
- package/dist/assets/starting-progress-CNhbI5kz.js +40 -0
- package/dist/assets/status-aauXt2lH.js +1 -0
- package/dist/assets/{step-actions-DV76BAlD.js → step-actions-B_qluS-3.js} +1 -1
- package/dist/assets/{studio-D9ArZgZT.js → studio-ahebVj52.js} +1 -1
- package/dist/assets/{switch-control-Bs2D4JNi.js → switch-control-B8BKalcv.js} +1 -1
- package/dist/assets/{table-tips-B1dFVdej.js → table-tips-CIe4hASP.js} +1 -1
- package/dist/assets/team-DJZO6TyJ.js +146 -0
- package/dist/assets/th-A3GLGlJ1.js +5 -0
- package/dist/assets/traffic-Dh4U8pnc.js +1 -0
- package/dist/assets/{transfer-Dh7kcNdX.js → transfer-CuvzwKCQ.js} +1 -1
- package/dist/assets/{unsubscribe-DzDiAt1Q.js → unsubscribe-B1yTQQGf.js} +1 -1
- package/dist/assets/{use-app-logo-BiGG8tCg.js → use-app-logo-CqD9SoXr.js} +1 -1
- package/dist/assets/{use-mobile-BW9mTiYC.js → use-mobile-BQQpAf3i.js} +1 -1
- package/dist/assets/{use-mobile-B_fpUHD7.js → use-mobile-D6YQgajG.js} +1 -1
- package/dist/assets/{use-server-logo-R848M-JH.js → use-server-logo-ClR4qaF0.js} +1 -1
- package/dist/assets/{use-window-close-Dk0lXOqo.js → use-window-close-CLNOz9Uq.js} +1 -1
- package/dist/assets/{useAsync-DkQHu4t4.js → useAsync-DVtDVEv6.js} +1 -1
- package/dist/assets/{useAsync-DoI7Qt9M.js → useAsync-fWwm3Jbj.js} +1 -1
- package/dist/assets/{useAsyncRetry-DNTidBXG.js → useAsyncRetry-EEjDgDMR.js} +1 -1
- package/dist/assets/{useLocalStorage-BzRs3x-K.js → useLocalStorage-BPSCf_zz.js} +1 -1
- package/dist/assets/user-center-DDfna1uE.js +126 -0
- package/dist/assets/user-follower-Cc-51q-9.js +32 -0
- package/dist/assets/{user-sessions-BXusVv21.js → user-sessions-DkchVQBO.js} +1 -1
- package/dist/assets/{util-DQbvJ9cJ.js → util-B8Xud4vY.js} +1 -1
- package/dist/assets/{util-BKRDkFNf.js → util-D8KMfML_.js} +1 -1
- package/dist/assets/{vendor-arcblock-BhtOu00C.js → vendor-arcblock-CSGgL93G.js} +1 -1
- package/dist/assets/{vendor-hooks-BtDnIwBH.js → vendor-hooks-BlA8TRnZ.js} +2 -2
- package/dist/assets/vendor-mui-core-DRxbhqaK.js +250 -0
- package/dist/assets/{vendor-mui-x-DWX99wt-.js → vendor-mui-x-Qp6zkx78.js} +1 -1
- package/dist/assets/{vendor-utils-CVwaKsP9.js → vendor-utils-CUDP56Ff.js} +1 -1
- package/dist/assets/{vendor-ux-Cfhaj-oj.js → vendor-ux-CDOuCaX1.js} +3 -3
- package/dist/assets/vi-DGXwnYQW.js +5 -0
- package/dist/assets/{wait-connect-CPHamZhf.js → wait-connect-CGOeOXHL.js} +1 -1
- package/dist/assets/{wizard-DXT-RVCl.js → wizard-B7NraPoW.js} +1 -1
- package/dist/assets/{wizard-components-CkjeNOkS.js → wizard-components-Bl0PwqPC.js} +7 -7
- package/dist/assets/wrap-locale-BQiQiZG-.js +1 -0
- package/dist/assets/zh-CJ0qBy8e.js +10 -0
- package/dist/assets/{zh-BQXiLbg6.js → zh-DQ2rCoQ5.js} +1 -1
- package/dist/assets/zh-tw-Cs-zRk58.js +9 -0
- package/dist/index.html +6 -6
- package/dist/service-worker.js +1 -1
- package/package.json +32 -32
- package/dist/assets/add-resource-CZfTjlD0.js +0 -1
- package/dist/assets/api-BUbloWod.js +0 -1
- package/dist/assets/ar-DDKSNNIB.js +0 -7
- package/dist/assets/branding-IhXI5Wue.js +0 -1
- package/dist/assets/button-BG8yGG9e.js +0 -1
- package/dist/assets/complete-DNXvjWOj.js +0 -39
- package/dist/assets/config-navigation-C_Stnyxb.js +0 -40
- package/dist/assets/config-space-Bh_yLAj-.js +0 -1
- package/dist/assets/dashboard-B757yKbJ.js +0 -106
- package/dist/assets/de-C5jW-Aco.js +0 -7
- package/dist/assets/domains-CHjbOYj6.js +0 -1
- package/dist/assets/engine-DyhSNCpN.js +0 -1
- package/dist/assets/es-DnE5Se03.js +0 -9
- package/dist/assets/form-text-input-CqoNK3mi.js +0 -11
- package/dist/assets/fr-BpXortYf.js +0 -7
- package/dist/assets/gen-access-key-ku3cDonU.js +0 -1
- package/dist/assets/get-safe-url-CbJcsvAc.js +0 -1
- package/dist/assets/hi-CeUu25BW.js +0 -5
- package/dist/assets/id-BugYMmLN.js +0 -7
- package/dist/assets/iframe-eYdxV3eX.js +0 -1
- package/dist/assets/index-82gv-l2w.js +0 -283
- package/dist/assets/index-Br6A9_4o.js +0 -124
- package/dist/assets/index-C0n4exuY.js +0 -1
- package/dist/assets/index-CjATIX5e.js +0 -1039
- package/dist/assets/index-Cza28Ou-.js +0 -7
- package/dist/assets/index-DRhj0EDS.js +0 -292
- package/dist/assets/index-Dn2eai8S.js +0 -113
- package/dist/assets/index-ZYd4RNU_.js +0 -1
- package/dist/assets/invite-BnTsj399.js +0 -1
- package/dist/assets/issue-passport-sL6P-Jy0.js +0 -1
- package/dist/assets/ja-DaREJWmX.js +0 -9
- package/dist/assets/ko-DGXdpX64.js +0 -9
- package/dist/assets/localization-DAfm9MKy.js +0 -1
- package/dist/assets/logger-CsgnUk8i.js +0 -1
- package/dist/assets/login-0UJlN7iP.js +0 -1
- package/dist/assets/overview-C-11gh2u.js +0 -85
- package/dist/assets/preferences-DvVN_OF0.js +0 -1
- package/dist/assets/profile-embed-BdpgwY58.js +0 -1
- package/dist/assets/pt-CIqefLTL.js +0 -5
- package/dist/assets/publish-resource-CERp8nCz.js +0 -1
- package/dist/assets/ru-B4h3WudR.js +0 -5
- package/dist/assets/runtime-CC0b3IOS.js +0 -1
- package/dist/assets/sdk-Dfotb8VE.js +0 -1
- package/dist/assets/session-p360wpOR.js +0 -1
- package/dist/assets/simple-select-BHPmFba3.js +0 -1
- package/dist/assets/start-gQWc3jOT.js +0 -187
- package/dist/assets/starting-progress-CxdsmebW.js +0 -40
- package/dist/assets/status-jCRFV0de.js +0 -1
- package/dist/assets/team-CxJqHuEA.js +0 -146
- package/dist/assets/th-BjttL5p9.js +0 -5
- package/dist/assets/traffic-BuZd517Z.js +0 -1
- package/dist/assets/user-center-Gvk90n3A.js +0 -126
- package/dist/assets/user-follower-D7rNbdJC.js +0 -32
- package/dist/assets/vendor-mui-core-BIZOanxj.js +0 -250
- package/dist/assets/vi-C-IhikR1.js +0 -5
- package/dist/assets/wrap-locale-DQUa7V1E.js +0 -1
- package/dist/assets/zh-CWvcoHsp.js +0 -10
- package/dist/assets/zh-tw-D_73qm-O.js +0 -9
|
@@ -643,43 +643,40 @@ module.exports = {
|
|
|
643
643
|
});
|
|
644
644
|
|
|
645
645
|
if (shouldSyncFederated(sourceAppPid, blocklet)) {
|
|
646
|
-
node
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
phoneVerified: updatedUser.phoneVerified,
|
|
664
|
-
},
|
|
665
|
-
],
|
|
666
|
-
},
|
|
667
|
-
})
|
|
668
|
-
.then(() => {
|
|
669
|
-
node.syncUserSession({
|
|
670
|
-
teamDid,
|
|
671
|
-
userDid: userSessionDoc.userDid,
|
|
672
|
-
visitorId: userSessionDoc.visitorId,
|
|
673
|
-
passportId: passport?.id,
|
|
674
|
-
targetAppPid: sourceAppPid,
|
|
675
|
-
ua,
|
|
676
|
-
lastLoginIp,
|
|
677
|
-
extra: {
|
|
678
|
-
walletOS,
|
|
679
|
-
device: deviceData,
|
|
646
|
+
await node.syncFederated({
|
|
647
|
+
did: teamDid,
|
|
648
|
+
data: {
|
|
649
|
+
users: [
|
|
650
|
+
{
|
|
651
|
+
action: 'connectAccount',
|
|
652
|
+
did: updatedUser.did,
|
|
653
|
+
pk: updatedUser.pk,
|
|
654
|
+
fullName: updatedUser.fullName,
|
|
655
|
+
email: updatedUser.email || '',
|
|
656
|
+
avatar: getUserAvatarUrl(updatedUser.avatar, blocklet),
|
|
657
|
+
connectedAccount: [connectAccount, connectedNft],
|
|
658
|
+
sourceAppPid: sourceAppPid || masterSite.appPid,
|
|
659
|
+
inviter: updatedUser.inviter,
|
|
660
|
+
generation: updatedUser.generation,
|
|
661
|
+
emailVerified: updatedUser.emailVerified,
|
|
662
|
+
phoneVerified: updatedUser.phoneVerified,
|
|
680
663
|
},
|
|
681
|
-
|
|
682
|
-
}
|
|
664
|
+
],
|
|
665
|
+
},
|
|
666
|
+
});
|
|
667
|
+
await node.syncUserSession({
|
|
668
|
+
teamDid,
|
|
669
|
+
userDid: userSessionDoc.userDid,
|
|
670
|
+
visitorId: userSessionDoc.visitorId,
|
|
671
|
+
passportId: passport?.id,
|
|
672
|
+
targetAppPid: sourceAppPid,
|
|
673
|
+
ua,
|
|
674
|
+
lastLoginIp,
|
|
675
|
+
extra: {
|
|
676
|
+
walletOS,
|
|
677
|
+
device: deviceData,
|
|
678
|
+
},
|
|
679
|
+
});
|
|
683
680
|
}
|
|
684
681
|
|
|
685
682
|
if (passport) {
|
|
@@ -945,7 +942,7 @@ module.exports = {
|
|
|
945
942
|
},
|
|
946
943
|
|
|
947
944
|
switchPassport: {
|
|
948
|
-
onConnect: async ({ node, request, locale, userDid, previousUserDid, baseUrl }) => {
|
|
945
|
+
onConnect: async ({ node, request, locale, userDid, previousUserDid, baseUrl, orgId = '' }) => {
|
|
949
946
|
if (userDid && previousUserDid && userDid !== previousUserDid) {
|
|
950
947
|
throw new Error(messages.userMismatch[locale]);
|
|
951
948
|
}
|
|
@@ -978,6 +975,21 @@ module.exports = {
|
|
|
978
975
|
const blocklet = await request.getBlocklet();
|
|
979
976
|
const sourceAppPid = getSourceAppPid(request);
|
|
980
977
|
|
|
978
|
+
// 如果有 orgId 只显示 org 下的通行证
|
|
979
|
+
if (orgId) {
|
|
980
|
+
const roles = await node.getRoles({ teamDid, orgId });
|
|
981
|
+
return {
|
|
982
|
+
verifiableCredential: getVerifyAccessClaims({
|
|
983
|
+
node,
|
|
984
|
+
passports: user.passports,
|
|
985
|
+
roles: roles.map((x) => x.name),
|
|
986
|
+
types: PASSPORT_VC_TYPES,
|
|
987
|
+
source: 'blocklet',
|
|
988
|
+
trustedIssuers: await getTrustedIssuers(blocklet, { sourceAppPid }),
|
|
989
|
+
}),
|
|
990
|
+
};
|
|
991
|
+
}
|
|
992
|
+
|
|
981
993
|
return {
|
|
982
994
|
verifiableCredential: {
|
|
983
995
|
type: 'verifiableCredential',
|
|
@@ -14,14 +14,15 @@ const checkRunning = async (req, res, next) => {
|
|
|
14
14
|
// for backward compatibility
|
|
15
15
|
component = component || app;
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
17
|
+
const isRunningStatus = [
|
|
18
|
+
BlockletStatus.running,
|
|
19
|
+
// Waiting, Downloading should be allowed because blocklet is currently being upgrading
|
|
20
|
+
BlockletStatus.waiting,
|
|
21
|
+
BlockletStatus.downloading,
|
|
22
|
+
];
|
|
23
|
+
const isRunning = isRunningStatus.includes(component.status) || isRunningStatus.includes(component.greenStatus);
|
|
24
|
+
|
|
25
|
+
if (!isRunning) {
|
|
25
26
|
if (shouldGotoStartPage(req, component)) {
|
|
26
27
|
if (req.query.setupToken) {
|
|
27
28
|
await req
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 验证是否开启了 org,如果没有开启,那么相关接口不应该被请求
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
function ensureOrgEnabled({ useCache = true } = {}) {
|
|
6
|
+
return async (req, res, next) => {
|
|
7
|
+
const blocklet = req.blocklet ? await req.getBlocklet({ useCache }) : null;
|
|
8
|
+
const { org = {} } = blocklet.settings || {};
|
|
9
|
+
if (!org?.enabled) {
|
|
10
|
+
res.status(403).send('Org is not enabled, Can not request this api');
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
next();
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
module.exports = ensureOrgEnabled;
|
package/api/routes/blocklet.js
CHANGED
|
@@ -401,7 +401,7 @@ module.exports = {
|
|
|
401
401
|
let webInterfaceCount = 0;
|
|
402
402
|
forEachComponentV2Sync(blocklet, (component) => {
|
|
403
403
|
components[component.meta.did] = {
|
|
404
|
-
running: component.status === BlockletStatus.running,
|
|
404
|
+
running: component.status === BlockletStatus.running || component.greenStatus === BlockletStatus.running,
|
|
405
405
|
};
|
|
406
406
|
|
|
407
407
|
const hasWebInterface = (component.meta?.interfaces || []).some((x) => x.type === BLOCKLET_INTERFACE_TYPE_WEB);
|
|
@@ -410,7 +410,7 @@ module.exports = {
|
|
|
410
410
|
}
|
|
411
411
|
});
|
|
412
412
|
|
|
413
|
-
if (blocklet.status !== BlockletStatus.running) {
|
|
413
|
+
if (blocklet.status !== BlockletStatus.running && blocklet.greenStatus !== BlockletStatus.running) {
|
|
414
414
|
return res.status(503).json({ message: 'not running', components });
|
|
415
415
|
}
|
|
416
416
|
|
|
@@ -448,7 +448,7 @@ module.exports = {
|
|
|
448
448
|
return res.status(404).json({ message: 'component not found' });
|
|
449
449
|
}
|
|
450
450
|
|
|
451
|
-
if (component.status !== BlockletStatus.running) {
|
|
451
|
+
if (component.status !== BlockletStatus.running && component.greenStatus !== BlockletStatus.running) {
|
|
452
452
|
return res.status(503).json({ message: 'not running' });
|
|
453
453
|
}
|
|
454
454
|
|
package/api/routes/user.js
CHANGED
|
@@ -20,7 +20,7 @@ const { getWallet, getWalletDid } = require('@blocklet/meta/lib/did-utils');
|
|
|
20
20
|
const { Joi } = require('@arcblock/validator');
|
|
21
21
|
const { parse } = require('@abtnode/core/lib/util/ua');
|
|
22
22
|
const getRequestIP = require('@abtnode/util/lib/get-request-ip');
|
|
23
|
-
const { formatError, CustomError } = require('@blocklet/error');
|
|
23
|
+
const { formatError, CustomError, getStatusFromError } = require('@blocklet/error');
|
|
24
24
|
const { xss } = require('@blocklet/xss');
|
|
25
25
|
const { createRateLimiter } = require('@blocklet/rate-limit');
|
|
26
26
|
const { withQuery, joinURL } = require('ufo');
|
|
@@ -39,6 +39,7 @@ const { loginWalletSchema, loginOAuthSchema, loginUserWalletSchema, checkUserSch
|
|
|
39
39
|
const verifySig = require('../middlewares/verify-sig');
|
|
40
40
|
const logger = require('../libs/logger')('user');
|
|
41
41
|
const ensureBlocklet = require('../middlewares/ensure-blocklet');
|
|
42
|
+
const ensureOrgEnabled = require('../middlewares/ensure-org-enabled');
|
|
42
43
|
const checkUser = require('../middlewares/check-user');
|
|
43
44
|
const { Profile } = require('../state/profile');
|
|
44
45
|
const { emailSchema } = require('../socket/channel/did');
|
|
@@ -320,7 +321,7 @@ async function loginSDK(req, node, options) {
|
|
|
320
321
|
locale,
|
|
321
322
|
origin: await getOrigin({ req }),
|
|
322
323
|
});
|
|
323
|
-
node.syncUserSession({
|
|
324
|
+
await node.syncUserSession({
|
|
324
325
|
teamDid,
|
|
325
326
|
userDid: userSession.userDid,
|
|
326
327
|
visitorId: userSession.visitorId,
|
|
@@ -715,6 +716,13 @@ const spaceGatewaySchema = Joi.object({
|
|
|
715
716
|
endpoint: Joi.string().required(),
|
|
716
717
|
});
|
|
717
718
|
|
|
719
|
+
const queryOrgsInputSchema = Joi.object({
|
|
720
|
+
search: Joi.string().optional().allow(''),
|
|
721
|
+
page: Joi.number().optional().min(1).default(1),
|
|
722
|
+
pageSize: Joi.number().optional().min(1).default(20),
|
|
723
|
+
type: Joi.string().valid('owned', 'joined').optional().allow('').allow(null),
|
|
724
|
+
});
|
|
725
|
+
|
|
718
726
|
module.exports = {
|
|
719
727
|
init(server, node, options) {
|
|
720
728
|
const ensureCors = cors(async (req, callback) => {
|
|
@@ -849,7 +857,7 @@ module.exports = {
|
|
|
849
857
|
locale,
|
|
850
858
|
origin: await getOrigin({ req }),
|
|
851
859
|
});
|
|
852
|
-
node.syncUserSession({
|
|
860
|
+
await node.syncUserSession({
|
|
853
861
|
teamDid,
|
|
854
862
|
userDid: userSession.userDid,
|
|
855
863
|
visitorId: userSession.visitorId,
|
|
@@ -1694,5 +1702,171 @@ module.exports = {
|
|
|
1694
1702
|
res.status(500).send(formatError(err));
|
|
1695
1703
|
}
|
|
1696
1704
|
});
|
|
1705
|
+
|
|
1706
|
+
/* ********************************* org 相关 ********************************* */
|
|
1707
|
+
/**
|
|
1708
|
+
* 获取用户所有的 org 列表:包括我创建的和加入的
|
|
1709
|
+
*/
|
|
1710
|
+
server.get(`${prefixApi}/orgs`, checkUser, ensureBlocklet(), ensureOrgEnabled(), async (req, res) => {
|
|
1711
|
+
try {
|
|
1712
|
+
const { blocklet } = req;
|
|
1713
|
+
const teamDid = blocklet.appPid;
|
|
1714
|
+
const { error, value } = queryOrgsInputSchema.validate(req.query);
|
|
1715
|
+
if (error) {
|
|
1716
|
+
res.status(400).send({ error: error.message });
|
|
1717
|
+
return;
|
|
1718
|
+
}
|
|
1719
|
+
const { search, page = 1, pageSize = 20, type } = value;
|
|
1720
|
+
// 查询所有的(包括我创建的和我加入的)
|
|
1721
|
+
const params = { teamDid, paging: { page, pageSize }, ...(type ? { type } : {}) };
|
|
1722
|
+
if (search) {
|
|
1723
|
+
params.org = {
|
|
1724
|
+
name: search,
|
|
1725
|
+
description: search,
|
|
1726
|
+
};
|
|
1727
|
+
}
|
|
1728
|
+
const result = await node.getOrgs(params, { user: req.user });
|
|
1729
|
+
res.json(result);
|
|
1730
|
+
} catch (err) {
|
|
1731
|
+
logger.error('Failed to get orgs', { error: err, userDid: req.user.did });
|
|
1732
|
+
res.status(getStatusFromError(err)).send(formatError(err));
|
|
1733
|
+
}
|
|
1734
|
+
});
|
|
1735
|
+
|
|
1736
|
+
/**
|
|
1737
|
+
* 创建 org
|
|
1738
|
+
*/
|
|
1739
|
+
server.post(`${prefixApi}/orgs`, checkUser, ensureBlocklet(), ensureOrgEnabled(), async (req, res) => {
|
|
1740
|
+
try {
|
|
1741
|
+
const { blocklet } = req;
|
|
1742
|
+
const teamDid = blocklet.appPid;
|
|
1743
|
+
const { org } = req.body;
|
|
1744
|
+
if (!org.name) {
|
|
1745
|
+
res.status(400).send({ error: 'name is required' });
|
|
1746
|
+
return;
|
|
1747
|
+
}
|
|
1748
|
+
const result = await node.createOrg({ teamDid, ...org }, { user: req.user });
|
|
1749
|
+
await node.createAuditLog(
|
|
1750
|
+
{
|
|
1751
|
+
action: 'createOrg',
|
|
1752
|
+
args: { teamDid, ...org },
|
|
1753
|
+
context: formatContext(Object.assign(req, { user: req.user })),
|
|
1754
|
+
result,
|
|
1755
|
+
},
|
|
1756
|
+
node
|
|
1757
|
+
);
|
|
1758
|
+
res.json(result);
|
|
1759
|
+
} catch (err) {
|
|
1760
|
+
logger.error('Failed to create org', { error: err, userDid: req.user.did });
|
|
1761
|
+
res.status(getStatusFromError(err)).send(formatError(err));
|
|
1762
|
+
}
|
|
1763
|
+
});
|
|
1764
|
+
|
|
1765
|
+
/**
|
|
1766
|
+
* 获取一个 org 详情
|
|
1767
|
+
*/
|
|
1768
|
+
server.get(`${prefixApi}/orgs/:orgId`, checkUser, ensureBlocklet(), ensureOrgEnabled(), async (req, res) => {
|
|
1769
|
+
try {
|
|
1770
|
+
const { blocklet } = req;
|
|
1771
|
+
const teamDid = blocklet.appPid;
|
|
1772
|
+
const { orgId } = req.params;
|
|
1773
|
+
const result = await node.getOrg({ teamDid, id: orgId }, { user: req.user });
|
|
1774
|
+
res.json(result);
|
|
1775
|
+
} catch (err) {
|
|
1776
|
+
logger.error('Failed to get org', { error: err, userDid: req.user.did });
|
|
1777
|
+
res.status(getStatusFromError(err)).send(formatError(err));
|
|
1778
|
+
}
|
|
1779
|
+
});
|
|
1780
|
+
|
|
1781
|
+
/**
|
|
1782
|
+
* 获取所有的 roles 列表
|
|
1783
|
+
*/
|
|
1784
|
+
server.get(`${prefixApi}/role`, checkUser, ensureBlocklet(), async (req, res) => {
|
|
1785
|
+
try {
|
|
1786
|
+
const { blocklet } = req;
|
|
1787
|
+
const teamDid = blocklet.appPid;
|
|
1788
|
+
const { name = '' } = req.query;
|
|
1789
|
+
if (!name) {
|
|
1790
|
+
res.status(400).send({ error: 'role name is required' });
|
|
1791
|
+
return;
|
|
1792
|
+
}
|
|
1793
|
+
|
|
1794
|
+
const result = await node.getRole({ teamDid, role: { name } }, { user: req.user });
|
|
1795
|
+
res.json(result);
|
|
1796
|
+
} catch (err) {
|
|
1797
|
+
logger.error('Failed to get role', { error: err, userDid: req.user.did });
|
|
1798
|
+
res.status(getStatusFromError(err)).send(formatError(err));
|
|
1799
|
+
}
|
|
1800
|
+
});
|
|
1801
|
+
|
|
1802
|
+
/**
|
|
1803
|
+
* 将资源添加到 org 下
|
|
1804
|
+
*/
|
|
1805
|
+
server.post(
|
|
1806
|
+
`${prefixApi}/orgs/:orgId/resources`,
|
|
1807
|
+
checkUser,
|
|
1808
|
+
ensureBlocklet(),
|
|
1809
|
+
ensureOrgEnabled(),
|
|
1810
|
+
async (req, res) => {
|
|
1811
|
+
try {
|
|
1812
|
+
const { blocklet } = req;
|
|
1813
|
+
const teamDid = blocklet.appPid;
|
|
1814
|
+
const { orgId } = req.params;
|
|
1815
|
+
const { resourceId, ...rest } = req.body;
|
|
1816
|
+
const result = await node.addOrgResource(
|
|
1817
|
+
{ teamDid, orgId, resourceIds: [resourceId], ...rest },
|
|
1818
|
+
{ user: req.user }
|
|
1819
|
+
);
|
|
1820
|
+
await node.createAuditLog(
|
|
1821
|
+
{
|
|
1822
|
+
action: 'addOrgResource',
|
|
1823
|
+
args: { teamDid, orgId, resourceIds: [resourceId], ...rest },
|
|
1824
|
+
context: formatContext(Object.assign(req, { user: req.user })),
|
|
1825
|
+
result,
|
|
1826
|
+
},
|
|
1827
|
+
node
|
|
1828
|
+
);
|
|
1829
|
+
res.json(result);
|
|
1830
|
+
} catch (err) {
|
|
1831
|
+
logger.error('Failed to add org resource', { error: err, orgId: req.params.orgId });
|
|
1832
|
+
res.status(getStatusFromError(err)).send(formatError(err));
|
|
1833
|
+
}
|
|
1834
|
+
}
|
|
1835
|
+
);
|
|
1836
|
+
|
|
1837
|
+
/**
|
|
1838
|
+
* 迁移资源到新的 org
|
|
1839
|
+
*/
|
|
1840
|
+
server.put(
|
|
1841
|
+
`${prefixApi}/orgs/:from/resources`,
|
|
1842
|
+
checkUser,
|
|
1843
|
+
ensureBlocklet(),
|
|
1844
|
+
ensureOrgEnabled(),
|
|
1845
|
+
async (req, res) => {
|
|
1846
|
+
try {
|
|
1847
|
+
const { blocklet } = req;
|
|
1848
|
+
const teamDid = blocklet.appPid;
|
|
1849
|
+
const { from } = req.params;
|
|
1850
|
+
const { to, resourceId } = req.body;
|
|
1851
|
+
const result = await node.migrateOrgResource(
|
|
1852
|
+
{ teamDid, from, to, resourceIds: [resourceId] },
|
|
1853
|
+
{ user: req.user }
|
|
1854
|
+
);
|
|
1855
|
+
await node.createAuditLog(
|
|
1856
|
+
{
|
|
1857
|
+
action: 'migrateOrgResource',
|
|
1858
|
+
args: { teamDid, from, to, resourceIds: [resourceId] },
|
|
1859
|
+
context: formatContext(Object.assign(req, { user: req.user })),
|
|
1860
|
+
result,
|
|
1861
|
+
},
|
|
1862
|
+
node
|
|
1863
|
+
);
|
|
1864
|
+
res.json(result);
|
|
1865
|
+
} catch (err) {
|
|
1866
|
+
logger.error('Failed to migrate org resource', { error: err, from: req.params.from });
|
|
1867
|
+
res.status(getStatusFromError(err)).send(formatError(err));
|
|
1868
|
+
}
|
|
1869
|
+
}
|
|
1870
|
+
);
|
|
1697
1871
|
},
|
|
1698
1872
|
};
|
|
@@ -141,7 +141,7 @@ module.exports = function createRoutes(node, authenticator, createSessionToken)
|
|
|
141
141
|
locale,
|
|
142
142
|
origin: await getOrigin({ req }),
|
|
143
143
|
});
|
|
144
|
-
node.syncUserSession({
|
|
144
|
+
await node.syncUserSession({
|
|
145
145
|
teamDid,
|
|
146
146
|
userDid: userSessionDoc.userDid,
|
|
147
147
|
visitorId: userSessionDoc.visitorId,
|
|
@@ -102,7 +102,7 @@ module.exports = function createRoutes(node, authenticator, createSessionToken)
|
|
|
102
102
|
locale,
|
|
103
103
|
origin: await getOrigin({ req }),
|
|
104
104
|
});
|
|
105
|
-
node.syncUserSession({
|
|
105
|
+
await node.syncUserSession({
|
|
106
106
|
teamDid,
|
|
107
107
|
userDid: userSessionDoc.userDid,
|
|
108
108
|
visitorId: userSessionDoc.visitorId,
|
|
@@ -6,7 +6,7 @@ const { onConnect, onApprove } = switchPassport;
|
|
|
6
6
|
module.exports = function createRoutes(node, authenticator, createSessionToken) {
|
|
7
7
|
return {
|
|
8
8
|
action: 'switch-passport',
|
|
9
|
-
onConnect: ({ userDid, baseUrl, extraParams: { locale, connectedDid }, req, request }) => {
|
|
9
|
+
onConnect: ({ userDid, baseUrl, extraParams: { locale, connectedDid, orgId }, req, request }) => {
|
|
10
10
|
const sourceAppPid = getSourceAppPid(request);
|
|
11
11
|
const provider = getLoginProvider(request);
|
|
12
12
|
return onConnect({
|
|
@@ -18,6 +18,7 @@ module.exports = function createRoutes(node, authenticator, createSessionToken)
|
|
|
18
18
|
baseUrl,
|
|
19
19
|
sourceAppPid,
|
|
20
20
|
provider,
|
|
21
|
+
orgId,
|
|
21
22
|
});
|
|
22
23
|
},
|
|
23
24
|
|
|
@@ -26,10 +26,12 @@ const createTranslator = require('@abtnode/util/lib/translate');
|
|
|
26
26
|
const getOrigin = require('@abtnode/util/lib/get-origin');
|
|
27
27
|
const md5 = require('@abtnode/util/lib/md5');
|
|
28
28
|
const { sign } = require('@blocklet/sdk/lib/util/csrf');
|
|
29
|
+
const { createOrgValidators } = require('@abtnode/core/lib/util/org');
|
|
29
30
|
|
|
30
31
|
const { createTokenFn, getDidConnectVersion } = require('../../util');
|
|
31
32
|
const checkUser = require('../../middlewares/check-user');
|
|
32
33
|
const cache = require('../../cache');
|
|
34
|
+
const logger = require('../../libs/logger')('auth');
|
|
33
35
|
|
|
34
36
|
const translations = {
|
|
35
37
|
zh: {
|
|
@@ -74,9 +76,10 @@ const getUpdateUserSessionData = ({ req }) => {
|
|
|
74
76
|
if (req.userSession) {
|
|
75
77
|
// 更新用户会话中的 ua 信息,仅当 ua 为空时
|
|
76
78
|
// 这种情况对应的是这个会话刚刚登录过,还未记录 ua 信息
|
|
77
|
-
// FIXME: @zhanghan loginIp 是否应该做一样的处理?
|
|
78
79
|
if (!req.userSession.ua) {
|
|
80
|
+
const lastLoginIp = getRequestIP(req);
|
|
79
81
|
result.ua = req.get('user-agent');
|
|
82
|
+
result.lastLoginIp = lastLoginIp;
|
|
80
83
|
}
|
|
81
84
|
const deviceData = omitBy(getDeviceData({ req }), isUndefined);
|
|
82
85
|
if (Object.keys(deviceData).length > 0 && !isEqual(req.userSession?.extra?.device, deviceData)) {
|
|
@@ -135,6 +138,20 @@ module.exports = {
|
|
|
135
138
|
const permissions = await rbac.getScope(req.user.role);
|
|
136
139
|
user.role = req.user.role;
|
|
137
140
|
user.permissions = permissions;
|
|
141
|
+
// 根据 role 获取所在的 org 信息
|
|
142
|
+
const { getOrgSettings } = createOrgValidators(blocklet);
|
|
143
|
+
const orgSettings = getOrgSettings();
|
|
144
|
+
if (orgSettings?.enabled) {
|
|
145
|
+
try {
|
|
146
|
+
const role = await node.getRole({ teamDid, role: { name: user.role } });
|
|
147
|
+
if (role?.orgId) {
|
|
148
|
+
const org = await node.getOrg({ teamDid, id: role?.orgId }, { user: req.user });
|
|
149
|
+
user.org = org || null;
|
|
150
|
+
}
|
|
151
|
+
} catch (err) {
|
|
152
|
+
logger.error('get role error', err);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
138
155
|
}
|
|
139
156
|
|
|
140
157
|
if (user.avatar && user.avatar.startsWith(USER_AVATAR_URL_PREFIX)) {
|
|
@@ -175,7 +192,7 @@ module.exports = {
|
|
|
175
192
|
origin: await getOrigin({ req, blockletInfo }),
|
|
176
193
|
});
|
|
177
194
|
if (user?.sourceAppPid) {
|
|
178
|
-
node.syncUserSession({
|
|
195
|
+
await node.syncUserSession({
|
|
179
196
|
teamDid,
|
|
180
197
|
userDid: userSession.userDid,
|
|
181
198
|
visitorId: userSession.visitorId,
|
|
@@ -373,6 +390,20 @@ module.exports = {
|
|
|
373
390
|
const rbac = await node.getRBAC(teamDid);
|
|
374
391
|
user.permissions = await rbac.getScope(role);
|
|
375
392
|
user.role = role;
|
|
393
|
+
// 根据 role 获取所在的 org 信息
|
|
394
|
+
const { getOrgSettings } = createOrgValidators(blocklet);
|
|
395
|
+
const orgSettings = getOrgSettings();
|
|
396
|
+
if (orgSettings?.enabled) {
|
|
397
|
+
try {
|
|
398
|
+
const roleInfo = await node.getRole({ teamDid, role: { name: user.role } });
|
|
399
|
+
if (roleInfo?.orgId) {
|
|
400
|
+
const org = await node.getOrg({ teamDid, id: roleInfo?.orgId }, { user: req.user });
|
|
401
|
+
user.org = org || null;
|
|
402
|
+
}
|
|
403
|
+
} catch (err) {
|
|
404
|
+
logger.error('get role error', err);
|
|
405
|
+
}
|
|
406
|
+
}
|
|
376
407
|
}
|
|
377
408
|
|
|
378
409
|
if (user.avatar && user.avatar.startsWith(USER_AVATAR_URL_PREFIX)) {
|
|
@@ -409,6 +440,7 @@ module.exports = {
|
|
|
409
440
|
userDid: userPid,
|
|
410
441
|
appPid: teamDid,
|
|
411
442
|
status: 'online',
|
|
443
|
+
// refreshSession 时更新 ua 可以解决浏览器升级导致 ua 变化产生的问题
|
|
412
444
|
ua,
|
|
413
445
|
lastLoginIp,
|
|
414
446
|
extra: {
|
|
@@ -418,7 +450,7 @@ module.exports = {
|
|
|
418
450
|
origin: await getOrigin({ req }),
|
|
419
451
|
});
|
|
420
452
|
if (user?.sourceAppPid) {
|
|
421
|
-
node.syncUserSession({
|
|
453
|
+
await node.syncUserSession({
|
|
422
454
|
teamDid,
|
|
423
455
|
userDid: userSession.userDid,
|
|
424
456
|
visitorId: userSession.visitorId,
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{_ as lt}from"./vendor-mui-core-
|
|
1
|
+
import{_ as lt}from"./vendor-mui-core-DRxbhqaK.js";import{d as c}from"./vendor-hooks-BlA8TRnZ.js";import{g as G}from"./vendor-react-Dvs43sk9.js";import{a4 as yt}from"./vendor-ux-CDOuCaX1.js";var b={exports:{}},pt=b.exports,rt;function Mt(){return rt||(rt=1,function(Y,z){(function(m,t){Y.exports=t()})(pt,function(){var m="week",t="year";return function(e,i,a){var r=i.prototype;r.week=function(s){if(s===void 0&&(s=null),s!==null)return this.add(7*(s-this.week()),"day");var u=this.$locale().yearStart||1;if(this.month()===11&&this.date()>25){var h=a(this).startOf(t).add(1,t).date(u),l=a(this).endOf(m);if(h.isBefore(l))return 1}var O=a(this).startOf(t).date(u).startOf(m).subtract(1,"millisecond"),$=this.diff(O,m,!0);return $<0?a(this).startOf("week").week():Math.ceil($)},r.weeks=function(s){return s===void 0&&(s=null),this.week(s)}}})}(b)),b.exports}var Tt=Mt();const gt=G(Tt);var I={exports:{}},Dt=I.exports,st;function wt(){return st||(st=1,function(Y,z){(function(m,t){Y.exports=t()})(Dt,function(){var m={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},t=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,e=/\d/,i=/\d\d/,a=/\d\d?/,r=/\d*[^-_:/,()\s\d]+/,s={},u=function(n){return(n=+n)+(n>68?1900:2e3)},h=function(n){return function(o){this[n]=+o}},l=[/[+-]\d\d:?(\d\d)?|Z/,function(n){(this.zone||(this.zone={})).offset=function(o){if(!o||o==="Z")return 0;var f=o.match(/([+-]|\d\d)/g),d=60*f[1]+(+f[2]||0);return d===0?0:f[0]==="+"?-d:d}(n)}],O=function(n){var o=s[n];return o&&(o.indexOf?o:o.s.concat(o.f))},$=function(n,o){var f,d=s.meridiem;if(d){for(var T=1;T<=24;T+=1)if(n.indexOf(d(T,0,o))>-1){f=T>12;break}}else f=n===(o?"pm":"PM");return f},ot={A:[r,function(n){this.afternoon=$(n,!1)}],a:[r,function(n){this.afternoon=$(n,!0)}],Q:[e,function(n){this.month=3*(n-1)+1}],S:[e,function(n){this.milliseconds=100*+n}],SS:[i,function(n){this.milliseconds=10*+n}],SSS:[/\d{3}/,function(n){this.milliseconds=+n}],s:[a,h("seconds")],ss:[a,h("seconds")],m:[a,h("minutes")],mm:[a,h("minutes")],H:[a,h("hours")],h:[a,h("hours")],HH:[a,h("hours")],hh:[a,h("hours")],D:[a,h("day")],DD:[i,h("day")],Do:[r,function(n){var o=s.ordinal,f=n.match(/\d+/);if(this.day=f[0],o)for(var d=1;d<=31;d+=1)o(d).replace(/\[|\]/g,"")===n&&(this.day=d)}],w:[a,h("week")],ww:[i,h("week")],M:[a,h("month")],MM:[i,h("month")],MMM:[r,function(n){var o=O("months"),f=(O("monthsShort")||o.map(function(d){return d.slice(0,3)})).indexOf(n)+1;if(f<1)throw new Error;this.month=f%12||f}],MMMM:[r,function(n){var o=O("months").indexOf(n)+1;if(o<1)throw new Error;this.month=o%12||o}],Y:[/[+-]?\d+/,h("year")],YY:[i,function(n){this.year=u(n)}],YYYY:[/\d{4}/,h("year")],Z:l,ZZ:l};function ht(n){var o,f;o=n,f=s&&s.formats;for(var d=(n=o.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(C,x,M){var p=M&&M.toUpperCase();return x||f[M]||m[M]||f[p].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(k,L,j){return L||j.slice(1)})})).match(t),T=d.length,g=0;g<T;g+=1){var U=d[g],S=ot[U],D=S&&S[0],w=S&&S[1];d[g]=w?{regex:D,parser:w}:U.replace(/^\[|\]$/g,"")}return function(C){for(var x={},M=0,p=0;M<T;M+=1){var k=d[M];if(typeof k=="string")p+=k.length;else{var L=k.regex,j=k.parser,A=C.slice(p),v=L.exec(A)[0];j.call(x,v),C=C.replace(v,"")}}return function(P){var F=P.afternoon;if(F!==void 0){var y=P.hours;F?y<12&&(P.hours+=12):y===12&&(P.hours=0),delete P.afternoon}}(x),x}}return function(n,o,f){f.p.customParseFormat=!0,n&&n.parseTwoDigitYear&&(u=n.parseTwoDigitYear);var d=o.prototype,T=d.parse;d.parse=function(g){var U=g.date,S=g.utc,D=g.args;this.$u=S;var w=D[1];if(typeof w=="string"){var C=D[2]===!0,x=D[3]===!0,M=C||x,p=D[2];x&&(p=D[2]),s=this.$locale(),!C&&p&&(s=f.Ls[p]),this.$d=function(A,v,P,F){try{if(["x","X"].indexOf(v)>-1)return new Date((v==="X"?1e3:1)*A);var y=ht(v)(A),Z=y.year,W=y.month,ut=y.day,ft=y.hours,dt=y.minutes,ct=y.seconds,mt=y.milliseconds,tt=y.zone,et=y.week,N=new Date,_=ut||(Z||W?1:N.getDate()),q=Z||N.getFullYear(),H=0;Z&&!W||(H=W>0?W-1:N.getMonth());var B,R=ft||0,Q=dt||0,X=ct||0,J=mt||0;return tt?new Date(Date.UTC(q,H,_,R,Q,X,J+60*tt.offset*1e3)):P?new Date(Date.UTC(q,H,_,R,Q,X,J)):(B=new Date(q,H,_,R,Q,X,J),et&&(B=F(B).week(et).toDate()),B)}catch{return new Date("")}}(U,w,S,f),this.init(),p&&p!==!0&&(this.$L=this.locale(p).$L),M&&U!=this.format(w)&&(this.$d=new Date("")),s={}}else if(w instanceof Array)for(var k=w.length,L=1;L<=k;L+=1){D[1]=w[L-1];var j=f.apply(this,D);if(j.isValid()){this.$d=j.$d,this.$L=j.$L,this.init();break}L===k&&(this.$d=new Date(""))}else T.call(this,g)}}})}(I)),I.exports}var Yt=wt();const Ot=G(Yt);var E={exports:{}},xt=E.exports,nt;function kt(){return nt||(nt=1,function(Y,z){(function(m,t){Y.exports=t()})(xt,function(){return function(m,t,e){t.prototype.isBetween=function(i,a,r,s){var u=e(i),h=e(a),l=(s=s||"()")[0]==="(",O=s[1]===")";return(l?this.isAfter(u,r):!this.isBefore(u,r))&&(O?this.isBefore(h,r):!this.isAfter(h,r))||(l?this.isBefore(u,r):!this.isAfter(u,r))&&(O?this.isAfter(h,r):!this.isBefore(h,r))}}})}(E)),E.exports}var Lt=kt();const zt=G(Lt);var V={exports:{}},St=V.exports,it;function Ct(){return it||(it=1,function(Y,z){(function(m,t){Y.exports=t()})(St,function(){return function(m,t){var e=t.prototype,i=e.format;e.format=function(a){var r=this,s=this.$locale();if(!this.isValid())return i.bind(this)(a);var u=this.$utils(),h=(a||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,function(l){switch(l){case"Q":return Math.ceil((r.$M+1)/3);case"Do":return s.ordinal(r.$D);case"gggg":return r.weekYear();case"GGGG":return r.isoWeekYear();case"wo":return s.ordinal(r.week(),"W");case"w":case"ww":return u.s(r.week(),l==="w"?1:2,"0");case"W":case"WW":return u.s(r.isoWeek(),l==="W"?1:2,"0");case"k":case"kk":return u.s(String(r.$H===0?24:r.$H),l==="k"?1:2,"0");case"X":return Math.floor(r.$d.getTime()/1e3);case"x":return r.$d.getTime();case"z":return"["+r.offsetName()+"]";case"zzz":return"["+r.offsetName("long")+"]";default:return l}});return i.bind(this)(h)}}})}(V)),V.exports}var jt=Ct();const Pt=G(jt);c.extend(yt);c.extend(gt);c.extend(zt);c.extend(Pt);const vt={YY:"year",YYYY:{sectionType:"year",contentType:"digit",maxLength:4},M:{sectionType:"month",contentType:"digit",maxLength:2},MM:"month",MMM:{sectionType:"month",contentType:"letter"},MMMM:{sectionType:"month",contentType:"letter"},D:{sectionType:"day",contentType:"digit",maxLength:2},DD:"day",Do:{sectionType:"day",contentType:"digit-with-letter"},d:{sectionType:"weekDay",contentType:"digit",maxLength:2},dd:{sectionType:"weekDay",contentType:"letter"},ddd:{sectionType:"weekDay",contentType:"letter"},dddd:{sectionType:"weekDay",contentType:"letter"},A:"meridiem",a:"meridiem",H:{sectionType:"hours",contentType:"digit",maxLength:2},HH:"hours",h:{sectionType:"hours",contentType:"digit",maxLength:2},hh:"hours",m:{sectionType:"minutes",contentType:"digit",maxLength:2},mm:"minutes",s:{sectionType:"seconds",contentType:"digit",maxLength:2},ss:"seconds"},$t={year:"YYYY",month:"MMMM",monthShort:"MMM",dayOfMonth:"D",dayOfMonthFull:"Do",weekday:"dddd",weekdayShort:"dd",hours24h:"HH",hours12h:"hh",meridiem:"A",minutes:"mm",seconds:"ss",fullDate:"ll",keyboardDate:"L",shortDate:"MMM D",normalDate:"D MMMM",normalDateWithWeekday:"ddd, MMM D",fullTime12h:"hh:mm A",fullTime24h:"HH:mm",keyboardDateTime12h:"L hh:mm A",keyboardDateTime24h:"L HH:mm"},K=["Missing UTC plugin","To be able to use UTC or timezones, you have to enable the `utc` plugin","Find more information on https://mui.com/x/react-date-pickers/timezone/#day-js-and-utc"].join(`
|
|
2
2
|
`),at=["Missing timezone plugin","To be able to use timezones, you have to enable both the `utc` and the `timezone` plugin","Find more information on https://mui.com/x/react-date-pickers/timezone/#day-js-and-timezone"].join(`
|
|
3
3
|
`);class Bt{constructor({locale:z,formats:m}={}){this.isMUIAdapter=!0,this.isTimezoneCompatible=!0,this.lib="dayjs",this.locale=void 0,this.formats=void 0,this.escapedCharacters={start:"[",end:"]"},this.formatTokenMap=vt,this.setLocaleToValue=t=>{const e=this.getCurrentLocaleCode();return e===t.locale()?t:t.locale(e)},this.hasUTCPlugin=()=>typeof c.utc<"u",this.hasTimezonePlugin=()=>typeof c.tz<"u",this.isSame=(t,e,i)=>{const a=this.setTimezone(e,this.getTimezone(t));return t.format(i)===a.format(i)},this.cleanTimezone=t=>{switch(t){case"default":return;case"system":return c.tz.guess();default:return t}},this.createSystemDate=t=>{let e;if(this.hasUTCPlugin()&&this.hasTimezonePlugin()){const i=c.tz.guess();i==="UTC"?e=c(t):e=c.tz(t,i)}else e=c(t);return this.setLocaleToValue(e)},this.createUTCDate=t=>{if(!this.hasUTCPlugin())throw new Error(K);return this.setLocaleToValue(c.utc(t))},this.createTZDate=(t,e)=>{if(!this.hasUTCPlugin())throw new Error(K);if(!this.hasTimezonePlugin())throw new Error(at);const i=t!==void 0&&!t.endsWith("Z");return this.setLocaleToValue(c(t).tz(this.cleanTimezone(e),i))},this.getLocaleFormats=()=>{const t=c.Ls,e=this.locale||"en";let i=t[e];return i===void 0&&(i=t.en),i.formats},this.adjustOffset=t=>{if(!this.hasTimezonePlugin())return t;const e=this.getTimezone(t);if(e!=="UTC"){const i=t.tz(this.cleanTimezone(e),!0);if(i.$offset===(t.$offset??0))return t;t.$offset=i.$offset}return t},this.date=(t,e="default")=>t===null?null:e==="UTC"?this.createUTCDate(t):e==="system"||e==="default"&&!this.hasTimezonePlugin()?this.createSystemDate(t):this.createTZDate(t,e),this.getInvalidDate=()=>c(new Date("Invalid date")),this.getTimezone=t=>{if(this.hasTimezonePlugin()){const e=t.$x?.$timezone;if(e)return e}return this.hasUTCPlugin()&&t.isUTC()?"UTC":"system"},this.setTimezone=(t,e)=>{if(this.getTimezone(t)===e)return t;if(e==="UTC"){if(!this.hasUTCPlugin())throw new Error(K);return t.utc()}if(e==="system")return t.local();if(!this.hasTimezonePlugin()){if(e==="default")return t;throw new Error(at)}return this.setLocaleToValue(c.tz(t,this.cleanTimezone(e)))},this.toJsDate=t=>t.toDate(),this.parse=(t,e)=>t===""?null:c(t,e,this.locale,!0),this.getCurrentLocaleCode=()=>this.locale||"en",this.is12HourCycleInCurrentLocale=()=>/A|a/.test(this.getLocaleFormats().LT||""),this.expandFormat=t=>{const e=this.getLocaleFormats(),i=a=>a.replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(r,s,u)=>s||u.slice(1));return t.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(a,r,s)=>{const u=s&&s.toUpperCase();return r||e[s]||i(e[u])})},this.isValid=t=>t==null?!1:t.isValid(),this.format=(t,e)=>this.formatByString(t,this.formats[e]),this.formatByString=(t,e)=>this.setLocaleToValue(t).format(e),this.formatNumber=t=>t,this.isEqual=(t,e)=>t===null&&e===null?!0:t===null||e===null?!1:t.toDate().getTime()===e.toDate().getTime(),this.isSameYear=(t,e)=>this.isSame(t,e,"YYYY"),this.isSameMonth=(t,e)=>this.isSame(t,e,"YYYY-MM"),this.isSameDay=(t,e)=>this.isSame(t,e,"YYYY-MM-DD"),this.isSameHour=(t,e)=>t.isSame(e,"hour"),this.isAfter=(t,e)=>t>e,this.isAfterYear=(t,e)=>this.hasUTCPlugin()?!this.isSameYear(t,e)&&t.utc()>e.utc():t.isAfter(e,"year"),this.isAfterDay=(t,e)=>this.hasUTCPlugin()?!this.isSameDay(t,e)&&t.utc()>e.utc():t.isAfter(e,"day"),this.isBefore=(t,e)=>t<e,this.isBeforeYear=(t,e)=>this.hasUTCPlugin()?!this.isSameYear(t,e)&&t.utc()<e.utc():t.isBefore(e,"year"),this.isBeforeDay=(t,e)=>this.hasUTCPlugin()?!this.isSameDay(t,e)&&t.utc()<e.utc():t.isBefore(e,"day"),this.isWithinRange=(t,[e,i])=>t>=e&&t<=i,this.startOfYear=t=>this.adjustOffset(t.startOf("year")),this.startOfMonth=t=>this.adjustOffset(t.startOf("month")),this.startOfWeek=t=>this.adjustOffset(this.setLocaleToValue(t).startOf("week")),this.startOfDay=t=>this.adjustOffset(t.startOf("day")),this.endOfYear=t=>this.adjustOffset(t.endOf("year")),this.endOfMonth=t=>this.adjustOffset(t.endOf("month")),this.endOfWeek=t=>this.adjustOffset(this.setLocaleToValue(t).endOf("week")),this.endOfDay=t=>this.adjustOffset(t.endOf("day")),this.addYears=(t,e)=>this.adjustOffset(t.add(e,"year")),this.addMonths=(t,e)=>this.adjustOffset(t.add(e,"month")),this.addWeeks=(t,e)=>this.adjustOffset(t.add(e,"week")),this.addDays=(t,e)=>this.adjustOffset(t.add(e,"day")),this.addHours=(t,e)=>this.adjustOffset(t.add(e,"hour")),this.addMinutes=(t,e)=>this.adjustOffset(t.add(e,"minute")),this.addSeconds=(t,e)=>this.adjustOffset(t.add(e,"second")),this.getYear=t=>t.year(),this.getMonth=t=>t.month(),this.getDate=t=>t.date(),this.getHours=t=>t.hour(),this.getMinutes=t=>t.minute(),this.getSeconds=t=>t.second(),this.getMilliseconds=t=>t.millisecond(),this.setYear=(t,e)=>this.adjustOffset(t.set("year",e)),this.setMonth=(t,e)=>this.adjustOffset(t.set("month",e)),this.setDate=(t,e)=>this.adjustOffset(t.set("date",e)),this.setHours=(t,e)=>this.adjustOffset(t.set("hour",e)),this.setMinutes=(t,e)=>this.adjustOffset(t.set("minute",e)),this.setSeconds=(t,e)=>this.adjustOffset(t.set("second",e)),this.setMilliseconds=(t,e)=>this.adjustOffset(t.set("millisecond",e)),this.getDaysInMonth=t=>t.daysInMonth(),this.getWeekArray=t=>{const e=this.startOfWeek(this.startOfMonth(t)),i=this.endOfWeek(this.endOfMonth(t));let a=0,r=e;const s=[];for(;r<i;){const u=Math.floor(a/7);s[u]=s[u]||[],s[u].push(r),r=this.addDays(r,1),a+=1}return s},this.getWeekNumber=t=>t.week(),this.getYearRange=([t,e])=>{const i=this.startOfYear(t),a=this.endOfYear(e),r=[];let s=i;for(;this.isBefore(s,a);)r.push(s),s=this.addYears(s,1);return r},this.locale=z,this.formats=lt({},$t,m),c.extend(Ot)}getDayOfWeek(z){return z.day()+1}}export{Bt as A};
|