@abtnode/blocklet-services 1.16.32-beta-04a5da00 → 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/receive-transfer-app-owner.js +8 -5
- 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-2VoKTpUb.js → Add-BXK5RFEZ.js} +1 -1
- package/dist/assets/Alert-CeGhMuEg.js +1 -0
- package/dist/assets/{ArrowDropDown-0yDa2aHH.js → ArrowDropDown-JIsmOdUp.js} +1 -1
- package/dist/assets/Avatar-DlL4WPrD.js +1 -0
- package/dist/assets/{ButtonGroup-d0oDm0RO.js → ButtonGroup-ailEu1Nr.js} +1 -1
- package/dist/assets/{CheckCircle-CyZ2-BIj.js → CheckCircle-CEIChsEH.js} +1 -1
- package/dist/assets/ChevronLeft-D_bQ82yy.js +1 -0
- package/dist/assets/{ChevronRight-DDyzifk9.js → ChevronRight-BGd4BknI.js} +1 -1
- package/dist/assets/{Close-BkBXMJo_.js → Close-uLBCA-jx.js} +1 -1
- package/dist/assets/{CloseOutlined-DmlGPmzq.js → CloseOutlined-IVnREWlC.js} +1 -1
- package/dist/assets/{Delete-B2wSgiTE.js → Delete-BVwa0m1R.js} +1 -1
- package/dist/assets/{DeleteOutline-BMqkCxEq.js → DeleteOutline-CZQhsml4.js} +1 -1
- package/dist/assets/DialogContentText-ClisAi23.js +1 -0
- package/dist/assets/{Done-ZAZhEq2L.js → Done-Dsagjn-5.js} +1 -1
- package/dist/assets/{Download-1xH6mRbf.js → Download-BONj8GVi.js} +1 -1
- package/dist/assets/{Edit-MvOKdBEJ.js → Edit-uwWLILxD.js} +1 -1
- package/dist/assets/{EditIcon-B68lRQt1.js → EditIcon-Ccz9ZvCO.js} +1 -1
- package/dist/assets/{Error-xmdfCNYq.js → Error-Cpv-DWNH.js} +1 -1
- package/dist/assets/{ExpandMore-DkoxrM3F.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-DwKupHqA.js → Google-_v-FGHrH.js} +1 -1
- package/dist/assets/Hidden-qI_JwCnJ.js +1 -0
- package/dist/assets/{InfoOutlined-CgNZyv9N.js → InfoOutlined-ph3gfjxo.js} +1 -1
- package/dist/assets/{InputAdornment-DKErxOxA.js → InputAdornment-ooDD0p7-.js} +1 -1
- package/dist/assets/{InputLabel-BU0FzAth.js → InputLabel-BvnZs665.js} +1 -1
- package/dist/assets/{LastPage-BRQIhdX7.js → LastPage-Cyi1MuLL.js} +1 -1
- package/dist/assets/{Launch-DZvL7Btt.js → Launch-DuItzynA.js} +1 -1
- package/dist/assets/{LaunchOutlined-BEo8P2Tl.js → LaunchOutlined-D-2u70Um.js} +1 -1
- package/dist/assets/{Link-CPGMRK--.js → Link-Bi0x7esG.js} +1 -1
- package/dist/assets/{ListItemText-D00e-P7J.js → ListItemText-5Rgq6wEi.js} +1 -1
- package/dist/assets/{LoadingButton-Dnokttyl.js → LoadingButton-D5Z3wmwU.js} +1 -1
- package/dist/assets/{LockIcon-lwFTQyw5.js → LockIcon-m3nszp09.js} +1 -1
- package/dist/assets/{Loop-UQ-nGsCg.js → Loop-DxSgdtYO.js} +1 -1
- package/dist/assets/{MoreHoriz-ClHVZaho.js → MoreHoriz-BhT61kh5.js} +1 -1
- package/dist/assets/{MoreVert-D7siuKO-.js → MoreVert-BZrKRQjN.js} +1 -1
- package/dist/assets/{OpenInNew-Dn1FcPSH.js → OpenInNew-BmjNdWrg.js} +1 -1
- package/dist/assets/{Pagination-EqcGDqMl.js → Pagination-BuAgd0Fq.js} +2 -2
- package/dist/assets/{PlayArrow-CnWuAQ7W.js → PlayArrow-duerFb9i.js} +1 -1
- package/dist/assets/{QuestionMarkCircle-B7Bpx0cE.js → QuestionMarkCircle-e6Dqgeid.js} +1 -1
- package/dist/assets/{RadioGroup-Bu2zmWw_.js → RadioGroup-hK79XBIl.js} +1 -1
- package/dist/assets/{Search-CQlVySI6.js → Search-BMPJQuLV.js} +1 -1
- package/dist/assets/{Select-BzfN1x8W.js → Select-BeArBHJP.js} +2 -2
- package/dist/assets/{ServerLogo-DfCDjLNl.js → ServerLogo-BNlEHeUQ.js} +1 -1
- package/dist/assets/{Skeleton-DqrgKJha.js → Skeleton-D5U61zVB.js} +4 -4
- package/dist/assets/{Slider-BtNkKS5B.js → Slider-DTLSNhz0.js} +1 -1
- package/dist/assets/Stack-CZh-rd3Z.js +1 -0
- package/dist/assets/{Stepper-xGvqwz44.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-BFQT-hmR.js → ViewList-D9Rx7CG7.js} +1 -1
- package/dist/assets/access-control-CZ2vCfvl.js +13 -0
- package/dist/assets/actions-bp0tIFPr.js +1 -0
- package/dist/assets/{add-component-core-BPcx3JYq.js → add-component-core-C1Hjv9Mu.js} +61 -61
- package/dist/assets/add-resource-ClftlsDn.js +1 -0
- package/dist/assets/addon-CR-5t9SG.js +31 -0
- package/dist/assets/{analytics-C434vWOY.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-CR8UEQyZ.js → button-C_Ohwi26.js} +1 -1
- package/dist/assets/{click-to-copy-3x1G9XH4.js → click-to-copy-DdG-v5Xf.js} +1 -1
- package/dist/assets/{complete-k3Qs8bm-.js → complete-d1ZMK4NF.js} +4 -4
- package/dist/assets/component-C3cEDupm.js +768 -0
- package/dist/assets/{config-D5HYWnF4.js → config-CoCmaQP0.js} +2 -2
- package/dist/assets/{config-D3UgjDma.js → config-Dx0nfjiu.js} +1 -1
- package/dist/assets/{config-navigation-CpN5oPZv.js → config-navigation-WnNuhnxu.js} +2 -2
- package/dist/assets/confirm-BY-9Ale6.js +7 -0
- package/dist/assets/{connect-D07YGJkK.js → connect-DDUiaDOH.js} +1 -1
- package/dist/assets/connect-eNCvhZ4O.js +5 -0
- package/dist/assets/connect-to-CTihUmuN.js +54 -0
- package/dist/assets/{content-layout-DPij9Nh6.js → content-layout-DYHA2DoT.js} +1 -1
- package/dist/assets/{dashboard-BeSQUyuf.js → dashboard-C8VgUavf.js} +8 -8
- package/dist/assets/de-DS4XAN75.js +1 -0
- package/dist/assets/{de-9vHBMa7b.js → de-qs3PjT55.js} +1 -1
- package/dist/assets/{did-address-43xkXM21.js → did-address-Bye61gv9.js} +1 -1
- package/dist/assets/domain-JYDawt5A.js +9 -0
- package/dist/assets/domain-list-1LRFMuDN.js +15 -0
- 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--fiEF2lu.js → exchange-passport-CvhlZqQF.js} +1 -1
- package/dist/assets/{fallback-Cn_W-m4r.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-CfBzTTU6.js +32 -0
- package/dist/assets/fullpage-ChxIZLoV.js +1 -0
- package/dist/assets/hi-C_Mli2FO.js +1 -0
- package/dist/assets/hi-Ch52Lky6.js +1 -0
- package/dist/assets/{home-C1E0r4u0.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-EFuUBe3_.js → iframe-BuZAORHf.js} +1 -1
- package/dist/assets/{index-BJtcCGWr.js → index--PkoOt7s.js} +1 -1
- package/dist/assets/{index-BCp3frMn.js → index--Zmo4lNz.js} +1 -1
- package/dist/assets/{index-CosdjVLd.js → index-52sgx-HD.js} +43 -43
- package/dist/assets/{index-QiNYWFY0.js → index-B-Fz2GNJ.js} +2 -2
- package/dist/assets/{index-C0SGixzY.js → index-BElhBMsQ.js} +13 -13
- package/dist/assets/{index-cz02fWRO.js → index-BM94YLjm.js} +1 -1
- package/dist/assets/index-BML-rKDv.js +1 -0
- package/dist/assets/index-BVQpPnuL.js +262 -0
- package/dist/assets/{index-CjW-BiBJ.js → index-Be2wLDD2.js} +3 -3
- package/dist/assets/index-BlaHh4Bq.js +1 -0
- package/dist/assets/{index-BLVcicxZ.js → index-BmJ_HmLz.js} +1 -1
- package/dist/assets/{index-DFjXeol_.js → index-BmTem0RD.js} +5 -5
- package/dist/assets/{index-CTfT52DI.js → index-BqbUZVee.js} +1 -1
- package/dist/assets/{index-Cvw6NSyS.js → index-C0fRQdXZ.js} +1 -1
- package/dist/assets/index-C2qWDMpv.js +126 -0
- package/dist/assets/{index-BZUzIWGh.js → index-C5cJ2AYH.js} +1 -1
- package/dist/assets/{index-xkcMt7XQ.js → index-CMg55b21.js} +1 -1
- package/dist/assets/{index-D5vX4Ooa.js → index-CeNlYeEB.js} +1 -1
- package/dist/assets/{index-UGGSjH4u.js → index-CmriykVM.js} +1 -1
- package/dist/assets/{index-oDZbyv4v.js → index-CsqAQtnh.js} +12 -12
- package/dist/assets/{index-DesPWyQa.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-Bdey46ix.js → index-DCx94jgM.js} +1 -1
- package/dist/assets/{index-CvPYqGkG.js → index-DCyB2kx5.js} +1 -1
- package/dist/assets/index-DMGDz3J5.js +1 -0
- package/dist/assets/{index-BtPZTcXb.js → index-Dg3ZdGFC.js} +1 -1
- package/dist/assets/index-Dn3O_6kH.js +68 -0
- package/dist/assets/{index-Cb0PVWPM.js → index-DnNh-evc.js} +2 -2
- package/dist/assets/{index-DwqzQo9e.js → index-DyEaiz-D.js} +5 -5
- package/dist/assets/{index-DIxJxM78.js → index-fpoxcuML.js} +212 -121
- package/dist/assets/{index.es-DohPHCUD.js → index.es-BXRXZClL.js} +1 -1
- package/dist/assets/index.esm-BPFo6X8Z.js +1 -0
- package/dist/assets/{invitation-c2LXgJZO.js → invitation-D1Wp3bRP.js} +2 -2
- package/dist/assets/invite-YMYQJqN-.js +10 -0
- package/dist/assets/{issue-passport-CCZaXyql.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-D6EO5AkF.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-DAGuAhAQ.js → launch-result-message-BerDxO98.js} +1 -1
- package/dist/assets/{layout-oG70Renu.js → layout-D4J5Y79b.js} +1 -1
- package/dist/assets/list-header-Be3w9ZWF.js +57 -0
- package/dist/assets/localization-C6Hais-M.js +1 -0
- package/dist/assets/{log-BmIrjtPp.js → log-CQOOprUt.js} +1 -1
- package/dist/assets/{login-juMWHvtW.js → login-BE50q_9g.js} +1 -1
- package/dist/assets/{login-oauth-callback-_A65YhiH.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-Cf2K1-ns.js → lottie-8CewroZu.js} +1 -1
- package/dist/assets/notifications-hFiNE8Kp.js +62 -0
- package/dist/assets/{open-window-DvlHyaGG.js → open-window-DZuQsoOo.js} +1 -1
- package/dist/assets/overview-eXanKabi.js +12 -0
- package/dist/assets/page-header-D6emPvgS.js +31 -0
- package/dist/assets/{permission-DaB1xF5g.js → permission-CV9At0xV.js} +1 -1
- package/dist/assets/{preferences-Td5o-d6-.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-uiwtTAq3.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-fvBTD9SB.js +48 -0
- package/dist/assets/session-BHe45BP1.js +1 -0
- package/dist/assets/setup-p-Q92t4g.js +19 -0
- package/dist/assets/{shorten-label-DHOOsTvW.js → shorten-label-BOSkgF_N.js} +1 -1
- package/dist/assets/{slicedToArray-shTeAcQc.js → slicedToArray-CbPRhqfX.js} +2 -2
- package/dist/assets/{spaces-BirpDOm3.js → spaces-Dv5sTFBl.js} +1 -1
- package/dist/assets/start-D4PsKATv.js +187 -0
- package/dist/assets/step-actions-DvJ3jG2s.js +31 -0
- package/dist/assets/studio-kDlNaA-v.js +6 -0
- package/dist/assets/switch-control-CCflGHVj.js +13 -0
- package/dist/assets/th-B61cOYck.js +1 -0
- package/dist/assets/th-C7TEM40B.js +1 -0
- package/dist/assets/{toUpper-BAGcwHI1.js → toUpper-DxMwQ-7A.js} +1 -1
- package/dist/assets/transfer-Cdc4gT4M.js +16 -0
- package/dist/assets/{uniqBy-C2dKepDX.js → uniqBy-C7E-hw0R.js} +1 -1
- package/dist/assets/{unsubscribe-CLOTSJNJ.js → unsubscribe-CZRtq6xH.js} +1 -1
- package/dist/assets/{url-join-CTlMVeSl.js → url-join-Cc5BAZ2e.js} +1 -1
- package/dist/assets/{use-blocklet-info-for-connect-did-spaces-BniHEOwv.js → use-blocklet-info-for-connect-did-spaces-Dro42um_.js} +1 -1
- package/dist/assets/use-mobile-BziK5djw.js +1 -0
- package/dist/assets/{useAsync-C-N7xB1Q.js → useAsync-fA1HnQaq.js} +1 -1
- package/dist/assets/{useFormControl-DqoBF9iH.js → useFormControl-CQ_7pr9i.js} +1 -1
- package/dist/assets/{useLocalStorage-kWCrVKjB.js → useLocalStorage-CpPhACy5.js} +1 -1
- package/dist/assets/{useSetState-B68uVZku.js → useSetState-5snwvlLZ.js} +1 -1
- package/dist/assets/useSlot-GRhp-924.js +1 -0
- package/dist/assets/{useSlotProps-DMBoZT8C.js → useSlotProps-CPXTP7XP.js} +1 -1
- package/dist/assets/{useThemeProps-V4iYGCCr.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-D_sPE-Qe.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-Dl7mso27.js +0 -1
- package/dist/assets/Alert-DPUEB95E.js +0 -1
- package/dist/assets/Avatar-Cw952dlh.js +0 -1
- package/dist/assets/FilterList-DbTqBTrF.js +0 -26
- package/dist/assets/FormControl-BUn4wQGt.js +0 -1
- package/dist/assets/FormControlLabel-Cn1ZEQIw.js +0 -1
- package/dist/assets/FormGroup-BDqHH6R7.js +0 -1
- package/dist/assets/Hidden-w-nWLLe2.js +0 -1
- package/dist/assets/TextField-OgHHL_KP.js +0 -1
- package/dist/assets/Toolbar-IW4D_zYa.js +0 -1
- package/dist/assets/access-control-2b9mvnB3.js +0 -13
- package/dist/assets/actions-DaKlRJnV.js +0 -1
- package/dist/assets/add-resource-2dxnZcDy.js +0 -1
- package/dist/assets/addon-CSAbVfSS.js +0 -31
- package/dist/assets/api-_ltIr2BU.js +0 -1
- package/dist/assets/ar-BSACs5SN.js +0 -1
- package/dist/assets/ar-lTVP4T3d.js +0 -1
- package/dist/assets/audit-logs-CZte5uoR.js +0 -58
- package/dist/assets/component-D-I8mVct.js +0 -464
- package/dist/assets/confirm-CtLbKcS0.js +0 -7
- package/dist/assets/connect-B7XAaWGG.js +0 -5
- package/dist/assets/connect-to-COqWAMKF.js +0 -54
- package/dist/assets/de-B3TxaybY.js +0 -1
- package/dist/assets/domain-4Nq3hHWj.js +0 -9
- package/dist/assets/domain-list-M6G-dRKq.js +0 -15
- package/dist/assets/es-BY0KMFme.js +0 -1
- package/dist/assets/es-Bk9E9Gbf.js +0 -1
- package/dist/assets/format-error-Bn7NObKb.js +0 -2
- package/dist/assets/fr-BiVZLeXU.js +0 -1
- package/dist/assets/fuel-Df5fciLt.js +0 -32
- package/dist/assets/fullpage-DTRlawT9.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-98pN37bN.js +0 -4
- package/dist/assets/index-B29G6Shi.js +0 -1
- package/dist/assets/index-BnsMQNE7.js +0 -262
- package/dist/assets/index-BrwvkAJ2.js +0 -68
- package/dist/assets/index-Bup-bUaa.js +0 -1
- package/dist/assets/index-CKp5dXwW.js +0 -1
- package/dist/assets/index-D9l4FLNE.js +0 -1
- package/dist/assets/index-Dg03Eob-.js +0 -304
- package/dist/assets/index-s7iKiLXT.js +0 -126
- package/dist/assets/index.esm-Beu0fK3G.js +0 -1
- package/dist/assets/invite-um-OhXL2.js +0 -10
- package/dist/assets/item-CBjm7rgp.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/list-header-DfX9T1rW.js +0 -57
- package/dist/assets/localization-C8kIKwrb.js +0 -1
- package/dist/assets/logo-uploader-P1VlMV5V.js +0 -122
- package/dist/assets/lost-passport-BkiX_vW7.js +0 -168
- package/dist/assets/notifications-DwrtVs17.js +0 -62
- package/dist/assets/overview-BIRtop8p.js +0 -12
- package/dist/assets/page-header-CNwTM6gh.js +0 -31
- package/dist/assets/pt-CcFeyma6.js +0 -1
- package/dist/assets/pt-DI2MIkSi.js +0 -1
- package/dist/assets/publish-resource-WQmyUOcm.js +0 -1
- package/dist/assets/react-CwZHH_b9.js +0 -57
- package/dist/assets/resource-dialog-D8uC-XQU.js +0 -57
- package/dist/assets/ru-B2L3CRQ4.js +0 -1
- package/dist/assets/ru-OymXgLUI.js +0 -1
- package/dist/assets/sdk-ByGrtgOC.js +0 -1
- package/dist/assets/selector-CLP7imhL.js +0 -48
- package/dist/assets/session-BmQaZaGU.js +0 -1
- package/dist/assets/setup-WlrDU92w.js +0 -19
- package/dist/assets/start-pnT_BQvG.js +0 -187
- package/dist/assets/step-actions-Dj3cCBJ3.js +0 -31
- package/dist/assets/studio-D3LuzSrd.js +0 -6
- package/dist/assets/switch-control-dGBNspU7.js +0 -13
- package/dist/assets/th-CZbdb5PZ.js +0 -1
- package/dist/assets/th-CfNBHHtU.js +0 -1
- package/dist/assets/transfer-BPGSieyR.js +0 -16
- package/dist/assets/use-mobile-coO1LYtd.js +0 -1
- package/dist/assets/useSlot-CQP4hUUG.js +0 -1
- package/dist/assets/user-center-B6VeBSYd.js +0 -1
- package/dist/assets/user-sessions-Bdav9S_E.js +0 -1
- package/dist/assets/vi-DbzhnofW.js +0 -1
- package/dist/assets/vi-DhjQx2Z1.js +0 -1
- package/dist/assets/wrap-locale-BrsNecIZ.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/index.js
CHANGED
|
@@ -10,12 +10,7 @@ const httpProxy = require('@arcblock/http-proxy');
|
|
|
10
10
|
const { minimatch } = require('minimatch');
|
|
11
11
|
const { joinURL } = require('ufo');
|
|
12
12
|
|
|
13
|
-
const {
|
|
14
|
-
WELLKNOWN_SERVICE_PATH_PREFIX,
|
|
15
|
-
NODE_SERVICES_PREFIX,
|
|
16
|
-
EVENTS,
|
|
17
|
-
MAX_UPLOAD_FILE_SIZE,
|
|
18
|
-
} = require('@abtnode/constant');
|
|
13
|
+
const { WELLKNOWN_SERVICE_PATH_PREFIX, EVENTS, MAX_UPLOAD_FILE_SIZE } = require('@abtnode/constant');
|
|
19
14
|
const {
|
|
20
15
|
BlockletEvents,
|
|
21
16
|
BlockletInternalEvents,
|
|
@@ -39,6 +34,7 @@ const { isProduction, isE2E, isFeDev } = require('./libs/env');
|
|
|
39
34
|
const states = require('./state/index');
|
|
40
35
|
|
|
41
36
|
const { init: initNotification } = require('./services/notification');
|
|
37
|
+
const { init: initKyc } = require('./services/kyc');
|
|
42
38
|
const { init: initRelay } = require('./services/relay');
|
|
43
39
|
const BlockletEventsNotifier = require('./services/notification/blocklet-events-notifier');
|
|
44
40
|
const { init: initAuth } = require('./services/auth');
|
|
@@ -93,6 +89,7 @@ module.exports = function createServer(node, serverOptions = {}) {
|
|
|
93
89
|
|
|
94
90
|
const { middlewares: authMiddlewares, routes: authRoutes, ensureWsUser } = initAuth({ node, options });
|
|
95
91
|
const notificationService = initNotification({ node });
|
|
92
|
+
const kycService = initKyc({ node });
|
|
96
93
|
const relayService = initRelay({ node });
|
|
97
94
|
const imageService = initImageService({ node });
|
|
98
95
|
const dashboardService = initDashboard({ node, ensureWsUser });
|
|
@@ -286,6 +283,9 @@ module.exports = function createServer(node, serverOptions = {}) {
|
|
|
286
283
|
// Analytics
|
|
287
284
|
AnalyticService.init({ app: server, node });
|
|
288
285
|
|
|
286
|
+
// API: KYC
|
|
287
|
+
kycService.attach(server);
|
|
288
|
+
|
|
289
289
|
// openapi & opencomponent
|
|
290
290
|
createOpenAPIRoutes.init(server, node, options);
|
|
291
291
|
createOpenComponentRoutes.init(server, node, options);
|
|
@@ -339,7 +339,7 @@ module.exports = function createServer(node, serverOptions = {}) {
|
|
|
339
339
|
});
|
|
340
340
|
|
|
341
341
|
// API: dns resolver
|
|
342
|
-
createDnsResolver.init(server
|
|
342
|
+
createDnsResolver.init(server);
|
|
343
343
|
|
|
344
344
|
// API: invitation
|
|
345
345
|
createInvite.init(server, node, {
|
|
@@ -367,11 +367,12 @@ module.exports = function createServer(node, serverOptions = {}) {
|
|
|
367
367
|
server.use(checkRunning);
|
|
368
368
|
|
|
369
369
|
// Middleware: check auth
|
|
370
|
+
server.use(authMiddlewares.checkKyc);
|
|
370
371
|
server.use(authMiddlewares.checkAuth);
|
|
371
372
|
|
|
372
373
|
// Block invalid path in reserved prefix
|
|
373
374
|
server.use((req, res, next) => {
|
|
374
|
-
if (
|
|
375
|
+
if (req.path.startsWith(WELLKNOWN_SERVICE_PATH_PREFIX)) {
|
|
375
376
|
res.status(400).send('Bad request');
|
|
376
377
|
return;
|
|
377
378
|
}
|
package/api/libs/auth/index.js
CHANGED
|
@@ -20,11 +20,13 @@ const { verifyIdToken } = require('../../services/oauth');
|
|
|
20
20
|
|
|
21
21
|
/**
|
|
22
22
|
* @typedef {Object} UserProfile
|
|
23
|
+
* @property {string} provider - The provider of the user profile.
|
|
23
24
|
* @property {string} sub - The subject of the user profile.
|
|
24
25
|
* @property {string} name - The name of the user.
|
|
25
26
|
* @property {string} picture - The picture URL of the user.
|
|
26
27
|
* @property {string} email - The email of the user.
|
|
27
28
|
* @property {boolean} [email_verified] - Indicates if the user's email is verified.
|
|
29
|
+
* @property {boolean} [is_private_email] - Indicates if the user's email is private relay.
|
|
28
30
|
*/
|
|
29
31
|
|
|
30
32
|
/**
|
package/api/libs/auth/utils.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const { getPassportStatusEndpoint, getApplicationInfo } = require('@abtnode/auth/lib/auth');
|
|
2
2
|
const { createPassportVC, upsertToPassports, createUserPassport } = require('@abtnode/auth/lib/passport');
|
|
3
|
-
const { VC_TYPE_NODE_PASSPORT, PASSPORT_STATUS } = require('@abtnode/constant');
|
|
3
|
+
const { VC_TYPE_NODE_PASSPORT, VC_TYPE_GENERAL_PASSPORT, PASSPORT_STATUS } = require('@abtnode/constant');
|
|
4
4
|
const { getAvatarByEmail, getAvatarByUrl, getUserAvatarUrl } = require('@abtnode/util/lib/user');
|
|
5
5
|
const { getBlockletAppIdList } = require('@blocklet/meta/lib/util');
|
|
6
6
|
const pick = require('lodash/pick');
|
|
@@ -10,6 +10,8 @@ const { LOGIN_PROVIDER } = require('@blocklet/constant');
|
|
|
10
10
|
|
|
11
11
|
const { sendToUser } = require('../notification');
|
|
12
12
|
|
|
13
|
+
const PASSPORT_VC_TYPES = [VC_TYPE_GENERAL_PASSPORT, VC_TYPE_NODE_PASSPORT];
|
|
14
|
+
|
|
13
15
|
async function transferPassport(fromUser, toUser, { req, teamDid, node, nodeInfo, revokePassport = false }) {
|
|
14
16
|
if (!fromUser || !toUser) {
|
|
15
17
|
return;
|
|
@@ -139,4 +141,5 @@ module.exports = {
|
|
|
139
141
|
getAvatarByUrl,
|
|
140
142
|
getAvatarByEmail,
|
|
141
143
|
transferPassport,
|
|
144
|
+
PASSPORT_VC_TYPES,
|
|
142
145
|
};
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
// Holds shared logic for session-manager v1 and v2
|
|
2
2
|
const get = require('lodash/get');
|
|
3
|
+
const merge = require('lodash/merge');
|
|
4
|
+
const pick = require('lodash/pick');
|
|
3
5
|
const { joinURL } = require('ufo');
|
|
4
6
|
const formatContext = require('@abtnode/util/lib/format-context');
|
|
5
7
|
const { extractUserAvatar, getAppAvatarUrl } = require('@abtnode/util/lib/user');
|
|
6
8
|
const {
|
|
7
9
|
messages,
|
|
8
|
-
getVCFromClaims,
|
|
9
10
|
validatePassportStatus,
|
|
10
11
|
getPassportStatusEndpoint,
|
|
11
12
|
getApplicationInfo,
|
|
@@ -15,8 +16,6 @@ const {
|
|
|
15
16
|
NODE_SERVICES,
|
|
16
17
|
ROLES,
|
|
17
18
|
WELLKNOWN_SERVICE_PATH_PREFIX,
|
|
18
|
-
VC_TYPE_GENERAL_PASSPORT,
|
|
19
|
-
VC_TYPE_NODE_PASSPORT,
|
|
20
19
|
WHO_CAN_ACCESS,
|
|
21
20
|
WHO_CAN_ACCESS_PREFIX_ROLES,
|
|
22
21
|
MAIN_CHAIN_ENDPOINT,
|
|
@@ -33,10 +32,8 @@ const {
|
|
|
33
32
|
getPassportClaimUrl,
|
|
34
33
|
} = require('@abtnode/auth/lib/passport');
|
|
35
34
|
const { getKeyPairClaim, getAuthPrincipalForMigrateAppToV2 } = require('@abtnode/auth/lib/server');
|
|
36
|
-
const merge = require('lodash/merge');
|
|
37
35
|
const { fromAppDid } = require('@arcblock/did-ext');
|
|
38
36
|
const { LOGIN_PROVIDER, BLOCKLET_APP_SPACE_REQUIREMENT, DID_SPACES } = require('@blocklet/constant');
|
|
39
|
-
const pick = require('lodash/pick');
|
|
40
37
|
const createTranslator = require('@abtnode/util/lib/translate');
|
|
41
38
|
const {
|
|
42
39
|
getRolesFromAuthConfig,
|
|
@@ -50,12 +47,11 @@ const { getSourceAppPid, getLoginProvider } = require('@blocklet/sdk/lib/util/lo
|
|
|
50
47
|
const { getDidSpacesInfoByClaims, silentAuthorizationInConnect } = require('@abtnode/auth/lib/util/spaces');
|
|
51
48
|
const getRequestIP = require('@abtnode/util/lib/get-request-ip');
|
|
52
49
|
|
|
53
|
-
const uniq = require('lodash/uniq');
|
|
54
|
-
const semver = require('semver');
|
|
55
50
|
const logger = require('../logger')('connect');
|
|
56
51
|
const { isInvitedUserOnly, createTokenFn, getDidConnectVersion } = require('../../util');
|
|
57
|
-
const { transferPassport } = require('../auth/utils');
|
|
52
|
+
const { transferPassport, PASSPORT_VC_TYPES } = require('../auth/utils');
|
|
58
53
|
const { migrateAccount, declareAccount } = require('../../services/oauth');
|
|
54
|
+
const { getKycClaims, verifyKycClaims, getPassportVc, isProfileUrlSupported, getProfileItems } = require('../kyc');
|
|
59
55
|
const { getTrustedIssuers, getFederatedTrustedIssuers } = require('../../util/blocklet-utils');
|
|
60
56
|
const {
|
|
61
57
|
getUserAvatarUrl,
|
|
@@ -66,21 +62,6 @@ const {
|
|
|
66
62
|
} = require('../../util/federated');
|
|
67
63
|
const { Profile } = require('../../state/profile');
|
|
68
64
|
|
|
69
|
-
const vcTypes = [VC_TYPE_GENERAL_PASSPORT, VC_TYPE_NODE_PASSPORT];
|
|
70
|
-
|
|
71
|
-
const getPassportVc = async ({ blocklet, claims, challenge, locale, sourceAppPid }) => {
|
|
72
|
-
const trustedIssuers = await getTrustedIssuers(blocklet, { sourceAppPid });
|
|
73
|
-
const { vc } = await getVCFromClaims({
|
|
74
|
-
claims,
|
|
75
|
-
challenge,
|
|
76
|
-
trustedIssuers,
|
|
77
|
-
vcTypes,
|
|
78
|
-
locale,
|
|
79
|
-
});
|
|
80
|
-
|
|
81
|
-
return vc;
|
|
82
|
-
};
|
|
83
|
-
|
|
84
65
|
const getRoleFromVC = async ({ vc, node, locale, blocklet, teamDid, sourceAppPid }) => {
|
|
85
66
|
let role = ROLES.GUEST;
|
|
86
67
|
if (vc) {
|
|
@@ -174,40 +155,6 @@ const isDidSpaceRequiredOnConnect = (blocklet, request) => {
|
|
|
174
155
|
return !!flag;
|
|
175
156
|
};
|
|
176
157
|
|
|
177
|
-
/**
|
|
178
|
-
* @description 兼容老的 DID Wallet 版本,不是所有的 DID Wallet 都可以出示 profile url
|
|
179
|
-
* @param {import('../../../types').DidWallet} didWallet
|
|
180
|
-
* @return {boolean}
|
|
181
|
-
*/
|
|
182
|
-
function canUseProfileUrl(didWallet) {
|
|
183
|
-
if (!didWallet) {
|
|
184
|
-
return false;
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
const { os, version } = didWallet;
|
|
188
|
-
const webCanUse = os === 'web' && semver.satisfies(version, '>= 4.13.0');
|
|
189
|
-
const iosCanUse = os === 'ios' && semver.satisfies(version, '>= 5.6.0');
|
|
190
|
-
const androidCanUse = os === 'android' && semver.satisfies(version, '>= 5.6.0');
|
|
191
|
-
|
|
192
|
-
return webCanUse || iosCanUse || androidCanUse;
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
/**
|
|
196
|
-
* @description
|
|
197
|
-
* @param {string[]} defaultProfileItems
|
|
198
|
-
* @param {import('../../../types').DidWallet} didWallet
|
|
199
|
-
* @return {string[]}
|
|
200
|
-
*/
|
|
201
|
-
function getProfileItems(defaultProfileItems, didWallet) {
|
|
202
|
-
const profileItems = defaultProfileItems.concat(['fullName', 'avatar', 'email']);
|
|
203
|
-
|
|
204
|
-
if (canUseProfileUrl(didWallet)) {
|
|
205
|
-
profileItems.push('url');
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
return uniq(profileItems);
|
|
209
|
-
}
|
|
210
|
-
|
|
211
158
|
module.exports = {
|
|
212
159
|
login: {
|
|
213
160
|
/**
|
|
@@ -226,9 +173,7 @@ module.exports = {
|
|
|
226
173
|
const { did: teamDid, wallet: blockletWallet } = await request.getBlockletInfo();
|
|
227
174
|
const sourceAppPid = getSourceAppPid(request);
|
|
228
175
|
|
|
229
|
-
|
|
230
|
-
const profileItems = getProfileItems(get(config, 'profileFields', []), request.context.didwallet);
|
|
231
|
-
|
|
176
|
+
const profileItems = getProfileItems(blocklet.settings?.session, request.context.didwallet);
|
|
232
177
|
const claims = {
|
|
233
178
|
profile: {
|
|
234
179
|
type: 'profile',
|
|
@@ -236,21 +181,37 @@ module.exports = {
|
|
|
236
181
|
items: profileItems,
|
|
237
182
|
},
|
|
238
183
|
};
|
|
239
|
-
if (action === 'login') {
|
|
240
|
-
const [invitedUserOnly] = config ? await isInvitedUserOnly(config, node, teamDid) : [false];
|
|
241
184
|
|
|
185
|
+
const user = await node.getUser({
|
|
186
|
+
teamDid: blocklet.meta.did,
|
|
187
|
+
user: {
|
|
188
|
+
did: userDid,
|
|
189
|
+
},
|
|
190
|
+
options: {
|
|
191
|
+
enableConnectedAccount: true,
|
|
192
|
+
blockletSk: blockletWallet.secretKey,
|
|
193
|
+
},
|
|
194
|
+
});
|
|
195
|
+
|
|
196
|
+
if (action === 'login') {
|
|
242
197
|
const trustedIssuers = await getTrustedIssuers(blocklet, { sourceAppPid });
|
|
243
|
-
|
|
198
|
+
const kycClaims = getKycClaims(blocklet, user, locale, baseUrl, trustedIssuers);
|
|
199
|
+
Object.assign(claims, kycClaims);
|
|
200
|
+
|
|
201
|
+
// passport claim
|
|
202
|
+
const [invitedUserOnly] = config ? await isInvitedUserOnly(config, node, teamDid) : [false];
|
|
203
|
+
const passportClaim = {
|
|
244
204
|
type: 'verifiableCredential',
|
|
245
205
|
description: messages.requestPassport[locale],
|
|
246
|
-
item:
|
|
206
|
+
item: PASSPORT_VC_TYPES,
|
|
247
207
|
trustedIssuers,
|
|
248
208
|
optional: !invitedUserOnly,
|
|
249
209
|
claimUrl: getPassportClaimUrl(baseUrl),
|
|
250
210
|
};
|
|
251
211
|
if (passportId) {
|
|
252
|
-
|
|
212
|
+
passportClaim.target = passportId;
|
|
253
213
|
}
|
|
214
|
+
claims.passport = ['verifiableCredential', passportClaim];
|
|
254
215
|
|
|
255
216
|
// attach assetOrVC claim when space is required for user
|
|
256
217
|
if (isDidSpaceRequiredOnConnect(blocklet, request)) {
|
|
@@ -295,19 +256,9 @@ module.exports = {
|
|
|
295
256
|
};
|
|
296
257
|
}
|
|
297
258
|
|
|
298
|
-
const user = await node.getUser({
|
|
299
|
-
teamDid: blocklet.meta.did,
|
|
300
|
-
user: {
|
|
301
|
-
did: userDid,
|
|
302
|
-
},
|
|
303
|
-
options: {
|
|
304
|
-
enableConnectedAccount: true,
|
|
305
|
-
blockletSk: blockletWallet.secretKey,
|
|
306
|
-
},
|
|
307
|
-
});
|
|
308
259
|
if (user) {
|
|
309
260
|
// profile url 存在或者 不可以使用 profile,那么就不需要出示 profile 了
|
|
310
|
-
if (user.url || !
|
|
261
|
+
if (user.url || !isProfileUrlSupported(request.context.didwallet)) {
|
|
311
262
|
delete claims.profile;
|
|
312
263
|
}
|
|
313
264
|
|
|
@@ -375,6 +326,9 @@ module.exports = {
|
|
|
375
326
|
const provider = getLoginProvider(request);
|
|
376
327
|
const masterSite = getFederatedMaster(blocklet);
|
|
377
328
|
|
|
329
|
+
// updates for kyc
|
|
330
|
+
let kycUpdates = {};
|
|
331
|
+
|
|
378
332
|
// Get passport vc
|
|
379
333
|
if (action === 'login') {
|
|
380
334
|
vc = await getPassportVc({
|
|
@@ -386,8 +340,19 @@ module.exports = {
|
|
|
386
340
|
});
|
|
387
341
|
[invitedUserOnly, defaultRole, issuePassport] = await isInvitedUserOnly(authConfig, node, teamDid);
|
|
388
342
|
if (invitedUserOnly && !vc) {
|
|
389
|
-
throw new Error(messages.
|
|
343
|
+
throw new Error(messages.missingPassport[locale]);
|
|
390
344
|
}
|
|
345
|
+
|
|
346
|
+
kycUpdates = await verifyKycClaims({
|
|
347
|
+
node,
|
|
348
|
+
blocklet,
|
|
349
|
+
teamDid,
|
|
350
|
+
claims,
|
|
351
|
+
challenge,
|
|
352
|
+
locale,
|
|
353
|
+
sourceAppPid,
|
|
354
|
+
user: currentUser,
|
|
355
|
+
});
|
|
391
356
|
} else if (action === 'exchangePassport') {
|
|
392
357
|
const claim = claims.find((x) => x.type === 'asset');
|
|
393
358
|
const isConnected = await node.isConnectedAccount({ teamDid, did: claim.asset });
|
|
@@ -501,6 +466,7 @@ module.exports = {
|
|
|
501
466
|
lastLoginIp: getRequestIP(request),
|
|
502
467
|
connectedAccount: [connectAccount, connectedNft],
|
|
503
468
|
...profile,
|
|
469
|
+
...kycUpdates,
|
|
504
470
|
avatar: await extractUserAvatar(get(profile, 'avatar'), {
|
|
505
471
|
dataDir: blocklet.env.dataDir,
|
|
506
472
|
}),
|
|
@@ -534,6 +500,7 @@ module.exports = {
|
|
|
534
500
|
lastLoginIp: getRequestIP(request),
|
|
535
501
|
connectedAccount: [connectAccount, connectedNft],
|
|
536
502
|
inviter,
|
|
503
|
+
...kycUpdates,
|
|
537
504
|
},
|
|
538
505
|
});
|
|
539
506
|
await node.createAuditLog(
|
|
@@ -592,6 +559,8 @@ module.exports = {
|
|
|
592
559
|
sourceAppPid: sourceAppPid || masterSite.appPid,
|
|
593
560
|
inviter: updatedUser.inviter,
|
|
594
561
|
generation: updatedUser.generation,
|
|
562
|
+
emailVerified: updatedUser.emailVerified,
|
|
563
|
+
phoneVerified: updatedUser.phoneVerified,
|
|
595
564
|
},
|
|
596
565
|
],
|
|
597
566
|
},
|
|
@@ -628,6 +597,8 @@ module.exports = {
|
|
|
628
597
|
// NOTE: token 中存储当前的 login provider
|
|
629
598
|
provider,
|
|
630
599
|
walletOS,
|
|
600
|
+
emailVerified: updatedUser.emailVerified,
|
|
601
|
+
phoneVerified: updatedUser.phoneVerified,
|
|
631
602
|
},
|
|
632
603
|
{ ...sessionConfig, didConnectVersion: getDidConnectVersion(request) }
|
|
633
604
|
);
|
|
@@ -737,7 +708,7 @@ module.exports = {
|
|
|
737
708
|
},
|
|
738
709
|
|
|
739
710
|
switchProfile: {
|
|
740
|
-
onConnect: async ({ node, request, locale, userDid, previousUserDid }) => {
|
|
711
|
+
onConnect: async ({ node, request, locale, userDid, baseUrl, previousUserDid }) => {
|
|
741
712
|
if (userDid && previousUserDid && userDid !== previousUserDid) {
|
|
742
713
|
throw new Error(messages.userMismatch[locale]);
|
|
743
714
|
}
|
|
@@ -747,9 +718,9 @@ module.exports = {
|
|
|
747
718
|
throw new Error(messages.actionForbidden[locale]);
|
|
748
719
|
}
|
|
749
720
|
|
|
750
|
-
const
|
|
721
|
+
const blocklet = await request.getBlocklet();
|
|
751
722
|
const user = await node.getUser({
|
|
752
|
-
teamDid,
|
|
723
|
+
teamDid: blocklet.appDid,
|
|
753
724
|
user: {
|
|
754
725
|
did: userDid,
|
|
755
726
|
},
|
|
@@ -765,19 +736,26 @@ module.exports = {
|
|
|
765
736
|
throw new Error(messages.notAuthorized[locale]);
|
|
766
737
|
}
|
|
767
738
|
|
|
768
|
-
const profileItems = getProfileItems(
|
|
769
|
-
|
|
770
|
-
return {
|
|
739
|
+
const profileItems = getProfileItems(blocklet.settings?.session, request.context.didwallet);
|
|
740
|
+
const claims = {
|
|
771
741
|
profile: {
|
|
772
742
|
type: 'profile',
|
|
773
743
|
description: messages.description[locale],
|
|
774
744
|
items: profileItems,
|
|
775
745
|
},
|
|
776
746
|
};
|
|
747
|
+
|
|
748
|
+
const sourceAppPid = getSourceAppPid(request);
|
|
749
|
+
const trustedIssuers = await getTrustedIssuers(blocklet, { sourceAppPid });
|
|
750
|
+
const kycClaims = getKycClaims(blocklet, user, locale, baseUrl, trustedIssuers);
|
|
751
|
+
Object.assign(claims, kycClaims);
|
|
752
|
+
|
|
753
|
+
return claims;
|
|
777
754
|
},
|
|
778
|
-
onApprove: async ({ node, request, locale, profile, userDid }) => {
|
|
755
|
+
onApprove: async ({ node, request, locale, profile, userDid, challenge, claims }) => {
|
|
779
756
|
const blocklet = await request.getBlocklet();
|
|
780
757
|
const { did: teamDid } = await request.getBlockletInfo();
|
|
758
|
+
const sourceAppPid = getSourceAppPid(request);
|
|
781
759
|
|
|
782
760
|
// check user approved
|
|
783
761
|
const user = await node.getUser({
|
|
@@ -801,17 +779,27 @@ module.exports = {
|
|
|
801
779
|
profile.url = profile.url || '';
|
|
802
780
|
}
|
|
803
781
|
|
|
782
|
+
const kycUpdates = await verifyKycClaims({
|
|
783
|
+
node,
|
|
784
|
+
blocklet,
|
|
785
|
+
teamDid,
|
|
786
|
+
claims,
|
|
787
|
+
challenge,
|
|
788
|
+
locale,
|
|
789
|
+
sourceAppPid,
|
|
790
|
+
user,
|
|
791
|
+
});
|
|
792
|
+
|
|
804
793
|
// Update user
|
|
805
794
|
const doc = await node.updateUser({
|
|
806
795
|
teamDid,
|
|
807
796
|
user: {
|
|
808
797
|
...user,
|
|
809
798
|
...profile,
|
|
799
|
+
...kycUpdates,
|
|
810
800
|
avatar: await extractUserAvatar(get(profile, 'avatar'), {
|
|
811
801
|
dataDir: blocklet.env.dataDir,
|
|
812
802
|
}),
|
|
813
|
-
// 切换通行证不再更新 locale
|
|
814
|
-
// locale,
|
|
815
803
|
},
|
|
816
804
|
});
|
|
817
805
|
|
|
@@ -835,11 +823,12 @@ module.exports = {
|
|
|
835
823
|
'url',
|
|
836
824
|
'inviter',
|
|
837
825
|
'generation',
|
|
826
|
+
'emailVerified',
|
|
827
|
+
'phoneVerified',
|
|
838
828
|
]);
|
|
839
829
|
if (syncUserData.avatar) {
|
|
840
830
|
syncUserData.avatar = getUserAvatarUrl(syncUserData.avatar, blocklet);
|
|
841
831
|
}
|
|
842
|
-
const sourceAppPid = getSourceAppPid(request);
|
|
843
832
|
const masterSite = getFederatedMaster(blocklet);
|
|
844
833
|
// NOTICE: 采用异步来更新,不阻塞接口的正常响应
|
|
845
834
|
if (shouldSyncFederated(sourceAppPid, blocklet)) {
|
|
@@ -907,7 +896,7 @@ module.exports = {
|
|
|
907
896
|
verifiableCredential: {
|
|
908
897
|
type: 'verifiableCredential',
|
|
909
898
|
description: messages.requestPassport[locale],
|
|
910
|
-
item:
|
|
899
|
+
item: PASSPORT_VC_TYPES,
|
|
911
900
|
trustedIssuers,
|
|
912
901
|
optional: !invitedUserOnly,
|
|
913
902
|
claimUrl: getPassportClaimUrl(baseUrl),
|
|
@@ -965,7 +954,7 @@ module.exports = {
|
|
|
965
954
|
[invitedUserOnly] = await isInvitedUserOnly(authConfig, node, teamDid);
|
|
966
955
|
}
|
|
967
956
|
if (invitedUserOnly && !vc) {
|
|
968
|
-
throw new Error(messages.
|
|
957
|
+
throw new Error(messages.missingPassport[locale]);
|
|
969
958
|
}
|
|
970
959
|
|
|
971
960
|
// Get user passport from vc
|
|
@@ -1020,6 +1009,8 @@ module.exports = {
|
|
|
1020
1009
|
provider,
|
|
1021
1010
|
// request.context.store.connectedWallet
|
|
1022
1011
|
walletOS: request.context.didwallet.os,
|
|
1012
|
+
emailVerified: user.emailVerified,
|
|
1013
|
+
phoneVerified: user.phoneVerified,
|
|
1023
1014
|
},
|
|
1024
1015
|
{ ...sessionConfig, didConnectVersion: getDidConnectVersion(request) }
|
|
1025
1016
|
);
|
|
@@ -1039,7 +1030,7 @@ module.exports = {
|
|
|
1039
1030
|
supervised: true,
|
|
1040
1031
|
};
|
|
1041
1032
|
},
|
|
1042
|
-
onConnect: async ({ node, request, userDid, locale,
|
|
1033
|
+
onConnect: async ({ node, request, userDid, locale, previousUserDid }) => {
|
|
1043
1034
|
const translations = {
|
|
1044
1035
|
en: {
|
|
1045
1036
|
notFound: "Couldn't find account information.",
|
|
@@ -1063,7 +1054,6 @@ module.exports = {
|
|
|
1063
1054
|
throw new Error(t('alreadyMainAccount', locale, { did: userDid }));
|
|
1064
1055
|
}
|
|
1065
1056
|
|
|
1066
|
-
const config = await request.getServiceConfig(NODE_SERVICES.AUTH, { componentId });
|
|
1067
1057
|
const oauthUser = await node.getUser({
|
|
1068
1058
|
teamDid,
|
|
1069
1059
|
user: {
|
|
@@ -1101,12 +1091,11 @@ module.exports = {
|
|
|
1101
1091
|
}
|
|
1102
1092
|
}
|
|
1103
1093
|
|
|
1104
|
-
const profileFields = get(config, 'profileFields');
|
|
1105
1094
|
const claims = {
|
|
1106
1095
|
profile: {
|
|
1107
1096
|
type: 'profile',
|
|
1108
1097
|
description: messages.description[locale],
|
|
1109
|
-
items:
|
|
1098
|
+
items: ['fullName', 'avatar'],
|
|
1110
1099
|
},
|
|
1111
1100
|
};
|
|
1112
1101
|
|
|
@@ -1163,6 +1152,8 @@ module.exports = {
|
|
|
1163
1152
|
avatar: bindUser?.avatar,
|
|
1164
1153
|
inviter: bindUser?.inviter,
|
|
1165
1154
|
generation: bindUser?.generation,
|
|
1155
|
+
emailVerified: bindUser?.emailVerified,
|
|
1156
|
+
phoneVerified: bindUser?.phoneVerified,
|
|
1166
1157
|
});
|
|
1167
1158
|
const currentTime = new Date().toISOString();
|
|
1168
1159
|
|
|
@@ -1283,7 +1274,7 @@ module.exports = {
|
|
|
1283
1274
|
return {
|
|
1284
1275
|
type: 'verifiableCredential',
|
|
1285
1276
|
description: messages.requestPassport[locale],
|
|
1286
|
-
item:
|
|
1277
|
+
item: PASSPORT_VC_TYPES,
|
|
1287
1278
|
trustedIssuers,
|
|
1288
1279
|
optional: false,
|
|
1289
1280
|
claimUrl: getPassportClaimUrl(baseUrl),
|
|
@@ -1301,7 +1292,7 @@ module.exports = {
|
|
|
1301
1292
|
// Get passport vc
|
|
1302
1293
|
const vc = await getPassportVc({ blocklet, appId, claims, challenge, locale });
|
|
1303
1294
|
if (!vc) {
|
|
1304
|
-
throw new Error(messages.
|
|
1295
|
+
throw new Error(messages.missingPassport[locale]);
|
|
1305
1296
|
}
|
|
1306
1297
|
|
|
1307
1298
|
const role = await getRoleFromVC({ vc, appId, node, locale, blocklet, teamDid });
|
|
@@ -1327,6 +1318,4 @@ module.exports = {
|
|
|
1327
1318
|
utils: {
|
|
1328
1319
|
checkAppOwner,
|
|
1329
1320
|
},
|
|
1330
|
-
canUseProfileUrl,
|
|
1331
|
-
getProfileItems,
|
|
1332
1321
|
};
|
package/api/libs/connect/v1.js
CHANGED
|
@@ -7,7 +7,7 @@ const getBlockletInfo = require('@blocklet/meta/lib/info');
|
|
|
7
7
|
const WalletHandlers = require('@blocklet/sdk/lib/wallet-handler');
|
|
8
8
|
const { getDelegation } = require('@blocklet/sdk/lib/connect/shared');
|
|
9
9
|
const { sendToUser, sendToRelay } = require('@blocklet/sdk/lib/util/send-notification');
|
|
10
|
-
const { WELLKNOWN_SERVICE_PATH_PREFIX
|
|
10
|
+
const { WELLKNOWN_SERVICE_PATH_PREFIX } = require('@abtnode/constant');
|
|
11
11
|
const DynamicStorage = require('@abtnode/connect-storage');
|
|
12
12
|
const { fromPublicKey } = require('@ocap/wallet');
|
|
13
13
|
const { getSourceAppPid } = require('@blocklet/sdk/lib/util/login');
|
|
@@ -118,14 +118,6 @@ module.exports = (node, opts) => {
|
|
|
118
118
|
},
|
|
119
119
|
};
|
|
120
120
|
|
|
121
|
-
// backward compatible
|
|
122
|
-
const oldHandler = new WalletHandlers({
|
|
123
|
-
...handlerOpts,
|
|
124
|
-
options: {
|
|
125
|
-
prefix: `${NODE_SERVICES_PREFIX.AUTH_SERVICE}/api/did`,
|
|
126
|
-
},
|
|
127
|
-
});
|
|
128
|
-
|
|
129
121
|
const handler = new WalletHandlers({
|
|
130
122
|
...handlerOpts,
|
|
131
123
|
options: {
|
|
@@ -135,6 +127,6 @@ module.exports = (node, opts) => {
|
|
|
135
127
|
|
|
136
128
|
return {
|
|
137
129
|
authenticator,
|
|
138
|
-
handlers: [handler
|
|
130
|
+
handlers: [handler],
|
|
139
131
|
};
|
|
140
132
|
};
|
package/api/libs/email.js
CHANGED
|
@@ -12,7 +12,7 @@ const schemaEmail = Joi.string().email().required();
|
|
|
12
12
|
|
|
13
13
|
const validateEmail = schemaEmail.validateAsync.bind(schemaEmail);
|
|
14
14
|
|
|
15
|
-
async function sendEmail(receiver, notification, { teamDid, node, locale, unsubscribeToken, userInfo = {} }) {
|
|
15
|
+
async function sendEmail(receiver, notification, { teamDid, node, locale, unsubscribeToken = '', userInfo = {} }) {
|
|
16
16
|
if (!receiver) {
|
|
17
17
|
throw new Error('receiver is required');
|
|
18
18
|
}
|
package/api/libs/jwt.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
const jwt = require('jsonwebtoken');
|
|
3
3
|
const { createAuthToken, messages } = require('@abtnode/auth/lib/auth');
|
|
4
4
|
const { LOGIN_PROVIDER } = require('@blocklet/constant');
|
|
5
|
+
const { decodeKycStatus, encodeKycStatus } = require('@blocklet/sdk/lib/util/login');
|
|
5
6
|
|
|
6
7
|
const getUser = async (node, teamDid, userDid) => {
|
|
7
8
|
const user = await node.getUserByDid({ teamDid, userDid });
|
|
@@ -18,7 +19,18 @@ const initJwt = (node, options) => {
|
|
|
18
19
|
|
|
19
20
|
const createSessionToken = (
|
|
20
21
|
did,
|
|
21
|
-
{
|
|
22
|
+
{
|
|
23
|
+
role,
|
|
24
|
+
secret,
|
|
25
|
+
passport,
|
|
26
|
+
expiresIn,
|
|
27
|
+
tokenType,
|
|
28
|
+
fullName,
|
|
29
|
+
provider = LOGIN_PROVIDER.WALLET,
|
|
30
|
+
walletOS,
|
|
31
|
+
emailVerified = false,
|
|
32
|
+
phoneVerified = false,
|
|
33
|
+
}
|
|
22
34
|
) =>
|
|
23
35
|
createAuthToken({
|
|
24
36
|
did,
|
|
@@ -30,6 +42,7 @@ const initJwt = (node, options) => {
|
|
|
30
42
|
fullName,
|
|
31
43
|
provider,
|
|
32
44
|
walletOS,
|
|
45
|
+
kyc: encodeKycStatus(emailVerified, phoneVerified),
|
|
33
46
|
});
|
|
34
47
|
|
|
35
48
|
const verifySessionToken = (token, secret, { checkFromDb, teamDid, checkToken } = {}) =>
|
|
@@ -48,7 +61,7 @@ const initJwt = (node, options) => {
|
|
|
48
61
|
}
|
|
49
62
|
}
|
|
50
63
|
|
|
51
|
-
const { did, role, passport, fullName, provider = LOGIN_PROVIDER.WALLET, walletOS } = decoded;
|
|
64
|
+
const { did, role, passport, fullName, provider = LOGIN_PROVIDER.WALLET, walletOS, kyc = 0 } = decoded;
|
|
52
65
|
let user;
|
|
53
66
|
if (!did) {
|
|
54
67
|
return reject(new Error('Invalid jwt token: invalid did'));
|
|
@@ -81,8 +94,9 @@ const initJwt = (node, options) => {
|
|
|
81
94
|
user.passport = passport;
|
|
82
95
|
user.provider = provider;
|
|
83
96
|
user.walletOS = walletOS;
|
|
97
|
+
user.kyc = encodeKycStatus(user.emailVerified, user.phoneVerified);
|
|
84
98
|
} else {
|
|
85
|
-
user = { did, role, passport, fullName, provider, walletOS };
|
|
99
|
+
user = Object.assign({ did, role, passport, fullName, provider, walletOS, kyc }, decodeKycStatus(kyc));
|
|
86
100
|
}
|
|
87
101
|
|
|
88
102
|
return resolve(user);
|