@abtnode/blocklet-services 1.16.32-beta-4d47ae7f → 1.16.32-beta-0593a408
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/index.js +9 -8
- package/api/libs/auth/index.js +2 -0
- package/api/libs/auth/utils.js +4 -1
- package/api/libs/connect/session.js +86 -97
- package/api/libs/connect/v1.js +2 -10
- package/api/libs/email.js +1 -1
- package/api/libs/jwt.js +17 -3
- package/api/libs/kyc.js +213 -0
- package/api/routes/federated.js +37 -4
- package/api/routes/oauth.js +65 -7
- package/api/routes/openapi.js +12 -21
- package/api/routes/opencomponent.js +12 -19
- package/api/routes/openembed.js +15 -26
- package/api/routes/user-session.js +2 -0
- package/api/routes/user.js +17 -2
- package/api/services/analytics/index.js +21 -24
- package/api/services/auth/connect/invite.js +38 -24
- package/api/services/auth/connect/issue-kyc.js +58 -0
- package/api/services/auth/connect/login.js +1 -0
- package/api/services/auth/connect/update-kyc.js +82 -0
- package/api/services/auth/index.js +34 -10
- package/api/services/auth/passport.js +11 -14
- package/api/services/auth/session.js +196 -197
- package/api/services/kyc/index.js +92 -0
- package/api/services/notification/index.js +6 -16
- package/api/services/relay/index.js +3 -7
- package/api/services/studio/index.js +62 -65
- package/api/socket/channel/did.js +1 -0
- package/api/util/get-static-service-config.js +2 -10
- package/dist/assets/{Add-D8_0U-mi.js → Add-BXK5RFEZ.js} +1 -1
- package/dist/assets/Alert-CeGhMuEg.js +1 -0
- package/dist/assets/{ArrowDropDown-exkF-BIK.js → ArrowDropDown-JIsmOdUp.js} +1 -1
- package/dist/assets/Avatar-DlL4WPrD.js +1 -0
- package/dist/assets/{ButtonGroup-CTrZ2Hyv.js → ButtonGroup-ailEu1Nr.js} +1 -1
- package/dist/assets/{CheckCircle-BNxyw6NJ.js → CheckCircle-CEIChsEH.js} +1 -1
- package/dist/assets/ChevronLeft-D_bQ82yy.js +1 -0
- package/dist/assets/{ChevronRight-DBpo88DV.js → ChevronRight-BGd4BknI.js} +1 -1
- package/dist/assets/{Close-DgxsFA7q.js → Close-uLBCA-jx.js} +1 -1
- package/dist/assets/{CloseOutlined-CN4iKY7n.js → CloseOutlined-IVnREWlC.js} +1 -1
- package/dist/assets/{Delete-BaSq9RZZ.js → Delete-BVwa0m1R.js} +1 -1
- package/dist/assets/{DeleteOutline-Du2BPdlg.js → DeleteOutline-CZQhsml4.js} +1 -1
- package/dist/assets/DialogContentText-ClisAi23.js +1 -0
- package/dist/assets/{Done-BG-Fw8ts.js → Done-Dsagjn-5.js} +1 -1
- package/dist/assets/{Download-C1y29u9K.js → Download-BONj8GVi.js} +1 -1
- package/dist/assets/{Edit-u2-N8rQN.js → Edit-uwWLILxD.js} +1 -1
- package/dist/assets/{EditIcon-B2Y7T-CN.js → EditIcon-Ccz9ZvCO.js} +1 -1
- package/dist/assets/{Error-B1K0WhCp.js → Error-Cpv-DWNH.js} +1 -1
- package/dist/assets/{ExpandMore-DBQIHjkB.js → ExpandMore-DUJJgQvW.js} +1 -1
- package/dist/assets/FormControl-DFtCJG5u.js +1 -0
- package/dist/assets/FormControlLabel-DXsQRQXS.js +1 -0
- package/dist/assets/FormGroup-BYqGm4p-.js +1 -0
- package/dist/assets/{Google-CvB2nYH_.js → Google-_v-FGHrH.js} +1 -1
- package/dist/assets/{Hidden-DJwWGZh0.js → Hidden-qI_JwCnJ.js} +1 -1
- package/dist/assets/{InfoOutlined-BIY-Lnxg.js → InfoOutlined-ph3gfjxo.js} +1 -1
- package/dist/assets/{InputAdornment-VVruavKc.js → InputAdornment-ooDD0p7-.js} +1 -1
- package/dist/assets/{InputLabel-3M9sMlBq.js → InputLabel-BvnZs665.js} +1 -1
- package/dist/assets/{LastPage-CBInTPpp.js → LastPage-Cyi1MuLL.js} +1 -1
- package/dist/assets/{Launch-Dhq-grBI.js → Launch-DuItzynA.js} +1 -1
- package/dist/assets/{LaunchOutlined-DnkKRXxH.js → LaunchOutlined-D-2u70Um.js} +1 -1
- package/dist/assets/{Link-Cpnh7s1v.js → Link-Bi0x7esG.js} +1 -1
- package/dist/assets/{ListItemText-CHjUage1.js → ListItemText-5Rgq6wEi.js} +1 -1
- package/dist/assets/{LoadingButton-C47nsxMx.js → LoadingButton-D5Z3wmwU.js} +1 -1
- package/dist/assets/{LockIcon-CoUaWmH-.js → LockIcon-m3nszp09.js} +1 -1
- package/dist/assets/{Loop-CbcENVkw.js → Loop-DxSgdtYO.js} +1 -1
- package/dist/assets/{MoreHoriz-B4gnOmnB.js → MoreHoriz-BhT61kh5.js} +1 -1
- package/dist/assets/{MoreVert-CBWkVJTE.js → MoreVert-BZrKRQjN.js} +1 -1
- package/dist/assets/{OpenInNew-svkkbJCn.js → OpenInNew-BmjNdWrg.js} +1 -1
- package/dist/assets/{Pagination-BBwBFjSJ.js → Pagination-BuAgd0Fq.js} +2 -2
- package/dist/assets/{PlayArrow-D-mvqfoj.js → PlayArrow-duerFb9i.js} +1 -1
- package/dist/assets/{QuestionMarkCircle-Duxt-AlB.js → QuestionMarkCircle-e6Dqgeid.js} +1 -1
- package/dist/assets/{RadioGroup-C4DI71vM.js → RadioGroup-hK79XBIl.js} +1 -1
- package/dist/assets/{Search-BOxcXluh.js → Search-BMPJQuLV.js} +1 -1
- package/dist/assets/{Select-drnrjZt8.js → Select-BeArBHJP.js} +2 -2
- package/dist/assets/{ServerLogo-CxVp5JLf.js → ServerLogo-BNlEHeUQ.js} +1 -1
- package/dist/assets/{Skeleton-YurB3EC5.js → Skeleton-D5U61zVB.js} +4 -4
- package/dist/assets/{Slider-BX1l_Lvj.js → Slider-DTLSNhz0.js} +1 -1
- package/dist/assets/Stack-CZh-rd3Z.js +1 -0
- package/dist/assets/{Stepper-UV_DHoEg.js → Stepper-DRS0AaL5.js} +1 -1
- package/dist/assets/TextField-qwbmqJ_2.js +1 -0
- package/dist/assets/Toolbar-vbF-NV4R.js +1 -0
- package/dist/assets/ViewColumn-C39IjII_.js +1 -0
- package/dist/assets/{ViewList-Bwkry3LO.js → ViewList-D9Rx7CG7.js} +1 -1
- package/dist/assets/access-control-CZ2vCfvl.js +13 -0
- package/dist/assets/{actions-5mXSkQB4.js → actions-bp0tIFPr.js} +1 -1
- package/dist/assets/{add-component-core-DFH5qH7x.js → add-component-core-C1Hjv9Mu.js} +61 -61
- package/dist/assets/add-resource-ClftlsDn.js +1 -0
- package/dist/assets/{addon-CUxwPHa_.js → addon-CR-5t9SG.js} +1 -1
- package/dist/assets/{analytics-B29460Yu.js → analytics-DtV5hN-G.js} +7 -7
- package/dist/assets/api-BdPs8cnO.js +1 -0
- package/dist/assets/ar-BywPGmOa.js +1 -0
- package/dist/assets/ar-cd9W8CrI.js +1 -0
- package/dist/assets/audit-logs-CLta2fsb.js +58 -0
- package/dist/assets/{button-BqgSoT0h.js → button-C_Ohwi26.js} +1 -1
- package/dist/assets/{click-to-copy-CM2U6JEg.js → click-to-copy-DdG-v5Xf.js} +1 -1
- package/dist/assets/{complete-DaiPBjLS.js → complete-d1ZMK4NF.js} +1 -1
- package/dist/assets/component-C3cEDupm.js +768 -0
- package/dist/assets/{config-CxG4Kz4G.js → config-CoCmaQP0.js} +2 -2
- package/dist/assets/{config-BygYwcXq.js → config-Dx0nfjiu.js} +1 -1
- package/dist/assets/{config-navigation-Rsc7sQGs.js → config-navigation-WnNuhnxu.js} +2 -2
- package/dist/assets/confirm-BY-9Ale6.js +7 -0
- package/dist/assets/{connect-26mFy5d9.js → connect-DDUiaDOH.js} +1 -1
- package/dist/assets/{connect-B87FT6ev.js → connect-eNCvhZ4O.js} +1 -1
- package/dist/assets/connect-to-CTihUmuN.js +54 -0
- package/dist/assets/{content-layout-B7X0Mv3n.js → content-layout-DYHA2DoT.js} +1 -1
- package/dist/assets/{dashboard-BrV_SESr.js → dashboard-C8VgUavf.js} +4 -4
- package/dist/assets/de-DS4XAN75.js +1 -0
- package/dist/assets/{de-9vHBMa7b.js → de-qs3PjT55.js} +1 -1
- package/dist/assets/{did-address-BWnma-3-.js → did-address-Bye61gv9.js} +1 -1
- package/dist/assets/domain-JYDawt5A.js +9 -0
- package/dist/assets/{domain-list-wgNQeEgv.js → domain-list-1LRFMuDN.js} +2 -2
- package/dist/assets/email-THIe3MUl.js +9 -0
- package/dist/assets/es-DXb9xB6c.js +1 -0
- package/dist/assets/es-XT3Dd0hc.js +1 -0
- package/dist/assets/{exchange-passport-BZ8Q-G3h.js → exchange-passport-CvhlZqQF.js} +1 -1
- package/dist/assets/{fallback-C5E1lZAR.js → fallback-0bWgPkSN.js} +1 -1
- package/dist/assets/format-error-BOfFwKPG.js +2 -0
- package/dist/assets/fr-C5TQA9s1.js +1 -0
- package/dist/assets/{fr-C5fh5fdm.js → fr-CMgZc3LR.js} +1 -1
- package/dist/assets/{fuel-XF4sXoDA.js → fuel-CfBzTTU6.js} +1 -1
- package/dist/assets/{fullpage-BOyZgu9A.js → fullpage-ChxIZLoV.js} +1 -1
- package/dist/assets/hi-C_Mli2FO.js +1 -0
- package/dist/assets/hi-Ch52Lky6.js +1 -0
- package/dist/assets/{home-Dajv5NTd.js → home-DNnK3U-z.js} +1 -1
- package/dist/assets/id-BkncNzMh.js +1 -0
- package/dist/assets/id-_x67Rh2B.js +1 -0
- package/dist/assets/{iframe-CmugPIuF.js → iframe-BuZAORHf.js} +1 -1
- package/dist/assets/{index-Cixwi4BX.js → index--PkoOt7s.js} +1 -1
- package/dist/assets/{index-Dcphtm5y.js → index--Zmo4lNz.js} +1 -1
- package/dist/assets/{index-BiafpQ0u.js → index-52sgx-HD.js} +40 -40
- package/dist/assets/{index-BtQK2llU.js → index-B-Fz2GNJ.js} +2 -2
- package/dist/assets/{index-D0ZBFe_v.js → index-BElhBMsQ.js} +12 -12
- package/dist/assets/{index-BtQOF6n3.js → index-BM94YLjm.js} +1 -1
- package/dist/assets/{index-BrcKk7u6.js → index-BML-rKDv.js} +1 -1
- package/dist/assets/index-BVQpPnuL.js +262 -0
- package/dist/assets/{index-CTFB4nHV.js → index-Be2wLDD2.js} +3 -3
- package/dist/assets/{index-BisUmH-h.js → index-BlaHh4Bq.js} +1 -1
- package/dist/assets/{index-DHNVLiI8.js → index-BmJ_HmLz.js} +1 -1
- package/dist/assets/{index-BvZ1bsPZ.js → index-BmTem0RD.js} +5 -5
- package/dist/assets/{index-DPyKucXe.js → index-BqbUZVee.js} +1 -1
- package/dist/assets/{index-p81jbN_h.js → index-C0fRQdXZ.js} +1 -1
- package/dist/assets/index-C2qWDMpv.js +126 -0
- package/dist/assets/{index-TlMkikTm.js → index-C5cJ2AYH.js} +1 -1
- package/dist/assets/{index-CFmNTsQh.js → index-CMg55b21.js} +1 -1
- package/dist/assets/{index-UKHQeYs5.js → index-CeNlYeEB.js} +1 -1
- package/dist/assets/{index-D5lkEFWM.js → index-CmriykVM.js} +1 -1
- package/dist/assets/{index-Ca5y7O4k.js → index-CsqAQtnh.js} +12 -12
- package/dist/assets/{index-C2sin8wt.js → index-CuDHF3xN.js} +1 -1
- package/dist/assets/index-D0TT-qXy.js +329 -0
- package/dist/assets/index-D3wlHMtS.js +4 -0
- package/dist/assets/{index-BK4259Qj.js → index-DCx94jgM.js} +1 -1
- package/dist/assets/{index-DCkU-F0r.js → index-DCyB2kx5.js} +1 -1
- package/dist/assets/{index-CrurRDDC.js → index-DMGDz3J5.js} +1 -1
- package/dist/assets/{index-C0qYe9TG.js → index-Dg3ZdGFC.js} +1 -1
- package/dist/assets/index-Dn3O_6kH.js +68 -0
- package/dist/assets/{index-BRJLJSjg.js → index-DnNh-evc.js} +2 -2
- package/dist/assets/{index-hv_yaUi2.js → index-DyEaiz-D.js} +4 -4
- package/dist/assets/{index-DfZjT3WA.js → index-fpoxcuML.js} +212 -121
- package/dist/assets/{index.es-w-0rtBPs.js → index.es-BXRXZClL.js} +1 -1
- package/dist/assets/index.esm-BPFo6X8Z.js +1 -0
- package/dist/assets/{invitation-KAlNPJe6.js → invitation-D1Wp3bRP.js} +1 -1
- package/dist/assets/{invite-C_RF0Rm2.js → invite-YMYQJqN-.js} +1 -1
- package/dist/assets/{issue-passport-DM7CKvcB.js → issue-passport-BGReKwsC.js} +1 -1
- package/dist/assets/item-BXQ3arsv.js +1 -0
- package/dist/assets/ja-BemsOTjE.js +1 -0
- package/dist/assets/ja-j9_7sWtG.js +1 -0
- package/dist/assets/{jss-plugin-props-sort.esm-BzROyw1n.js → jss-plugin-props-sort.esm-C9YatkDP.js} +1 -1
- package/dist/assets/ko-BcDVaiV3.js +1 -0
- package/dist/assets/ko-CqkhhVdi.js +1 -0
- package/dist/assets/{launch-result-message-CIfX9Pg1.js → launch-result-message-BerDxO98.js} +1 -1
- package/dist/assets/{layout-Bb2LZLxa.js → layout-D4J5Y79b.js} +2 -2
- package/dist/assets/{list-header-BDhQIu5L.js → list-header-Be3w9ZWF.js} +1 -1
- package/dist/assets/localization-C6Hais-M.js +1 -0
- package/dist/assets/{log-o0iKO5dx.js → log-CQOOprUt.js} +1 -1
- package/dist/assets/{login-B9UvusG-.js → login-BE50q_9g.js} +1 -1
- package/dist/assets/{login-oauth-callback-cZ3oa4a_.js → login-oauth-callback-BPCfA25m.js} +1 -1
- package/dist/assets/logo-uploader-BQq1Bvz4.js +122 -0
- package/dist/assets/lost-passport-CqiiJzdw.js +168 -0
- package/dist/assets/{lottie-DsjCdNh-.js → lottie-8CewroZu.js} +1 -1
- package/dist/assets/notifications-hFiNE8Kp.js +62 -0
- package/dist/assets/{open-window-B5RcEIrm.js → open-window-DZuQsoOo.js} +1 -1
- package/dist/assets/overview-eXanKabi.js +12 -0
- package/dist/assets/{page-header-BvuGyCDw.js → page-header-D6emPvgS.js} +1 -1
- package/dist/assets/{permission-BuA9Zt4q.js → permission-CV9At0xV.js} +1 -1
- package/dist/assets/{preferences-BzcjmMUC.js → preferences-GIta-dYt.js} +1 -1
- package/dist/assets/pt-DZmF_qcN.js +1 -0
- package/dist/assets/pt-NjuvVfFo.js +1 -0
- package/dist/assets/publish-resource-E3qK4Lfb.js +1 -0
- package/dist/assets/react-BnX7dsCg.js +57 -0
- package/dist/assets/{redux-BDPBPXLM.js → redux-B4e5IkPl.js} +1 -1
- package/dist/assets/resource-dialog-DSlBHCVu.js +57 -0
- package/dist/assets/ru-BFNdjdAO.js +1 -0
- package/dist/assets/ru-BsFEd75u.js +1 -0
- package/dist/assets/sdk-C5Eo3Lk8.js +1 -0
- package/dist/assets/{selector-DktPytoX.js → selector-fvBTD9SB.js} +3 -3
- package/dist/assets/session-BHe45BP1.js +1 -0
- package/dist/assets/setup-p-Q92t4g.js +19 -0
- package/dist/assets/{shorten-label-3owfLRzi.js → shorten-label-BOSkgF_N.js} +1 -1
- package/dist/assets/{slicedToArray-CQG0j1sa.js → slicedToArray-CbPRhqfX.js} +2 -2
- package/dist/assets/{spaces-DDj9ynWl.js → spaces-Dv5sTFBl.js} +1 -1
- package/dist/assets/{start-DCKDZC67.js → start-D4PsKATv.js} +1 -1
- package/dist/assets/{step-actions-CoJc8417.js → step-actions-DvJ3jG2s.js} +1 -1
- package/dist/assets/{studio-B_0UB40R.js → studio-kDlNaA-v.js} +1 -1
- package/dist/assets/{switch-control-Bun_5Zkk.js → switch-control-CCflGHVj.js} +1 -1
- package/dist/assets/th-B61cOYck.js +1 -0
- package/dist/assets/th-C7TEM40B.js +1 -0
- package/dist/assets/{toUpper-Bf_TQKK7.js → toUpper-DxMwQ-7A.js} +1 -1
- package/dist/assets/{transfer-C7Cxyvnx.js → transfer-Cdc4gT4M.js} +1 -1
- package/dist/assets/{uniqBy-BqI7ffNX.js → uniqBy-C7E-hw0R.js} +1 -1
- package/dist/assets/{unsubscribe-B-iaO9gM.js → unsubscribe-CZRtq6xH.js} +1 -1
- package/dist/assets/{url-join-BoNn2Qh7.js → url-join-Cc5BAZ2e.js} +1 -1
- package/dist/assets/{use-blocklet-info-for-connect-did-spaces-CfK0RcTD.js → use-blocklet-info-for-connect-did-spaces-Dro42um_.js} +1 -1
- package/dist/assets/{use-mobile-C19pzcVe.js → use-mobile-BziK5djw.js} +1 -1
- package/dist/assets/{useAsync-Ca_M5Jhn.js → useAsync-fA1HnQaq.js} +1 -1
- package/dist/assets/{useFormControl-Cs3LGXJe.js → useFormControl-CQ_7pr9i.js} +1 -1
- package/dist/assets/{useLocalStorage-3-rj5S6B.js → useLocalStorage-CpPhACy5.js} +1 -1
- package/dist/assets/{useSetState-BTR-3GfC.js → useSetState-5snwvlLZ.js} +1 -1
- package/dist/assets/useSlot-GRhp-924.js +1 -0
- package/dist/assets/{useSlotProps-CCXsWmb3.js → useSlotProps-CPXTP7XP.js} +1 -1
- package/dist/assets/{useThemeProps-BjkDmxHT.js → useThemeProps-BnBMhVDF.js} +1 -1
- package/dist/assets/user-center-CuPwYsI_.js +1 -0
- package/dist/assets/user-sessions-lG0a9kqK.js +1 -0
- package/dist/assets/{util-DBNeRhAr.js → util-BBmowc-s.js} +1 -1
- package/dist/assets/vi-B884zOLu.js +1 -0
- package/dist/assets/vi-C1X-AoyG.js +1 -0
- package/dist/assets/wrap-locale-D-ibzwQK.js +1 -0
- package/dist/assets/zh-DjEnl7LY.js +1 -0
- package/dist/assets/zh-kNAPjCk5.js +2 -0
- package/dist/assets/zh-tw-Bn1Pkz9A.js +1 -0
- package/dist/assets/zh-tw-DSZuinRu.js +1 -0
- package/dist/index.html +1 -1
- package/dist/service-worker.js +1 -1
- package/package.json +26 -25
- package/api/util/constants.js +0 -10
- package/dist/assets/AddBox-BpwHbwbG.js +0 -1
- package/dist/assets/Alert-Dlco0B3L.js +0 -1
- package/dist/assets/Avatar-B1SFM1MR.js +0 -1
- package/dist/assets/FilterList-DumRQ8ls.js +0 -26
- package/dist/assets/FormControl-CeSJJZgZ.js +0 -1
- package/dist/assets/FormControlLabel-CpH9LTeH.js +0 -1
- package/dist/assets/FormGroup-B0Xdxgiy.js +0 -1
- package/dist/assets/TextField-D_Jtjg13.js +0 -1
- package/dist/assets/Toolbar-D7_EWzTj.js +0 -1
- package/dist/assets/access-control-YUBGali8.js +0 -13
- package/dist/assets/add-resource-BJ9u32jP.js +0 -1
- package/dist/assets/api-DbvHYaVa.js +0 -1
- package/dist/assets/ar-BSACs5SN.js +0 -1
- package/dist/assets/ar-lTVP4T3d.js +0 -1
- package/dist/assets/audit-logs-C1AOwGce.js +0 -58
- package/dist/assets/component-npmbPVSM.js +0 -464
- package/dist/assets/confirm-3b8GTIgU.js +0 -7
- package/dist/assets/connect-to-B0Td9yUD.js +0 -54
- package/dist/assets/de-B3TxaybY.js +0 -1
- package/dist/assets/domain-CkCbH8sj.js +0 -9
- package/dist/assets/es-BY0KMFme.js +0 -1
- package/dist/assets/es-Bk9E9Gbf.js +0 -1
- package/dist/assets/format-error-BVI56bJg.js +0 -2
- package/dist/assets/fr-BiVZLeXU.js +0 -1
- package/dist/assets/hi-B_LrkIOS.js +0 -1
- package/dist/assets/hi-HiGtGtUs.js +0 -1
- package/dist/assets/id-CirrqXGd.js +0 -1
- package/dist/assets/id-jBXPD1he.js +0 -1
- package/dist/assets/index-2xySyQ5i.js +0 -262
- package/dist/assets/index-B0NvcpjT.js +0 -1
- package/dist/assets/index-B7Un-ZeO.js +0 -68
- package/dist/assets/index-BP53WpUP.js +0 -4
- package/dist/assets/index-C1Puqx4M.js +0 -304
- package/dist/assets/index-CLQi4cVY.js +0 -126
- package/dist/assets/index.esm-CptJw3C8.js +0 -1
- package/dist/assets/item-DIkrlQMP.js +0 -1
- package/dist/assets/ja-BOs7uPqI.js +0 -1
- package/dist/assets/ja-DKiHQ6DE.js +0 -1
- package/dist/assets/ko-BBYyf1yM.js +0 -1
- package/dist/assets/ko-D1G4UvNg.js +0 -1
- package/dist/assets/localization-V0WRiXKC.js +0 -1
- package/dist/assets/logo-uploader-D4yqBa_O.js +0 -122
- package/dist/assets/lost-passport-soFqeEb7.js +0 -168
- package/dist/assets/notifications-B9Mu8Fxb.js +0 -62
- package/dist/assets/overview-CFbnZdV0.js +0 -12
- package/dist/assets/pt-CcFeyma6.js +0 -1
- package/dist/assets/pt-DI2MIkSi.js +0 -1
- package/dist/assets/publish-resource-DwhFCZXw.js +0 -1
- package/dist/assets/react-CwUjkFxY.js +0 -57
- package/dist/assets/resource-dialog-BBzXGjTp.js +0 -57
- package/dist/assets/ru-B2L3CRQ4.js +0 -1
- package/dist/assets/ru-OymXgLUI.js +0 -1
- package/dist/assets/sdk-CI7TJ_xu.js +0 -1
- package/dist/assets/session-Cw-dytKR.js +0 -1
- package/dist/assets/setup-DRfpHXNv.js +0 -19
- package/dist/assets/th-CZbdb5PZ.js +0 -1
- package/dist/assets/th-CfNBHHtU.js +0 -1
- package/dist/assets/useSlot-C1f6ZTLt.js +0 -1
- package/dist/assets/user-center-BN2FDsvO.js +0 -1
- package/dist/assets/user-sessions-BIEmgTqD.js +0 -1
- package/dist/assets/vi-DbzhnofW.js +0 -1
- package/dist/assets/vi-DhjQx2Z1.js +0 -1
- package/dist/assets/wrap-locale-D7L9anic.js +0 -1
- package/dist/assets/zh-FO0C29Rb.js +0 -1
- package/dist/assets/zh-jGK5FFL0.js +0 -2
- package/dist/assets/zh-tw-DnmwTx49.js +0 -1
- package/dist/assets/zh-tw-cyWwf75a.js +0 -1
package/api/routes/openembed.js
CHANGED
|
@@ -3,13 +3,13 @@ const { BLOCKLET_OPENEMBED_PREFIX } = require('@blocklet/constant');
|
|
|
3
3
|
const pMap = require('p-map');
|
|
4
4
|
const YAML = require('yaml');
|
|
5
5
|
const { joinURL, withQuery, withLeadingSlash, withoutTrailingSlash } = require('ufo');
|
|
6
|
-
const {
|
|
7
|
-
const { types } = require('@ocap/mcrypto');
|
|
6
|
+
const { types, Hasher } = require('@ocap/mcrypto');
|
|
8
7
|
const { hasStartEngine } = require('@blocklet/meta/lib/util');
|
|
8
|
+
const { fromPublicKey } = require('@ocap/wallet');
|
|
9
9
|
|
|
10
10
|
const { api } = require('../libs/api');
|
|
11
11
|
|
|
12
|
-
async function getComponentOpenEmbedData(component
|
|
12
|
+
async function getComponentOpenEmbedData(component) {
|
|
13
13
|
const port = component?.ports?.BLOCKLET_PORT || component?.environmentObj?.BLOCKLET_PORT;
|
|
14
14
|
// NOTICE: 此处更倾向于使用本地地址,这也能达到更快的速度
|
|
15
15
|
const url = joinURL(`http://127.0.0.1:${port}`, BLOCKLET_OPENEMBED_PREFIX);
|
|
@@ -40,7 +40,10 @@ async function getComponentOpenEmbedData(component, { generateDid }) {
|
|
|
40
40
|
const mergedPathname = joinURL(mountPoint, pathname);
|
|
41
41
|
const pathItem = result.embeds[pathname];
|
|
42
42
|
pathItem.tags = [title];
|
|
43
|
-
const
|
|
43
|
+
const walletPk = Hasher.SHA3.hash256(JSON.stringify(['openembed', did, pathname]));
|
|
44
|
+
const itemWallet = fromPublicKey(walletPk, {
|
|
45
|
+
role: types.RoleType.ROLE_ANY,
|
|
46
|
+
});
|
|
44
47
|
pathItem['x-meta'] = {
|
|
45
48
|
id: itemWallet.address,
|
|
46
49
|
did,
|
|
@@ -103,7 +106,7 @@ async function mergeOpenEmbed(dataList, { blocklet, node }) {
|
|
|
103
106
|
};
|
|
104
107
|
}
|
|
105
108
|
|
|
106
|
-
async function generateOpenEmbedData({ blocklet, did,
|
|
109
|
+
async function generateOpenEmbedData({ blocklet, did, node }) {
|
|
107
110
|
const blockletCompontList = blocklet?.children || [];
|
|
108
111
|
const appUrl = blocklet?.environmentObj?.BLOCKLET_APP_URL;
|
|
109
112
|
const healthCheckUrl = joinURL(appUrl, '/.well-known/service/health');
|
|
@@ -116,20 +119,16 @@ async function generateOpenEmbedData({ blocklet, did, generateDid, node }) {
|
|
|
116
119
|
if (did) {
|
|
117
120
|
const findComponent = runningCompontList.find((component) => component?.meta?.did === did);
|
|
118
121
|
if (findComponent) {
|
|
119
|
-
const result = getComponentOpenEmbedData(findComponent, { baseUrl: appUrl
|
|
122
|
+
const result = getComponentOpenEmbedData(findComponent, { baseUrl: appUrl });
|
|
120
123
|
return result;
|
|
121
124
|
}
|
|
122
125
|
return null;
|
|
123
126
|
}
|
|
124
127
|
// 多个 component 组合
|
|
125
|
-
const componentListData = await pMap(
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
concurrency: 3,
|
|
130
|
-
stopOnError: false,
|
|
131
|
-
}
|
|
132
|
-
);
|
|
128
|
+
const componentListData = await pMap(runningCompontList, (x) => getComponentOpenEmbedData(x, { baseUrl: appUrl }), {
|
|
129
|
+
concurrency: 3,
|
|
130
|
+
stopOnError: false,
|
|
131
|
+
});
|
|
133
132
|
const result = await mergeOpenEmbed(componentListData, { blocklet, node });
|
|
134
133
|
return result;
|
|
135
134
|
}
|
|
@@ -140,12 +139,7 @@ module.exports = {
|
|
|
140
139
|
app.get(`${WELLKNOWN_SERVICE_PATH_PREFIX}/openembed.yaml`, async (req, res) => {
|
|
141
140
|
const { did } = req.query;
|
|
142
141
|
const blocklet = await req.getBlocklet({ useCache: false });
|
|
143
|
-
const
|
|
144
|
-
const rootSk = permanentWallet.secretKey;
|
|
145
|
-
function generateDid(didPath) {
|
|
146
|
-
return fromAppDid(didPath, rootSk, types.RoleType.ROLE_ASSET);
|
|
147
|
-
}
|
|
148
|
-
const data = await generateOpenEmbedData({ blocklet, did, generateDid, node });
|
|
142
|
+
const data = await generateOpenEmbedData({ blocklet, did, node });
|
|
149
143
|
const ymlData = YAML.stringify(data);
|
|
150
144
|
res.setHeader('Content-Disposition', 'attachment; filename="openembed.yml"');
|
|
151
145
|
res.status(200).send(ymlData);
|
|
@@ -154,13 +148,8 @@ module.exports = {
|
|
|
154
148
|
app.get(`${WELLKNOWN_SERVICE_PATH_PREFIX}/openembed.json`, async (req, res) => {
|
|
155
149
|
const { did } = req.query;
|
|
156
150
|
const blocklet = await req.getBlocklet({ useCache: false });
|
|
157
|
-
const { permanentWallet } = await req.getBlockletInfo();
|
|
158
|
-
const rootSk = permanentWallet.secretKey;
|
|
159
|
-
function generateDid(didPath) {
|
|
160
|
-
return fromAppDid(didPath, rootSk, types.RoleType.ROLE_ASSET);
|
|
161
|
-
}
|
|
162
151
|
|
|
163
|
-
const data = await generateOpenEmbedData({ blocklet, did,
|
|
152
|
+
const data = await generateOpenEmbedData({ blocklet, did, node });
|
|
164
153
|
res.status(200).json(data);
|
|
165
154
|
});
|
|
166
155
|
},
|
package/api/routes/user.js
CHANGED
|
@@ -295,7 +295,6 @@ async function login(req, node, options) {
|
|
|
295
295
|
);
|
|
296
296
|
|
|
297
297
|
const { createSessionToken } = initJwt(node, options);
|
|
298
|
-
|
|
299
298
|
const createToken = createTokenFn(createSessionToken);
|
|
300
299
|
const sessionConfig = blocklet.settings?.session || {};
|
|
301
300
|
const { sessionToken, refreshToken } = createToken(
|
|
@@ -307,6 +306,8 @@ async function login(req, node, options) {
|
|
|
307
306
|
fullName: userDoc.fullName,
|
|
308
307
|
provider,
|
|
309
308
|
walletOS: 'api',
|
|
309
|
+
emailVerified: !!userDoc.emailVerified,
|
|
310
|
+
phoneVerified: !!userDoc.phoneVerified,
|
|
310
311
|
},
|
|
311
312
|
{ ...sessionConfig, didConnectVersion: getDidConnectVersion(req) }
|
|
312
313
|
);
|
|
@@ -526,6 +527,8 @@ module.exports = {
|
|
|
526
527
|
fullName: loggedInUser.fullName,
|
|
527
528
|
provider: 'wallet',
|
|
528
529
|
walletOS,
|
|
530
|
+
emailVerified: !!loggedInUser.emailVerified,
|
|
531
|
+
phoneVerified: !!loggedInUser.phoneVerified,
|
|
529
532
|
},
|
|
530
533
|
{ ...sessionConfig, didConnectVersion: getDidConnectVersion(req) }
|
|
531
534
|
);
|
|
@@ -801,7 +804,19 @@ module.exports = {
|
|
|
801
804
|
}
|
|
802
805
|
|
|
803
806
|
res.json(
|
|
804
|
-
pick(user || {}, [
|
|
807
|
+
pick(user || {}, [
|
|
808
|
+
'did',
|
|
809
|
+
'locale',
|
|
810
|
+
'avatar',
|
|
811
|
+
'fullName',
|
|
812
|
+
'email',
|
|
813
|
+
'phone',
|
|
814
|
+
'url',
|
|
815
|
+
'inviter',
|
|
816
|
+
'generation',
|
|
817
|
+
'emailVerified',
|
|
818
|
+
'phoneVerified',
|
|
819
|
+
])
|
|
805
820
|
);
|
|
806
821
|
});
|
|
807
822
|
|
|
@@ -1,38 +1,35 @@
|
|
|
1
1
|
/* eslint-disable consistent-return */
|
|
2
2
|
const fs = require('fs-extra');
|
|
3
3
|
const { getHtmlResultPath } = require('@abtnode/analytics');
|
|
4
|
-
|
|
5
|
-
const { PREFIXES } = require('../../util/constants');
|
|
4
|
+
const { WELLKNOWN_SERVICE_PATH_PREFIX } = require('@abtnode/constant');
|
|
6
5
|
|
|
7
6
|
module.exports = {
|
|
8
7
|
init({ app, node }) {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
}
|
|
8
|
+
app.get(`${WELLKNOWN_SERVICE_PATH_PREFIX}/api/analytics/traffic`, async (req, res) => {
|
|
9
|
+
if (!req.user) {
|
|
10
|
+
return res.status(403).send('You are not allowed to view this page');
|
|
11
|
+
}
|
|
14
12
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
13
|
+
const blocklet = await req.getBlocklet();
|
|
14
|
+
if (!blocklet) {
|
|
15
|
+
return res.status(400).send('Blocklet not found');
|
|
16
|
+
}
|
|
19
17
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
18
|
+
if (blocklet.mode !== 'production') {
|
|
19
|
+
return res.status(400).send('Traffic analytics are only available for production blocklets');
|
|
20
|
+
}
|
|
23
21
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
22
|
+
const { date } = req.query;
|
|
23
|
+
if (!date) {
|
|
24
|
+
return res.status(400).send('Date is required to load traffic analytics');
|
|
25
|
+
}
|
|
28
26
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
27
|
+
const filePath = getHtmlResultPath(node.dataDirs.data, date, blocklet.appPid);
|
|
28
|
+
if (fs.existsSync(filePath) === false) {
|
|
29
|
+
return res.status(400).send('Traffic insight for selected date not found');
|
|
30
|
+
}
|
|
33
31
|
|
|
34
|
-
|
|
35
|
-
});
|
|
32
|
+
return res.sendFile(filePath);
|
|
36
33
|
});
|
|
37
34
|
},
|
|
38
35
|
};
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
const get = require('lodash/get');
|
|
2
1
|
const { joinURL } = require('ufo');
|
|
3
2
|
const {
|
|
4
3
|
createInvitationRequest,
|
|
@@ -8,12 +7,15 @@ const {
|
|
|
8
7
|
beforeInvitationRequest,
|
|
9
8
|
} = require('@abtnode/auth/lib/auth');
|
|
10
9
|
const { getSourceAppPid } = require('@blocklet/sdk/lib/util/login');
|
|
11
|
-
const {
|
|
10
|
+
const { WELLKNOWN_SERVICE_PATH_PREFIX } = require('@abtnode/constant');
|
|
12
11
|
const { LOGIN_PROVIDER } = require('@blocklet/constant');
|
|
13
12
|
const getRequestIP = require('@abtnode/util/lib/get-request-ip');
|
|
14
13
|
|
|
15
14
|
const { createTokenFn, getDidConnectVersion } = require('../../../util');
|
|
16
15
|
const { getUserWithinFederated } = require('../../../util/federated');
|
|
16
|
+
const { getProfileItems, getKycClaims, verifyKycClaims } = require('../../../libs/kyc');
|
|
17
|
+
const { getTrustedIssuers } = require('../../../util/blocklet-utils');
|
|
18
|
+
const { getUser } = require('../../../libs/jwt');
|
|
17
19
|
const logger = require('../../../libs/logger')('auth');
|
|
18
20
|
|
|
19
21
|
module.exports = function createRoutes(node, authenticator, createSessionToken) {
|
|
@@ -27,37 +29,37 @@ module.exports = function createRoutes(node, authenticator, createSessionToken)
|
|
|
27
29
|
await beforeInvitationRequest({ node, teamDid, locale, inviteId });
|
|
28
30
|
},
|
|
29
31
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
32
|
+
onConnect: async ({ userDid, extraParams, request, baseUrl, didwallet }) => {
|
|
33
|
+
const { locale, inviteId } = extraParams;
|
|
34
|
+
checkWalletVersion({ didwallet, locale });
|
|
35
|
+
const nodeInfo = await request.getNodeInfo();
|
|
36
|
+
const blocklet = await request.getBlocklet();
|
|
37
|
+
const teamDid = request.get('x-blocklet-did');
|
|
33
38
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
return {
|
|
38
|
-
fields: profileFields || ['fullName', 'avatar'],
|
|
39
|
+
const claims = {
|
|
40
|
+
profile: {
|
|
41
|
+
fields: getProfileItems(blocklet.settings?.session, didwallet),
|
|
39
42
|
description: messages.description[locale],
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
signature: async ({ extraParams, context: { request, baseUrl, didwallet } }) => {
|
|
44
|
-
const { locale, inviteId } = extraParams;
|
|
45
|
-
checkWalletVersion({ didwallet, locale });
|
|
46
|
-
const nodeInfo = await request.getNodeInfo();
|
|
47
|
-
const teamDid = request.get('x-blocklet-did');
|
|
48
|
-
|
|
49
|
-
return createInvitationRequest({
|
|
43
|
+
},
|
|
44
|
+
signature: await createInvitationRequest({
|
|
50
45
|
node,
|
|
51
46
|
nodeInfo,
|
|
52
47
|
teamDid,
|
|
53
48
|
inviteId,
|
|
54
49
|
locale,
|
|
55
50
|
baseUrl,
|
|
56
|
-
})
|
|
57
|
-
}
|
|
51
|
+
}),
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
const sourceAppPid = getSourceAppPid(request);
|
|
55
|
+
const user = await getUser(node, teamDid, userDid);
|
|
56
|
+
const trustedIssuers = await getTrustedIssuers(blocklet, { sourceAppPid });
|
|
57
|
+
Object.assign(claims, getKycClaims(blocklet, user, locale, baseUrl, trustedIssuers));
|
|
58
|
+
|
|
59
|
+
return claims;
|
|
58
60
|
},
|
|
59
61
|
|
|
60
|
-
onAuth: async ({ claims, userDid, userPk, updateSession, extraParams, req, baseUrl }) => {
|
|
62
|
+
onAuth: async ({ claims, userDid, userPk, challenge, updateSession, extraParams, req, baseUrl }) => {
|
|
61
63
|
// NOTICE: 和 did-connect 相关的 visitorId 需要从 extraParams 中获取,不能从 headers 中获取
|
|
62
64
|
const { locale, inviteId, visitorId } = extraParams;
|
|
63
65
|
const sourceAppPid = getSourceAppPid(req);
|
|
@@ -68,7 +70,18 @@ module.exports = function createRoutes(node, authenticator, createSessionToken)
|
|
|
68
70
|
const statusEndpointBaseUrl = joinURL(baseUrl, WELLKNOWN_SERVICE_PATH_PREFIX);
|
|
69
71
|
const endpoint = baseUrl;
|
|
70
72
|
|
|
71
|
-
await getUserWithinFederated({ sourceAppPid, teamDid, userDid, userPk }, { node, blocklet });
|
|
73
|
+
const existUser = await getUserWithinFederated({ sourceAppPid, teamDid, userDid, userPk }, { node, blocklet });
|
|
74
|
+
|
|
75
|
+
const kycUpdates = await verifyKycClaims({
|
|
76
|
+
node,
|
|
77
|
+
blocklet,
|
|
78
|
+
teamDid,
|
|
79
|
+
claims,
|
|
80
|
+
challenge,
|
|
81
|
+
locale,
|
|
82
|
+
sourceAppPid,
|
|
83
|
+
user: existUser,
|
|
84
|
+
});
|
|
72
85
|
|
|
73
86
|
const { passport, response, role, profile, user } = await handleInvitationResponse({
|
|
74
87
|
req,
|
|
@@ -82,6 +95,7 @@ module.exports = function createRoutes(node, authenticator, createSessionToken)
|
|
|
82
95
|
claims,
|
|
83
96
|
statusEndpointBaseUrl,
|
|
84
97
|
endpoint,
|
|
98
|
+
kycUpdates,
|
|
85
99
|
});
|
|
86
100
|
|
|
87
101
|
const walletOS = req.context.didwallet.os;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
const { joinURL } = require('ufo');
|
|
2
|
+
const {
|
|
3
|
+
checkWalletVersion,
|
|
4
|
+
beforeIssueKycRequest,
|
|
5
|
+
handleIssueKycResponse,
|
|
6
|
+
messages,
|
|
7
|
+
} = require('@abtnode/auth/lib/auth');
|
|
8
|
+
const { WELLKNOWN_SERVICE_PATH_PREFIX } = require('@abtnode/constant');
|
|
9
|
+
|
|
10
|
+
module.exports = function createRoutes(node) {
|
|
11
|
+
return {
|
|
12
|
+
action: 'issue-kyc',
|
|
13
|
+
|
|
14
|
+
onStart: async ({ extraParams, req }) => {
|
|
15
|
+
const { code, locale = 'en' } = extraParams;
|
|
16
|
+
const teamDid = req.get('x-blocklet-did');
|
|
17
|
+
await beforeIssueKycRequest({ node, teamDid, code, locale });
|
|
18
|
+
},
|
|
19
|
+
|
|
20
|
+
claims: {
|
|
21
|
+
profile: ({ extraParams, context: { didwallet } }) => {
|
|
22
|
+
const { locale } = extraParams;
|
|
23
|
+
checkWalletVersion({ didwallet, locale });
|
|
24
|
+
return {
|
|
25
|
+
type: 'profile',
|
|
26
|
+
description: messages.description[locale],
|
|
27
|
+
items: ['fullName', 'avatar'],
|
|
28
|
+
};
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
|
|
32
|
+
onAuth: async ({ userDid, userPk, claims, extraParams, request, baseUrl }) => {
|
|
33
|
+
const { locale, code, updateKyc, inviter } = extraParams;
|
|
34
|
+
const nodeInfo = await node.getNodeInfo();
|
|
35
|
+
const teamDid = request.get('x-blocklet-did');
|
|
36
|
+
const statusEndpointBaseUrl = joinURL(baseUrl, WELLKNOWN_SERVICE_PATH_PREFIX);
|
|
37
|
+
const endpoint = baseUrl;
|
|
38
|
+
|
|
39
|
+
const result = await handleIssueKycResponse({
|
|
40
|
+
request,
|
|
41
|
+
node,
|
|
42
|
+
nodeInfo,
|
|
43
|
+
teamDid,
|
|
44
|
+
userDid,
|
|
45
|
+
userPk,
|
|
46
|
+
code,
|
|
47
|
+
locale,
|
|
48
|
+
claims,
|
|
49
|
+
statusEndpointBaseUrl,
|
|
50
|
+
endpoint,
|
|
51
|
+
inviter,
|
|
52
|
+
updateKyc: updateKyc === '1',
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
return result;
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
};
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
const { messages } = require('@abtnode/auth/lib/auth');
|
|
2
|
+
const { getKycClaims, verifyKycClaims, getProfileItems, isProfileClaimRequired } = require('../../../libs/kyc');
|
|
3
|
+
const { getTrustedIssuers } = require('../../../util/blocklet-utils');
|
|
4
|
+
|
|
5
|
+
// Used to update user kyc status using existing certificates
|
|
6
|
+
// eslint-disable-next-line no-unused-vars
|
|
7
|
+
module.exports = function createRoutes(node, authenticator, createSessionToken) {
|
|
8
|
+
return {
|
|
9
|
+
action: 'update-kyc',
|
|
10
|
+
|
|
11
|
+
onConnect: async ({ userDid, extraParams, request, baseUrl }) => {
|
|
12
|
+
const { locale, sourceAppPid } = extraParams;
|
|
13
|
+
const blocklet = await request.getBlocklet();
|
|
14
|
+
const user = await node.getUser({ teamDid: blocklet.appPid, user: { did: userDid } });
|
|
15
|
+
if (!user) {
|
|
16
|
+
throw new Error(messages.userNotFound[locale]);
|
|
17
|
+
}
|
|
18
|
+
if (!user.approved) {
|
|
19
|
+
throw new Error(messages.notAllowedAppUser[locale]);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const claims = {};
|
|
23
|
+
if (isProfileClaimRequired(blocklet, user)) {
|
|
24
|
+
const profileItems = getProfileItems(blocklet.settings?.session, request.context.didwallet);
|
|
25
|
+
claims.profile = {
|
|
26
|
+
type: 'profile',
|
|
27
|
+
description: messages.description[locale],
|
|
28
|
+
items: profileItems,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
const trustedIssuers = await getTrustedIssuers(blocklet, { sourceAppPid });
|
|
33
|
+
return Object.assign(claims, getKycClaims(blocklet, user, locale, baseUrl, trustedIssuers));
|
|
34
|
+
},
|
|
35
|
+
|
|
36
|
+
onAuth: async ({ userDid, claims, challenge, extraParams, request }) => {
|
|
37
|
+
const { locale, sourceAppPid } = extraParams;
|
|
38
|
+
const profile = claims.find((claim) => claim.type === 'profile');
|
|
39
|
+
const blocklet = await request.getBlocklet();
|
|
40
|
+
const user = await node.getUser({ teamDid: blocklet.appPid, user: { did: userDid } });
|
|
41
|
+
if (!user) {
|
|
42
|
+
throw new Error(messages.userNotFound[locale]);
|
|
43
|
+
}
|
|
44
|
+
if (!user.approved) {
|
|
45
|
+
throw new Error(messages.notAllowedAppUser[locale]);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
const kycUpdates = await verifyKycClaims({
|
|
49
|
+
node,
|
|
50
|
+
blocklet,
|
|
51
|
+
teamDid: blocklet.appPid,
|
|
52
|
+
claims,
|
|
53
|
+
challenge,
|
|
54
|
+
locale,
|
|
55
|
+
sourceAppPid,
|
|
56
|
+
user,
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
const profileUpdates = {};
|
|
60
|
+
if (profile) {
|
|
61
|
+
if (profile.email) {
|
|
62
|
+
profileUpdates.email = profile.email;
|
|
63
|
+
}
|
|
64
|
+
if (profile.phone) {
|
|
65
|
+
profileUpdates.phone = profile.phone;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
const updatedUser = await node.updateUser({
|
|
70
|
+
teamDid: blocklet.appPid,
|
|
71
|
+
user: {
|
|
72
|
+
did: userDid,
|
|
73
|
+
kycChanged: true,
|
|
74
|
+
...kycUpdates,
|
|
75
|
+
...profileUpdates,
|
|
76
|
+
},
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
return updatedUser;
|
|
80
|
+
},
|
|
81
|
+
};
|
|
82
|
+
};
|
|
@@ -10,6 +10,7 @@ const {
|
|
|
10
10
|
WHO_CAN_ACCESS,
|
|
11
11
|
WHO_CAN_ACCESS_PREFIX_ROLES,
|
|
12
12
|
ROLES,
|
|
13
|
+
WELLKNOWN_SERVICE_PATH_PREFIX,
|
|
13
14
|
} = require('@abtnode/constant');
|
|
14
15
|
const { BLOCKLET_MODES } = require('@blocklet/constant');
|
|
15
16
|
const { setUserInfoHeaders } = require('@abtnode/auth/lib/auth');
|
|
@@ -37,12 +38,14 @@ const createCheckHasProjectIdAuth = require('./connect/check-has-project-id');
|
|
|
37
38
|
const createFuelAuth = require('./connect/fuel');
|
|
38
39
|
const createMigrateToStructV2Routes = require('./connect/migrate-app-to-struct-v2');
|
|
39
40
|
const createTransferAppOwnerRoutes = require('./connect/transfer-app-owner');
|
|
41
|
+
const createIssueKycAuth = require('./connect/issue-kyc');
|
|
42
|
+
const createUpdateKycAuth = require('./connect/update-kyc');
|
|
40
43
|
const createReceiveTransferAppOwnerRoutes = require('./connect/receive-transfer-app-owner');
|
|
41
44
|
const createSessionRoutes = require('./session');
|
|
42
45
|
const createPassportRoutes = require('./passport');
|
|
43
46
|
const { getRedirectUrl, shouldIgnoreUrl } = require('../../util');
|
|
44
|
-
const { PREFIXES } = require('../../util/constants');
|
|
45
47
|
const { createConnectToDidSpacesForUserRoute } = require('./connect/connect-to-did-spaces-for-user');
|
|
48
|
+
const { isEmailKycRequired } = require('../../libs/kyc');
|
|
46
49
|
|
|
47
50
|
const getTokenFromWsConnect = (req, options) => {
|
|
48
51
|
const cookies = cookie.parse(req.headers.cookie || '');
|
|
@@ -244,6 +247,8 @@ const init = ({ node, options }) => {
|
|
|
244
247
|
handler.attach(Object.assign({ app }, createReceiveTransferAppOwnerRoutes(node, options, createSessionToken)));
|
|
245
248
|
handler.attach(Object.assign({ app }, createGenBlockletKeyPareAuth(node, options, createSessionToken)));
|
|
246
249
|
handler.attach(Object.assign({ app }, createCheckHasProjectIdAuth(node, options, createSessionToken)));
|
|
250
|
+
handler.attach(Object.assign({ app }, createIssueKycAuth(node, authenticator, createSessionToken)));
|
|
251
|
+
handler.attach(Object.assign({ app }, createUpdateKycAuth(node, authenticator, createSessionToken)));
|
|
247
252
|
});
|
|
248
253
|
};
|
|
249
254
|
|
|
@@ -261,16 +266,14 @@ const init = ({ node, options }) => {
|
|
|
261
266
|
};
|
|
262
267
|
routes.createCommonRoutes = {
|
|
263
268
|
init: (router) => {
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
}
|
|
269
|
+
router.get(`${WELLKNOWN_SERVICE_PATH_PREFIX}/redirect-with-login`, async (req, res) => {
|
|
270
|
+
if (req.query.setupToken) {
|
|
271
|
+
await req.attachSetupToken({ res, token: req.query.setupToken }).catch((error) => {
|
|
272
|
+
logger.error('attach login token failed when redirecting with login', { error }); // 不阻塞跳转
|
|
273
|
+
});
|
|
274
|
+
}
|
|
271
275
|
|
|
272
|
-
|
|
273
|
-
});
|
|
276
|
+
res.redirect('/');
|
|
274
277
|
});
|
|
275
278
|
},
|
|
276
279
|
};
|
|
@@ -319,6 +322,27 @@ const init = ({ node, options }) => {
|
|
|
319
322
|
next();
|
|
320
323
|
};
|
|
321
324
|
|
|
325
|
+
middlewares.checkKyc = async (req, res, next) => {
|
|
326
|
+
if (req.user) {
|
|
327
|
+
const component = await req.getComponent();
|
|
328
|
+
if (component?.mode === 'development') {
|
|
329
|
+
return next();
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
const blocklet = await req.getBlocklet();
|
|
333
|
+
if (isEmailKycRequired(blocklet) && !req.user.emailVerified) {
|
|
334
|
+
if (req.accepts(['html', 'json']) === 'html') {
|
|
335
|
+
return res.redirect(getRedirectUrl({ req, pagePath: '/kyc/email', params: { updateKyc: 1 } }));
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
// Security principles: user should not known the reason
|
|
339
|
+
return res.status(403).json({ code: 403, error: REASON_403 });
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
return next();
|
|
344
|
+
};
|
|
345
|
+
|
|
322
346
|
middlewares.checkAuth = async (req, res, next) => {
|
|
323
347
|
const { blocked, authenticated, authorized, payable, requiredRoles } = await checkAuth({ req });
|
|
324
348
|
|
|
@@ -1,24 +1,21 @@
|
|
|
1
1
|
const { getPassportStatus } = require('@abtnode/auth/lib/auth');
|
|
2
|
-
|
|
3
|
-
const { PREFIXES } = require('../../util/constants');
|
|
2
|
+
const { WELLKNOWN_SERVICE_PATH_PREFIX } = require('@abtnode/constant');
|
|
4
3
|
|
|
5
4
|
module.exports = {
|
|
6
5
|
init(server, node) {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const teamDid = req.headers['x-blocklet-did'];
|
|
6
|
+
server.get(`${WELLKNOWN_SERVICE_PATH_PREFIX}/api/passport/status`, async (req, res) => {
|
|
7
|
+
const { vcId, userDid, locale } = req.query;
|
|
8
|
+
const teamDid = req.headers['x-blocklet-did'];
|
|
11
9
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
10
|
+
// HACK: 这里的 req.query.teamDid 可能是 blocklet 容器化之前的 teamDid(等于 blocklet.yml did),需要根据这个 did 找到现有对应的 teamDid,否则无法使用在容器化之前颁发的通行证来登录
|
|
11
|
+
const blocklet = await node.getBlocklet({ did: req.query.teamDid, useCache: true });
|
|
12
|
+
if (teamDid !== blocklet?.meta?.did) {
|
|
13
|
+
throw new Error('teamDid is invalid');
|
|
14
|
+
}
|
|
17
15
|
|
|
18
|
-
|
|
16
|
+
const status = await getPassportStatus({ node, teamDid, userDid, vcId, locale });
|
|
19
17
|
|
|
20
|
-
|
|
21
|
-
});
|
|
18
|
+
res.json(status);
|
|
22
19
|
});
|
|
23
20
|
},
|
|
24
21
|
};
|