@abtnode/blocklet-services 1.16.34-beta-20241204-140321-4d75ca21 → 1.16.34-beta-20241205-145120-3a7aa096
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 +4 -4
- package/api/middlewares/check-federated.js +157 -0
- package/api/routes/federated.js +529 -573
- package/api/routes/oauth.js +32 -54
- package/api/routes/user-session.js +239 -214
- package/api/routes/user.js +52 -45
- package/api/services/auth/connect/invite.js +1 -1
- package/api/services/auth/connect/issue-passport.js +1 -1
- package/api/services/auth/session.js +31 -9
- package/api/util/attach-shared-utils.js +6 -6
- package/api/util/federated.js +28 -72
- package/dist/assets/Add-CEkiASJk.js +1 -0
- package/dist/assets/{Alert-XwCbbCdw.js → Alert-D7cZ7kYh.js} +1 -1
- package/dist/assets/ArrowDropDown-CNA2YBpw.js +1 -0
- package/dist/assets/{Autocomplete-CtKfl8OV.js → Autocomplete-DqOPJmfP.js} +1 -1
- package/dist/assets/{Avatar-BuTYVz6S.js → Avatar-CC2uCgJO.js} +1 -1
- package/dist/assets/{ButtonGroup-9mTO_MUt.js → ButtonGroup-DVkbPyCf.js} +1 -1
- package/dist/assets/{CSSTransition-VPmtoKE7.js → CSSTransition-CAyoWadY.js} +1 -1
- package/dist/assets/CheckCircle-ne5PaInr.js +1 -0
- package/dist/assets/ChevronLeft-CzFyG6B9.js +1 -0
- package/dist/assets/ChevronRight-D28wkT_7.js +1 -0
- package/dist/assets/Delete-W0XHLr5E.js +1 -0
- package/dist/assets/DeleteOutline-CBAPet9Y.js +1 -0
- package/dist/assets/DialogContentText-DF6wXq4v.js +1 -0
- package/dist/assets/Done-BMgw3G29.js +1 -0
- package/dist/assets/Download-CWu1DNgF.js +1 -0
- package/dist/assets/{EditIcon-D5uy6dXe.js → EditIcon-L7k3tqrQ.js} +1 -1
- package/dist/assets/Error-DewSa72i.js +1 -0
- package/dist/assets/ExpandMore-dR0m3faK.js +1 -0
- package/dist/assets/FormControl-C3U9aSdK.js +1 -0
- package/dist/assets/{FormControlLabel-Ka9Y3VW4.js → FormControlLabel-uhzkWhIR.js} +1 -1
- package/dist/assets/FormGroup-zmk2zBRp.js +1 -0
- package/dist/assets/{Google-fmIzZ4SE.js → Google-BJOVX6-i.js} +1 -1
- package/dist/assets/{Grid-CLg9BKgo.js → Grid-CRcYquo8.js} +1 -1
- package/dist/assets/HelpOutline-1C4eFcXT.js +1 -0
- package/dist/assets/Hidden-C6Nsczh0.js +1 -0
- package/dist/assets/InfoOutlined-0F0dMk0M.js +1 -0
- package/dist/assets/{InputAdornment-7bcT-OxU.js → InputAdornment-HjZlszj5.js} +1 -1
- package/dist/assets/{LastPage-BNIPjfIv.js → LastPage-C8Ibu_ZS.js} +1 -1
- package/dist/assets/Launch-_9WY6qT8.js +1 -0
- package/dist/assets/LaunchOutlined-DpBWMSDU.js +1 -0
- package/dist/assets/{Link-Dgz_hg-A.js → Link-BHzX6Bty.js} +1 -1
- package/dist/assets/{ListItemButton-COVroopz.js → ListItemButton-Bg2hcpe4.js} +1 -1
- package/dist/assets/{ListSubheader-DoFPqSxT.js → ListSubheader-BnOsaMFL.js} +1 -1
- package/dist/assets/{LoadingButton-Cpsng3ic.js → LoadingButton-DHvQ4mj0.js} +1 -1
- package/dist/assets/{LockIcon-xMd6TgDT.js → LockIcon-BF2LVzIr.js} +1 -1
- package/dist/assets/Loop-DwW0YmEY.js +1 -0
- package/dist/assets/MarkEmailRead-BUgtVfuj.js +1 -0
- package/dist/assets/Menu-C0_eNw-R.js +1 -0
- package/dist/assets/MoreHoriz-B3eBOSmM.js +1 -0
- package/dist/assets/MoreVert-9FUIKqvo.js +1 -0
- package/dist/assets/OpenInNew-IfJ9_ovA.js +1 -0
- package/dist/assets/{Pagination-BdODbVsE.js → Pagination-KTMAbLPe.js} +1 -1
- package/dist/assets/PlayArrow-BzCvLnOA.js +1 -0
- package/dist/assets/{QuestionMarkCircle-CeLvEIhA.js → QuestionMarkCircle-Bp1qdiMj.js} +1 -1
- package/dist/assets/{RadioGroup-CkuUb_-r.js → RadioGroup-D6iB2v9N.js} +1 -1
- package/dist/assets/Search-CeQJr6Zd.js +1 -0
- package/dist/assets/{Select-BM5xijW7.js → Select-63T17LTs.js} +2 -2
- package/dist/assets/{ServerLogo-CocwN-L6.js → ServerLogo-BjD55kNo.js} +1 -1
- package/dist/assets/{Skeleton-BQ4gLbdR.js → Skeleton-Cguhg4Uf.js} +5 -5
- package/dist/assets/{Stack-690-8aHU.js → Stack-B2wvO5ch.js} +1 -1
- package/dist/assets/{Stepper-DPFFvB9h.js → Stepper-Cf6EXzKT.js} +1 -1
- package/dist/assets/{TextField-CFRK87D0.js → TextField-DaxOve82.js} +1 -1
- package/dist/assets/{Toolbar-Ba22YRhW.js → Toolbar-CbY6pPMn.js} +1 -1
- package/dist/assets/ViewColumn-BSkUFzQn.js +1 -0
- package/dist/assets/ViewList-BJW4-xJh.js +1 -0
- package/dist/assets/{_createAggregator-Ct5VkIH5.js → _createAggregator-gmWpxOiT.js} +1 -1
- package/dist/assets/access-control-hkwSmrDz.js +13 -0
- package/dist/assets/{actions-R7d7-bh3.js → actions-mviDIL98.js} +1 -1
- package/dist/assets/{add-component-core-qARkFBQB.js → add-component-core-D8ycTCOD.js} +10 -10
- package/dist/assets/add-resource-Dvlc6tV9.js +1 -0
- package/dist/assets/{addon-BJli1WRW.js → addon-CBWbLYEt.js} +1 -1
- package/dist/assets/{analytics-B3iUwhYK.js → analytics-DEYYvSpr.js} +7 -7
- package/dist/assets/api-09lpjN_y.js +1 -0
- package/dist/assets/{ar-7AvHBDLJ.js → ar-BENken66.js} +1 -1
- package/dist/assets/audit-logs-CKasQ1r7.js +58 -0
- package/dist/assets/{base32-Mo2B3fHT.js → base32-BodeVrwr.js} +1 -1
- package/dist/assets/{branding-BThKyvoW.js → branding-C6L3eHHi.js} +2 -2
- package/dist/assets/bundle-avatar-DGCY6XtV.js +1 -0
- package/dist/assets/{button-eTEsJSJ0.js → button-_kh3esRx.js} +1 -1
- package/dist/assets/{click-to-copy-CkFI8a1W.js → click-to-copy-Dhz68Zb7.js} +1 -1
- package/dist/assets/{complete-Bb-6z_26.js → complete-CbF_9acR.js} +4 -4
- package/dist/assets/{component-kGv-hUvT.js → component-TW3Q8q-H.js} +2 -2
- package/dist/assets/{config-BVYueZpV.js → config-DOKBlczF.js} +2 -2
- package/dist/assets/config-NLq72VC7.js +1 -0
- package/dist/assets/{config-navigation-NUbYVs4N.js → config-navigation-BrZYJfdX.js} +5 -5
- package/dist/assets/config-space-CgNK0LkG.js +1 -0
- package/dist/assets/{confirm-CIF7Vu-X.js → confirm-CgBlPewa.js} +1 -1
- package/dist/assets/{connect-Dj-BrpmM.js → connect-BLWlkmzZ.js} +2 -2
- package/dist/assets/connect-BoJDz_r9.js +1 -0
- package/dist/assets/{connect-to-ZJr8_Nq9.js → connect-to-Bjjro7dm.js} +1 -1
- package/dist/assets/{content-layout-DSpN7kL2.js → content-layout-De6X9MfH.js} +1 -1
- package/dist/assets/{dashboard-BUsMb2Wm.js → dashboard-DNfo36ET.js} +7 -7
- package/dist/assets/{de-S6ufmRx0.js → de-C8d8saMJ.js} +1 -1
- package/dist/assets/{deprecate-W6wP2f1U.js → deprecate-C8CVzteH.js} +1 -1
- package/dist/assets/{did-address-DpP51eII.js → did-address-CQAHayeq.js} +1 -1
- package/dist/assets/domain-4tz_iUAg.js +9 -0
- package/dist/assets/domain-list-CSCowbSF.js +15 -0
- package/dist/assets/{email-DETfN-BC.js → email-B7GCHFcD.js} +3 -3
- package/dist/assets/emotion-cache.browser.esm-7imm0F3K.js +1 -0
- package/dist/assets/{es-Sth9cv6C.js → es-8ZzWXB3U.js} +1 -1
- package/dist/assets/exchange-passport-BMGoDnTe.js +1 -0
- package/dist/assets/{fallback-CTOpqcoo.js → fallback-xgYg9R2J.js} +1 -1
- package/dist/assets/form-text-input-D8gtQI8g.js +11 -0
- package/dist/assets/{format-error-jTY-wvGv.js → format-error-kGGriKiA.js} +2 -2
- package/dist/assets/{fr-BX6bo8e1.js → fr-CDmTLuDM.js} +1 -1
- package/dist/assets/{fuel-Dx06V-YR.js → fuel-NUdjiJCN.js} +1 -1
- package/dist/assets/{fullpage-Dz8PPWdq.js → fullpage-BVHpRAYk.js} +1 -1
- package/dist/assets/{hi-pYobKga6.js → hi-DfYUKMCb.js} +1 -1
- package/dist/assets/{home-BCoo1Guo.js → home-rJKruo1j.js} +1 -1
- package/dist/assets/{id-Xei40tOm.js → id-BeY7iur-.js} +1 -1
- package/dist/assets/{iframe-GN8AUKA4.js → iframe-Cv3PJcvz.js} +1 -1
- package/dist/assets/index-6GwWrwWj.js +16 -0
- package/dist/assets/{index-cIe0Ged1.js → index-B2zxMB5n.js} +1 -1
- package/dist/assets/{index-B019qXp1.js → index-BHrceiDz.js} +1 -1
- package/dist/assets/{index-BDxuBkP1.js → index-BIDxxb9t.js} +1 -1
- package/dist/assets/{index-COdSzYad.js → index-BILgagmI.js} +2 -2
- package/dist/assets/{index-Bs9TLgSC.js → index-BM0eHOUA.js} +2 -2
- package/dist/assets/index-BaLRQJTh.js +102 -0
- package/dist/assets/{index-B3pPqycI.js → index-BlTIDXDG.js} +1 -1
- package/dist/assets/{index-BidszMO2.js → index-BnljNGH7.js} +38 -38
- package/dist/assets/{index-W2CQmt_X.js → index-BxZgdCUX.js} +2 -2
- package/dist/assets/{index-delqLXRr.js → index-C-s0lU62.js} +8 -8
- package/dist/assets/index-CBp5iNXP.js +1 -0
- package/dist/assets/{index-4RJk4AiM.js → index-CETPQNRT.js} +1 -1
- package/dist/assets/{index-yi-655mj.js → index-CKLF9fLH.js} +1 -1
- package/dist/assets/{index-BjfhU-QW.js → index-CMY8zSjT.js} +1 -1
- package/dist/assets/{index-ZPFypmuO.js → index-CTGtgEeG.js} +1 -1
- package/dist/assets/{index-BXHMtAUn.js → index-C_vk9fqw.js} +2 -2
- package/dist/assets/{index-q1m8Euwz.js → index-CuHWguJg.js} +1 -1
- package/dist/assets/{index-BxKrUgd9.js → index-Cu_bNPbk.js} +70 -70
- package/dist/assets/index-D1YHjvRT.js +4 -0
- package/dist/assets/{index-CG1XIXZC.js → index-D1YU1vFk.js} +1 -1
- package/dist/assets/{index-BzVm0XuZ.js → index-D2d4qfN2.js} +1 -1
- package/dist/assets/{index-UEoZJA9L.js → index-DAKGZhdR.js} +1 -1
- package/dist/assets/index-DQrMXKph.js +1 -0
- package/dist/assets/{index-CYQV6023.js → index-DToO2H3Q.js} +12 -12
- package/dist/assets/{index-DgonWrzm.js → index-DeYzXL4z.js} +4 -4
- package/dist/assets/{index-BP0LEaeg.js → index-DpZHKufu.js} +8 -8
- package/dist/assets/index-DqjLLD7P.js +5 -0
- package/dist/assets/{index-CjkNshyI.js → index-Dt4OruAC.js} +1 -1
- package/dist/assets/{index-B_EeAcSB.js → index-HYjTpFy9.js} +1 -1
- package/dist/assets/index-J3ZVv3j-.js +316 -0
- package/dist/assets/{index-rA_BKM5G.js → index-MtDT2QJN.js} +3 -3
- package/dist/assets/{index-8OiEpVkg.js → index-ag_Qlo60.js} +1 -1
- package/dist/assets/{index-B3Z8DzsY.js → index-mFPL7bdj.js} +3 -3
- package/dist/assets/{index-Db_Y81_-.js → index-nKobfUQ1.js} +1 -1
- package/dist/assets/{invitation-BPrK4inJ.js → invitation-DLNLgy6r.js} +5 -5
- package/dist/assets/invite-DPYR6t3s.js +5 -0
- package/dist/assets/{isEmail-BnC4loew.js → isEmail-i2tngnJi.js} +1 -1
- package/dist/assets/{issue-passport-573OuQnm.js → issue-passport-CBrIp3jc.js} +1 -1
- package/dist/assets/item-Brjh4PLo.js +1 -0
- package/dist/assets/{ja-DG0a06x8.js → ja-DvJTZg_Q.js} +1 -1
- package/dist/assets/{jss-plugin-props-sort.esm-Bp0MqRVc.js → jss-plugin-props-sort.esm-BX_bur4g.js} +4 -4
- package/dist/assets/{ko-BBC-RcU5.js → ko-C1lnK-Gx.js} +1 -1
- package/dist/assets/{launch-result-message-4m30f0Ag.js → launch-result-message-DF58OHNC.js} +1 -1
- package/dist/assets/{layout-Btp-_hcD.js → layout-BZwnld0E.js} +2 -2
- package/dist/assets/{list-header-DQEePd_T.js → list-header-DKFtTh4o.js} +1 -1
- package/dist/assets/localization-DIaD7pty.js +1 -0
- package/dist/assets/{log-DGIf8qzM.js → log-DcFRCLCX.js} +1 -1
- package/dist/assets/login-Bf5SQlPn.js +1 -0
- package/dist/assets/login-oauth-callback-BU7Pl33l.js +1 -0
- package/dist/assets/{logo-uploader-CC8WqbW-.js → logo-uploader-BbCcpszA.js} +4 -4
- package/dist/assets/{lost-passport-D_HnDqKr.js → lost-passport-D3RvUegp.js} +4 -4
- package/dist/assets/{lottie-react.esm-CtltdV0t.js → lottie-react.esm-ZH4Wk5XO.js} +1 -1
- package/dist/assets/notifications-BkSUBEzY.js +65 -0
- package/dist/assets/{open-window-CmBy5HkH.js → open-window-CSdTLwaf.js} +1 -1
- package/dist/assets/overview-DXC_j46y.js +12 -0
- package/dist/assets/{page-header-B5a7RE0E.js → page-header-Cri_UHX5.js} +1 -1
- package/dist/assets/{permission-CBfa-qlX.js → permission-DSn8EOQ9.js} +1 -1
- package/dist/assets/{preferences-CuRLxM0K.js → preferences-JFVWkPL4.js} +1 -1
- package/dist/assets/{pt-CNmFfxJU.js → pt-C86mXB8Z.js} +1 -1
- package/dist/assets/publish-resource-gk91W1J0.js +1 -0
- package/dist/assets/{raf-schd.esm-KaxPdV64.js → raf-schd.esm-CpouI05w.js} +1 -1
- package/dist/assets/{react-beautiful-dnd.esm-BlBywA4z.js → react-beautiful-dnd.esm-ChA2xoay.js} +1 -1
- package/dist/assets/refType-BXcUP-YS.js +1 -0
- package/dist/assets/{resource-dialog-DpLtB_Fw.js → resource-dialog-DZPqi5pw.js} +1 -1
- package/dist/assets/{ru-BVNv9w91.js → ru-Dxm-iAqn.js} +1 -1
- package/dist/assets/sdk-neE1aE7y.js +1 -0
- package/dist/assets/{selector-Drr6pXp9.js → selector--uPvisem.js} +4 -4
- package/dist/assets/session-D7-00CVs.js +1 -0
- package/dist/assets/{setup-cPNeqLVK.js → setup-CMaryrU8.js} +3 -3
- package/dist/assets/{shorten-label-DK0L2sJV.js → shorten-label-uAzGTCBy.js} +1 -1
- package/dist/assets/{simple-select-CHsQAOYZ.js → simple-select-M9sKVVQT.js} +1 -1
- package/dist/assets/{slicedToArray-n9LJBwV4.js → slicedToArray-CHm_9UsL.js} +2 -2
- package/dist/assets/{start-CcvndivR.js → start-D5P3Y_Mp.js} +1 -1
- package/dist/assets/{step-actions-D_1mpc4C.js → step-actions-DRDtE9i9.js} +2 -2
- package/dist/assets/studio-DDRR9uTH.js +6 -0
- package/dist/assets/{switch-control-2C3bwebR.js → switch-control-C8d_eiWi.js} +1 -1
- package/dist/assets/{th-CObnQ6OH.js → th-BamIf1b8.js} +1 -1
- package/dist/assets/{toUpper-DtTJYJCz.js → toUpper-Bq-NIfax.js} +1 -1
- package/dist/assets/{transfer-BNPHc5-e.js → transfer-COMtxr-_.js} +2 -2
- package/dist/assets/{trim-Boaje3e9.js → trim-Bn0r8NiZ.js} +1 -1
- package/dist/assets/{uniqBy-B2B_OSuq.js → uniqBy-Baa3ApX9.js} +1 -1
- package/dist/assets/unsubscribe-BUf0fqE6.js +1 -0
- package/dist/assets/{url-join-aL0dlRwK.js → url-join-BUPuIN5Z.js} +1 -1
- package/dist/assets/use-mobile-BexDu-6x.js +1 -0
- package/dist/assets/use-mobile-CUJBViwc.js +1 -0
- package/dist/assets/{useAsync-B5aCa8BU.js → useAsync-DlT-wYlz.js} +1 -1
- package/dist/assets/{useFormControl-De83T2k8.js → useFormControl-CW2PoJes.js} +1 -1
- package/dist/assets/{useLocalStorage-Cg4UWbtJ.js → useLocalStorage-BfN8jDuG.js} +1 -1
- package/dist/assets/{useSetState-C5EefhmT.js → useSetState-CKmZy4S9.js} +1 -1
- package/dist/assets/useSlot-BDokg4R-.js +1 -0
- package/dist/assets/{useSlotProps-9EZsnKiK.js → useSlotProps-BvV0G0yb.js} +1 -1
- package/dist/assets/{useThemeProps-DFbMvLjq.js → useThemeProps-28x2bH1r.js} +1 -1
- package/dist/assets/user-center-D6WQO8xG.js +1 -0
- package/dist/assets/user-sessions-DRnCKb0z.js +1 -0
- package/dist/assets/util-ZRcOJEuz.js +1 -0
- package/dist/assets/{vi-DPE1cpvE.js → vi-CTEgHnG8.js} +1 -1
- package/dist/assets/wrap-locale-Bsx6I5ww.js +1 -0
- package/dist/assets/{zh-ZJh718gR.js → zh-C9pcKSvk.js} +1 -1
- package/dist/assets/{zh-tw-q3KEUdcz.js → zh-tw-CuhSzmQN.js} +1 -1
- package/dist/index.html +1 -1
- package/dist/service-worker.js +1 -1
- package/package.json +26 -25
- package/api/middlewares/verify-federated-call.js +0 -36
- package/dist/assets/Add-DtejxYv7.js +0 -1
- package/dist/assets/ArrowDropDown-DLu5ghJ6.js +0 -1
- package/dist/assets/CheckCircle-BvTAg_Vb.js +0 -1
- package/dist/assets/ChevronLeft-CogeEPev.js +0 -1
- package/dist/assets/ChevronRight-BATWClLP.js +0 -1
- package/dist/assets/Delete-BvK_hDyw.js +0 -1
- package/dist/assets/DeleteOutline-CFkN2u6G.js +0 -1
- package/dist/assets/DialogContentText-BSTFqlB8.js +0 -1
- package/dist/assets/Done-BCayGyaP.js +0 -1
- package/dist/assets/Download-3v1IPpRg.js +0 -1
- package/dist/assets/Error-KMHXOqQS.js +0 -1
- package/dist/assets/ExpandMore-XeiYcXA0.js +0 -1
- package/dist/assets/FormControl-D9UzJGr3.js +0 -1
- package/dist/assets/FormGroup-BqZ71koG.js +0 -1
- package/dist/assets/HelpOutline-D-mVzldg.js +0 -1
- package/dist/assets/Hidden-B_FCIv2F.js +0 -1
- package/dist/assets/InfoOutlined-fhivWooJ.js +0 -1
- package/dist/assets/Launch-B6-uAhbQ.js +0 -1
- package/dist/assets/LaunchOutlined-BEenLVbN.js +0 -1
- package/dist/assets/Loop-tJ6uJkRI.js +0 -1
- package/dist/assets/MarkEmailRead-BNHtpgz2.js +0 -1
- package/dist/assets/Menu-CkD81HZ5.js +0 -1
- package/dist/assets/MoreHoriz-qqmi4YRC.js +0 -1
- package/dist/assets/MoreVert-BZZ4IBOf.js +0 -1
- package/dist/assets/OpenInNew-C5XvRsRC.js +0 -1
- package/dist/assets/PlayArrow-Cn0cfGNW.js +0 -1
- package/dist/assets/Search-DXRr3XZy.js +0 -1
- package/dist/assets/ViewColumn-GTnSFOFd.js +0 -1
- package/dist/assets/ViewList-BtVWmZJ0.js +0 -1
- package/dist/assets/access-control-BmMbklSe.js +0 -13
- package/dist/assets/add-resource-lnxpvPO7.js +0 -1
- package/dist/assets/api-lbSHYKYc.js +0 -1
- package/dist/assets/audit-logs-0TJ_0Mvw.js +0 -58
- package/dist/assets/bundle-avatar-CcIs5XOV.js +0 -1
- package/dist/assets/config-kysZ8p5u.js +0 -1
- package/dist/assets/config-space-BPpdFWKx.js +0 -1
- package/dist/assets/connect-DPIWGg69.js +0 -1
- package/dist/assets/domain-CcBPnmmR.js +0 -9
- package/dist/assets/domain-list-CVn1TPCl.js +0 -15
- package/dist/assets/emotion-cache.browser.esm-DkJEKl9I.js +0 -1
- package/dist/assets/exchange-passport-BetHiKY_.js +0 -1
- package/dist/assets/form-text-input-BUB_rL9o.js +0 -11
- package/dist/assets/index-B2fUK0Jg.js +0 -16
- package/dist/assets/index-BArNVkrG.js +0 -1
- package/dist/assets/index-CQSz6hXt.js +0 -316
- package/dist/assets/index-CRK13xk6.js +0 -102
- package/dist/assets/index-D_g2YpF8.js +0 -1
- package/dist/assets/index-De1VedzO.js +0 -5
- package/dist/assets/index-PD8enw5a.js +0 -4
- package/dist/assets/invite-VzUmhGJg.js +0 -5
- package/dist/assets/item-BoFU04RW.js +0 -1
- package/dist/assets/localization-BJhiRnk-.js +0 -1
- package/dist/assets/login-Cu5oiCaE.js +0 -1
- package/dist/assets/login-oauth-callback-Dim9h4c3.js +0 -1
- package/dist/assets/notifications-tGIsoEd6.js +0 -65
- package/dist/assets/overview-CmwcUtDq.js +0 -12
- package/dist/assets/publish-resource-aoq2ZIeT.js +0 -1
- package/dist/assets/refType-CNi4gHMp.js +0 -1
- package/dist/assets/sdk-CrAhZvgC.js +0 -1
- package/dist/assets/session-BGDxwrDP.js +0 -1
- package/dist/assets/studio-BdIpZDRv.js +0 -6
- package/dist/assets/unsubscribe-eud8OqTh.js +0 -1
- package/dist/assets/use-mobile-D7IK9xm6.js +0 -1
- package/dist/assets/use-mobile-TJQ6s1hH.js +0 -1
- package/dist/assets/useSlot-DebDFCUQ.js +0 -1
- package/dist/assets/user-center-BWtnQHWR.js +0 -1
- package/dist/assets/user-sessions-DTvyZm5S.js +0 -1
- package/dist/assets/util-BBKZBp8H.js +0 -1
- package/dist/assets/wrap-locale-Ci8gmRb6.js +0 -1
|
@@ -1,21 +1,23 @@
|
|
|
1
1
|
/* eslint-disable no-await-in-loop */
|
|
2
2
|
const { WELLKNOWN_SERVICE_PATH_PREFIX, SESSION_TTL } = require('@abtnode/constant');
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
const { LOGIN_PROVIDER } = require('@blocklet/constant');
|
|
4
|
+
const pick = require('lodash/pick');
|
|
5
5
|
const defaults = require('lodash/defaults');
|
|
6
6
|
const cloneDeep = require('lodash/cloneDeep');
|
|
7
|
-
// const sortBy = require('lodash/sortBy');
|
|
8
7
|
const omit = require('lodash/omit');
|
|
9
8
|
const pLimit = require('p-limit');
|
|
10
|
-
|
|
9
|
+
const { getSourceProvider } = require('@blocklet/meta/lib/did-utils');
|
|
11
10
|
const getRequestIP = require('@abtnode/util/lib/get-request-ip');
|
|
12
|
-
|
|
11
|
+
const { getFederatedMembers, getFederatedMaster } = require('@abtnode/auth/lib/util/federated');
|
|
12
|
+
const { messages } = require('@abtnode/auth/lib/auth');
|
|
13
|
+
const { Joi } = require('@arcblock/validator');
|
|
13
14
|
|
|
14
|
-
|
|
15
|
+
const logger = require('../libs/logger')('blocklet-services:user-session');
|
|
15
16
|
const ensureBlocklet = require('../middlewares/ensure-blocklet');
|
|
16
17
|
const { getUserAvatarUrl } = require('../util/federated');
|
|
17
|
-
|
|
18
|
-
|
|
18
|
+
const initJwt = require('../libs/jwt');
|
|
19
|
+
const { createTokenFn, getDidConnectVersion } = require('../util');
|
|
20
|
+
const checkUser = require('../middlewares/check-user');
|
|
19
21
|
|
|
20
22
|
const prefix = `${WELLKNOWN_SERVICE_PATH_PREFIX}/api/user-session`;
|
|
21
23
|
const limit = pLimit(5);
|
|
@@ -88,228 +90,251 @@ async function patchUserSessionData(userSession, { blocklet, appPid, teamDid, no
|
|
|
88
90
|
userSession.user.roleTitle = passport?.title || 'guest';
|
|
89
91
|
}
|
|
90
92
|
|
|
93
|
+
const loginSessionSchema = Joi.object({
|
|
94
|
+
// uuid 版本需要保持跟数据库 model 定义一致
|
|
95
|
+
id: Joi.string().uuid({ version: 'uuidv4' }).required(),
|
|
96
|
+
userDid: Joi.DID().required(),
|
|
97
|
+
appPid: Joi.DID().required(),
|
|
98
|
+
passportId: Joi.string().allow('', null).optional(),
|
|
99
|
+
}).unknown(true);
|
|
100
|
+
|
|
91
101
|
module.exports = {
|
|
92
102
|
// eslint-disable-next-line no-unused-vars
|
|
93
103
|
init(app, node, options) {
|
|
94
|
-
// FIXME: @zhanghan 登录要确保安全性
|
|
95
104
|
// NOTE: 保留 /login 路由,该功能不是针对于某一个实体来操作的,需要更明确表达意图
|
|
96
|
-
app.post(`${prefix}/login`, ensureBlocklet(), (req, res) => {
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
105
|
+
app.post(`${prefix}/login`, ensureBlocklet(), async (req, res) => {
|
|
106
|
+
const { blocklet } = req;
|
|
107
|
+
const loginUserSession = req.body;
|
|
108
|
+
|
|
109
|
+
const { value: validUserSession, error } = loginSessionSchema.validate(loginUserSession);
|
|
110
|
+
|
|
111
|
+
if (error) {
|
|
112
|
+
logger.error('Failed to login by user-session', {
|
|
113
|
+
error,
|
|
114
|
+
loginUserSession,
|
|
115
|
+
});
|
|
116
|
+
res.status(400).json({ error });
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
const teamDid = blocklet.appPid;
|
|
121
|
+
const [validSession] = await node.getUserSession({
|
|
122
|
+
teamDid,
|
|
123
|
+
userDid: validUserSession.userDid,
|
|
124
|
+
id: validUserSession.id,
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
if (validSession) {
|
|
128
|
+
const user = await node.getUser({ teamDid, user: { did: validUserSession.userDid } });
|
|
129
|
+
if (!user.approved) {
|
|
130
|
+
res.status(401).json(messages.notAllowedAppUser.en);
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
const sourceProvider = getSourceProvider(user);
|
|
134
|
+
|
|
135
|
+
const provider = sourceProvider || LOGIN_PROVIDER.WALLET;
|
|
136
|
+
|
|
137
|
+
const masterSite = getFederatedMaster(blocklet);
|
|
138
|
+
const memberSiteList = getFederatedMembers(blocklet);
|
|
139
|
+
const memberSite = memberSiteList.find((item) => item.appPid === validUserSession.appPid);
|
|
140
|
+
const postUser = pick(user, ['did', 'pk', 'fullName', 'locale', 'inviter', 'generation']);
|
|
141
|
+
postUser.lastLoginAt = getRequestIP(req);
|
|
142
|
+
|
|
143
|
+
if (user.email) {
|
|
144
|
+
postUser.email = user.email;
|
|
145
|
+
}
|
|
146
|
+
if (user.avatar) {
|
|
147
|
+
postUser.avatar = getUserAvatarUrl(user.avatar, blocklet);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
let result = {};
|
|
151
|
+
|
|
152
|
+
const walletOS = validSession?.extra?.walletOS || 'web';
|
|
153
|
+
|
|
154
|
+
const isFederatedLogin = memberSite && masterSite.appPid === teamDid;
|
|
155
|
+
if (isFederatedLogin) {
|
|
156
|
+
try {
|
|
157
|
+
result = await node.loginFederated({
|
|
158
|
+
did: teamDid,
|
|
159
|
+
data: {
|
|
160
|
+
user: postUser,
|
|
161
|
+
passport: validUserSession.passportId ? { id: validUserSession.passportId } : undefined,
|
|
162
|
+
walletOS,
|
|
163
|
+
provider,
|
|
164
|
+
},
|
|
165
|
+
site: memberSite,
|
|
166
|
+
});
|
|
167
|
+
} catch (err) {
|
|
168
|
+
logger.error('Failed to login federated', { error: err, memberSite });
|
|
169
|
+
if (err.response) {
|
|
170
|
+
const { status, data } = err.response;
|
|
171
|
+
res.status(status).json(data);
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
throw err;
|
|
175
|
+
}
|
|
176
|
+
} else {
|
|
177
|
+
const { createSessionToken } = initJwt(node, options);
|
|
178
|
+
const createToken = createTokenFn(createSessionToken);
|
|
179
|
+
const { secret } = await req.getBlockletInfo();
|
|
180
|
+
const sessionConfig = blocklet.settings?.session || {};
|
|
181
|
+
const targetPassport = validUserSession.passportId
|
|
182
|
+
? (user?.passports || []).find((item) => item.id === validUserSession.passportId)
|
|
183
|
+
: null;
|
|
184
|
+
const loggedInUser = await node.loginUser({
|
|
185
|
+
teamDid,
|
|
186
|
+
user: {
|
|
187
|
+
did: postUser.did,
|
|
188
|
+
pk: postUser.pk,
|
|
189
|
+
passport: targetPassport,
|
|
190
|
+
connectedAccount: {
|
|
191
|
+
provider,
|
|
192
|
+
did: user.did,
|
|
193
|
+
pk: user.pk,
|
|
194
|
+
},
|
|
195
|
+
},
|
|
196
|
+
});
|
|
197
|
+
|
|
198
|
+
result = createToken(
|
|
199
|
+
user.did,
|
|
200
|
+
{
|
|
201
|
+
secret,
|
|
202
|
+
passport: targetPassport,
|
|
203
|
+
role: targetPassport?.role || 'guest',
|
|
204
|
+
fullName: loggedInUser.fullName,
|
|
205
|
+
provider,
|
|
206
|
+
walletOS,
|
|
207
|
+
emailVerified: !!user?.emailVerified,
|
|
208
|
+
phoneVerified: !!user?.phoneVerified,
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
...sessionConfig,
|
|
212
|
+
didConnectVersion: getDidConnectVersion(req),
|
|
213
|
+
}
|
|
214
|
+
);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
const lastLoginIp = getRequestIP(req);
|
|
218
|
+
const ua = req.get('user-agent');
|
|
219
|
+
const walletDeviceMessageToken = req.get('wallet-device-message-token');
|
|
220
|
+
const walletDeviceId = req.get('wallet-device-id');
|
|
221
|
+
|
|
222
|
+
const userSessionDoc = await node.upsertUserSession({
|
|
223
|
+
id: validUserSession.id,
|
|
224
|
+
teamDid,
|
|
225
|
+
userDid: validUserSession.userDid,
|
|
226
|
+
visitorId: validSession.visitorId,
|
|
227
|
+
appPid: validUserSession.appPid,
|
|
228
|
+
passportId: validUserSession.passportId,
|
|
229
|
+
status: 'online',
|
|
230
|
+
ua: null,
|
|
231
|
+
lastLoginIp,
|
|
232
|
+
extra: {
|
|
233
|
+
walletOS,
|
|
234
|
+
walletDeviceMessageToken,
|
|
235
|
+
walletDeviceId,
|
|
236
|
+
},
|
|
237
|
+
});
|
|
238
|
+
|
|
239
|
+
if (isFederatedLogin) {
|
|
240
|
+
node.syncUserSession({
|
|
241
|
+
teamDid,
|
|
242
|
+
userDid: validUserSession.userDid,
|
|
243
|
+
visitorId: userSessionDoc.visitorId,
|
|
244
|
+
passportId: validUserSession.passportId,
|
|
245
|
+
targetAppPid: validUserSession.appPid,
|
|
246
|
+
ua,
|
|
247
|
+
lastLoginIp,
|
|
248
|
+
extra: {
|
|
249
|
+
walletOS,
|
|
250
|
+
walletDeviceMessageToken,
|
|
251
|
+
walletDeviceId,
|
|
252
|
+
},
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
logger.info('quick-login with', {
|
|
257
|
+
teamDid,
|
|
258
|
+
visitorId: userSessionDoc.visitorId,
|
|
259
|
+
// 记录日志应该使用原始的值
|
|
260
|
+
userDid: loginUserSession.userDid,
|
|
261
|
+
appPid: loginUserSession.appPid,
|
|
262
|
+
passportId: loginUserSession.passportId,
|
|
263
|
+
extra: {
|
|
264
|
+
walletOS,
|
|
265
|
+
},
|
|
266
|
+
});
|
|
267
|
+
|
|
268
|
+
res.json({ ...result, visitorId: userSessionDoc.visitorId });
|
|
269
|
+
} else {
|
|
270
|
+
logger.warn('failed to quick-login with', {
|
|
271
|
+
teamDid,
|
|
272
|
+
id: loginUserSession.id,
|
|
273
|
+
userDid: loginUserSession.userDid,
|
|
274
|
+
appPid: loginUserSession.appPid,
|
|
275
|
+
passportId: loginUserSession.passportId,
|
|
276
|
+
});
|
|
277
|
+
res.status(401).json({ error: 'session expired' });
|
|
278
|
+
}
|
|
279
|
+
});
|
|
280
|
+
|
|
281
|
+
app.get(`${prefix}/myself`, ensureBlocklet(), checkUser, async (req, res) => {
|
|
282
|
+
const { blocklet } = req;
|
|
283
|
+
const { appPid } = blocklet;
|
|
284
|
+
const teamDid = appPid;
|
|
285
|
+
|
|
286
|
+
// 用户管理自己所有的登录会话,不限制 visitorId
|
|
287
|
+
const userSessions = await node.getUserSession({
|
|
288
|
+
teamDid,
|
|
289
|
+
appPid, // 不需要向主站查询 member 的会话列表,所以固定为 teamDid 即可
|
|
290
|
+
userDid: req.user.did,
|
|
291
|
+
});
|
|
292
|
+
|
|
293
|
+
const pendingList = userSessions.map((item) =>
|
|
294
|
+
limit(() =>
|
|
295
|
+
patchUserSessionData(item, {
|
|
296
|
+
blocklet,
|
|
297
|
+
appPid,
|
|
298
|
+
teamDid,
|
|
299
|
+
node,
|
|
300
|
+
})
|
|
301
|
+
)
|
|
302
|
+
);
|
|
303
|
+
await Promise.all(pendingList);
|
|
304
|
+
|
|
305
|
+
const result = userSessions
|
|
306
|
+
.filter((x) => {
|
|
307
|
+
return x?.user?.approved;
|
|
308
|
+
})
|
|
309
|
+
.map((x) => {
|
|
310
|
+
// NOTICE: 移除 walletDeviceId 和 walletDeviceMessageToken,避免泄露
|
|
311
|
+
return omit(x, ['extra.walletDeviceId', 'extra.walletDeviceMessageToken']);
|
|
312
|
+
});
|
|
313
|
+
|
|
314
|
+
res.json(result);
|
|
289
315
|
});
|
|
290
316
|
|
|
291
317
|
/**
|
|
292
318
|
* 获取指定用户的所有登录会话
|
|
293
|
-
*
|
|
319
|
+
* 使用的场景:
|
|
320
|
+
* 1. 用户在未登录状态下,查询当前设备符合快捷登录的会话,实现快速登录
|
|
321
|
+
* 2. 用户在登录状态下,查询当前设备可以使用快捷登录切换的账号
|
|
294
322
|
*/
|
|
295
323
|
app.get(`${prefix}`, ensureBlocklet(), async (req, res) => {
|
|
296
324
|
const { blocklet } = req;
|
|
297
|
-
const
|
|
325
|
+
const { appPid } = blocklet;
|
|
326
|
+
const teamDid = appPid;
|
|
298
327
|
const requestIp = getRequestIP(req);
|
|
299
|
-
const
|
|
328
|
+
const currentUserAgent = req.get('user-agent');
|
|
329
|
+
const visitorId = req.get('x-blocklet-visitor-id');
|
|
300
330
|
|
|
301
|
-
|
|
302
|
-
const { userDid, appPid, visitorId } = req.query;
|
|
303
|
-
|
|
304
|
-
if (!visitorId && !userDid) {
|
|
331
|
+
if (!visitorId) {
|
|
305
332
|
res.json([]);
|
|
306
333
|
return;
|
|
307
334
|
}
|
|
308
335
|
|
|
309
336
|
const userSessions = await node.getUserSession({
|
|
310
|
-
appPid,
|
|
311
337
|
teamDid,
|
|
312
|
-
userDid,
|
|
313
338
|
visitorId,
|
|
314
339
|
});
|
|
315
340
|
|
|
@@ -317,7 +342,7 @@ module.exports = {
|
|
|
317
342
|
limit(() =>
|
|
318
343
|
patchUserSessionData(item, {
|
|
319
344
|
blocklet,
|
|
320
|
-
appPid,
|
|
345
|
+
appPid: item.appPid,
|
|
321
346
|
teamDid,
|
|
322
347
|
node,
|
|
323
348
|
})
|
|
@@ -325,15 +350,15 @@ module.exports = {
|
|
|
325
350
|
);
|
|
326
351
|
await Promise.all(pendingList);
|
|
327
352
|
|
|
328
|
-
// NOTICE: 移除 walletDeviceId 和 walletDeviceMessageToken,避免泄露
|
|
329
353
|
const result = userSessions
|
|
330
354
|
.filter((x) => {
|
|
331
|
-
if (x.lastLoginIp !== requestIp || x.ua !==
|
|
355
|
+
if (x.lastLoginIp !== requestIp || x.ua !== currentUserAgent || x.status === 'expired') {
|
|
332
356
|
return false;
|
|
333
357
|
}
|
|
334
358
|
return x?.user?.approved;
|
|
335
359
|
})
|
|
336
360
|
.map((x) => {
|
|
361
|
+
// NOTICE: 移除 walletDeviceId 和 walletDeviceMessageToken,避免泄露
|
|
337
362
|
return omit(x, ['extra.walletDeviceId', 'extra.walletDeviceMessageToken']);
|
|
338
363
|
});
|
|
339
364
|
|