@abtnode/blocklet-services 1.16.32-beta-4d47ae7f → 1.16.32-beta-17be26d7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (300) hide show
  1. package/api/index.js +9 -8
  2. package/api/libs/auth/index.js +2 -0
  3. package/api/libs/auth/utils.js +4 -1
  4. package/api/libs/connect/session.js +86 -97
  5. package/api/libs/connect/v1.js +2 -10
  6. package/api/libs/email.js +1 -1
  7. package/api/libs/jwt.js +17 -3
  8. package/api/libs/kyc.js +213 -0
  9. package/api/routes/federated.js +37 -4
  10. package/api/routes/oauth.js +65 -7
  11. package/api/routes/openapi.js +12 -21
  12. package/api/routes/opencomponent.js +12 -19
  13. package/api/routes/openembed.js +15 -26
  14. package/api/routes/user-session.js +2 -0
  15. package/api/routes/user.js +17 -2
  16. package/api/services/analytics/index.js +21 -24
  17. package/api/services/auth/connect/invite.js +38 -24
  18. package/api/services/auth/connect/issue-kyc.js +58 -0
  19. package/api/services/auth/connect/login.js +1 -0
  20. package/api/services/auth/connect/update-kyc.js +82 -0
  21. package/api/services/auth/index.js +34 -10
  22. package/api/services/auth/passport.js +11 -14
  23. package/api/services/auth/session.js +196 -197
  24. package/api/services/kyc/index.js +92 -0
  25. package/api/services/notification/index.js +6 -16
  26. package/api/services/relay/index.js +3 -7
  27. package/api/services/studio/index.js +62 -65
  28. package/api/socket/channel/did.js +1 -0
  29. package/api/util/get-static-service-config.js +2 -10
  30. package/dist/assets/{Add-D8_0U-mi.js → Add-DPWETbuH.js} +1 -1
  31. package/dist/assets/Alert-DDr4PUmN.js +1 -0
  32. package/dist/assets/{ArrowDropDown-exkF-BIK.js → ArrowDropDown-BCZ8iqaM.js} +1 -1
  33. package/dist/assets/Avatar-Der2Q3Zi.js +1 -0
  34. package/dist/assets/{ButtonGroup-CTrZ2Hyv.js → ButtonGroup-zMm3edlK.js} +1 -1
  35. package/dist/assets/{CheckCircle-BNxyw6NJ.js → CheckCircle-BfztTFob.js} +1 -1
  36. package/dist/assets/ChevronLeft-CrTHRIqK.js +1 -0
  37. package/dist/assets/{ChevronRight-DBpo88DV.js → ChevronRight-CIt5KDbd.js} +1 -1
  38. package/dist/assets/{Close-DgxsFA7q.js → Close-CgA7Qef8.js} +1 -1
  39. package/dist/assets/{CloseOutlined-CN4iKY7n.js → CloseOutlined-OBzuC30j.js} +1 -1
  40. package/dist/assets/{Delete-BaSq9RZZ.js → Delete-DVYTl7-n.js} +1 -1
  41. package/dist/assets/{DeleteOutline-Du2BPdlg.js → DeleteOutline-DKoxIRL9.js} +1 -1
  42. package/dist/assets/DialogContentText-BnQAOkxN.js +1 -0
  43. package/dist/assets/{Done-BG-Fw8ts.js → Done-D1_3yhtX.js} +1 -1
  44. package/dist/assets/{Download-C1y29u9K.js → Download-CvngcFRX.js} +1 -1
  45. package/dist/assets/{Edit-u2-N8rQN.js → Edit-DQ3aLTS3.js} +1 -1
  46. package/dist/assets/{EditIcon-B2Y7T-CN.js → EditIcon-C5DCIJQ3.js} +1 -1
  47. package/dist/assets/{Error-B1K0WhCp.js → Error-DOhq8cCM.js} +1 -1
  48. package/dist/assets/{ExpandMore-DBQIHjkB.js → ExpandMore-BgcTT2Bb.js} +1 -1
  49. package/dist/assets/FormControl-D00yHDcj.js +1 -0
  50. package/dist/assets/FormControlLabel-BJXWJJky.js +1 -0
  51. package/dist/assets/FormGroup-CBgybl1l.js +1 -0
  52. package/dist/assets/{Google-CvB2nYH_.js → Google-Be2TlnTX.js} +1 -1
  53. package/dist/assets/{Hidden-DJwWGZh0.js → Hidden-Bg6BPxEd.js} +1 -1
  54. package/dist/assets/{InfoOutlined-BIY-Lnxg.js → InfoOutlined-BxTwuqiu.js} +1 -1
  55. package/dist/assets/{InputAdornment-VVruavKc.js → InputAdornment-BGOXKboF.js} +1 -1
  56. package/dist/assets/{InputLabel-3M9sMlBq.js → InputLabel-BaHBEVm2.js} +1 -1
  57. package/dist/assets/{LastPage-CBInTPpp.js → LastPage-DyrTuTrl.js} +1 -1
  58. package/dist/assets/{Launch-Dhq-grBI.js → Launch-CNWKbDVj.js} +1 -1
  59. package/dist/assets/{LaunchOutlined-DnkKRXxH.js → LaunchOutlined-BuQ3n0Nq.js} +1 -1
  60. package/dist/assets/{Link-Cpnh7s1v.js → Link-CiVKLn7B.js} +1 -1
  61. package/dist/assets/{ListItemText-CHjUage1.js → ListItemText-BW_owdy0.js} +1 -1
  62. package/dist/assets/{LoadingButton-C47nsxMx.js → LoadingButton-AM-IIW_5.js} +1 -1
  63. package/dist/assets/{LockIcon-CoUaWmH-.js → LockIcon-0vWjHODV.js} +1 -1
  64. package/dist/assets/{Loop-CbcENVkw.js → Loop-C8sLBH67.js} +1 -1
  65. package/dist/assets/{MoreHoriz-B4gnOmnB.js → MoreHoriz-i1hLrklo.js} +1 -1
  66. package/dist/assets/{MoreVert-CBWkVJTE.js → MoreVert-D_g6Th6c.js} +1 -1
  67. package/dist/assets/{OpenInNew-svkkbJCn.js → OpenInNew-DBNjDxil.js} +1 -1
  68. package/dist/assets/{Pagination-BBwBFjSJ.js → Pagination-DLYy7jWI.js} +2 -2
  69. package/dist/assets/{PlayArrow-D-mvqfoj.js → PlayArrow-ywjbMR8A.js} +1 -1
  70. package/dist/assets/{QuestionMarkCircle-Duxt-AlB.js → QuestionMarkCircle-UZOXHzIe.js} +1 -1
  71. package/dist/assets/{RadioGroup-C4DI71vM.js → RadioGroup-BOq5mI1A.js} +1 -1
  72. package/dist/assets/{Search-BOxcXluh.js → Search-Cm2FDsnl.js} +1 -1
  73. package/dist/assets/{Select-drnrjZt8.js → Select-_ZzhxUOz.js} +2 -2
  74. package/dist/assets/{ServerLogo-CxVp5JLf.js → ServerLogo-DeFJVAh8.js} +1 -1
  75. package/dist/assets/{Skeleton-YurB3EC5.js → Skeleton-D6pzHOGJ.js} +4 -4
  76. package/dist/assets/{Slider-BX1l_Lvj.js → Slider-ZYL8jZ1U.js} +1 -1
  77. package/dist/assets/Stack-DuNNAX-1.js +1 -0
  78. package/dist/assets/{Stepper-UV_DHoEg.js → Stepper-DJcNoyk4.js} +1 -1
  79. package/dist/assets/TextField-DvTYZ6EA.js +1 -0
  80. package/dist/assets/Toolbar-DbekG5v-.js +1 -0
  81. package/dist/assets/ViewColumn-BOqfI3PF.js +1 -0
  82. package/dist/assets/{ViewList-Bwkry3LO.js → ViewList-DloAt_wk.js} +1 -1
  83. package/dist/assets/access-control-Coh2AROp.js +13 -0
  84. package/dist/assets/{actions-5mXSkQB4.js → actions-DU4pTpmF.js} +1 -1
  85. package/dist/assets/{add-component-core-DFH5qH7x.js → add-component-core-DT8eSr6D.js} +61 -61
  86. package/dist/assets/add-resource-CSMNGPH3.js +1 -0
  87. package/dist/assets/{addon-CUxwPHa_.js → addon-DImOcoyp.js} +1 -1
  88. package/dist/assets/{analytics-B29460Yu.js → analytics-CdJi4q2Q.js} +7 -7
  89. package/dist/assets/api-DUETbHv8.js +1 -0
  90. package/dist/assets/ar-BywPGmOa.js +1 -0
  91. package/dist/assets/ar-cd9W8CrI.js +1 -0
  92. package/dist/assets/audit-logs-Bf2mKt3i.js +58 -0
  93. package/dist/assets/{button-BqgSoT0h.js → button-LdgYe-Yo.js} +1 -1
  94. package/dist/assets/{click-to-copy-CM2U6JEg.js → click-to-copy-GLcS-PQh.js} +1 -1
  95. package/dist/assets/{complete-DaiPBjLS.js → complete-d1PDQlj9.js} +1 -1
  96. package/dist/assets/component-Ny_sGfYr.js +768 -0
  97. package/dist/assets/{config-CxG4Kz4G.js → config-CFU2n19a.js} +2 -2
  98. package/dist/assets/{config-BygYwcXq.js → config-CpPqNxWJ.js} +1 -1
  99. package/dist/assets/{config-navigation-Rsc7sQGs.js → config-navigation-BQEWPLSH.js} +2 -2
  100. package/dist/assets/confirm-BdJlZzQ-.js +7 -0
  101. package/dist/assets/{connect-B87FT6ev.js → connect-BDR3XUNJ.js} +1 -1
  102. package/dist/assets/{connect-26mFy5d9.js → connect-ndruP8fv.js} +1 -1
  103. package/dist/assets/connect-to-D6gkq_5F.js +54 -0
  104. package/dist/assets/{content-layout-B7X0Mv3n.js → content-layout-9pObqqwC.js} +1 -1
  105. package/dist/assets/{dashboard-BrV_SESr.js → dashboard-Clr7sJbb.js} +4 -4
  106. package/dist/assets/de-DS4XAN75.js +1 -0
  107. package/dist/assets/{de-9vHBMa7b.js → de-qs3PjT55.js} +1 -1
  108. package/dist/assets/{did-address-BWnma-3-.js → did-address-DNmiCCjI.js} +1 -1
  109. package/dist/assets/domain-BM3Ias2K.js +9 -0
  110. package/dist/assets/{domain-list-wgNQeEgv.js → domain-list-BdKqoNlW.js} +2 -2
  111. package/dist/assets/email-03xGEqer.js +9 -0
  112. package/dist/assets/es-DXb9xB6c.js +1 -0
  113. package/dist/assets/es-XT3Dd0hc.js +1 -0
  114. package/dist/assets/{exchange-passport-BZ8Q-G3h.js → exchange-passport-BwiQ670F.js} +1 -1
  115. package/dist/assets/{fallback-C5E1lZAR.js → fallback-BLJkxLTK.js} +1 -1
  116. package/dist/assets/format-error-C43xGCjC.js +2 -0
  117. package/dist/assets/fr-C5TQA9s1.js +1 -0
  118. package/dist/assets/{fr-C5fh5fdm.js → fr-CMgZc3LR.js} +1 -1
  119. package/dist/assets/{fuel-XF4sXoDA.js → fuel-C7otG6Kf.js} +1 -1
  120. package/dist/assets/{fullpage-BOyZgu9A.js → fullpage-C4Et_NyD.js} +1 -1
  121. package/dist/assets/hi-C_Mli2FO.js +1 -0
  122. package/dist/assets/hi-Ch52Lky6.js +1 -0
  123. package/dist/assets/{home-Dajv5NTd.js → home-CZCCRVbe.js} +1 -1
  124. package/dist/assets/id-BkncNzMh.js +1 -0
  125. package/dist/assets/id-_x67Rh2B.js +1 -0
  126. package/dist/assets/{iframe-CmugPIuF.js → iframe-CPKiwkND.js} +1 -1
  127. package/dist/assets/index-AgTn3eU4.js +68 -0
  128. package/dist/assets/{index-DHNVLiI8.js → index-B3ThwVSS.js} +1 -1
  129. package/dist/assets/{index-BRJLJSjg.js → index-BCMjvLku.js} +2 -2
  130. package/dist/assets/{index-CrurRDDC.js → index-BK9kuqs5.js} +1 -1
  131. package/dist/assets/index-BRnCFYx3.js +262 -0
  132. package/dist/assets/{index-Dcphtm5y.js → index-BWVDn9BP.js} +1 -1
  133. package/dist/assets/{index-DfZjT3WA.js → index-BaC4EhQh.js} +212 -121
  134. package/dist/assets/index-Bc3FFnWG.js +126 -0
  135. package/dist/assets/{index-BtQK2llU.js → index-BlvJrvQX.js} +2 -2
  136. package/dist/assets/{index-CTFB4nHV.js → index-BrFlqDrV.js} +3 -3
  137. package/dist/assets/{index-BrcKk7u6.js → index-BzY4clAs.js} +1 -1
  138. package/dist/assets/{index-CFmNTsQh.js → index-CD6yQnY4.js} +1 -1
  139. package/dist/assets/{index-BvZ1bsPZ.js → index-CFpdZL6w.js} +5 -5
  140. package/dist/assets/{index-UKHQeYs5.js → index-CH2n2mOS.js} +1 -1
  141. package/dist/assets/index-CT70Tuv9.js +329 -0
  142. package/dist/assets/{index-BisUmH-h.js → index-CTil0VJz.js} +1 -1
  143. package/dist/assets/{index-C0qYe9TG.js → index-CWjTgh2V.js} +1 -1
  144. package/dist/assets/{index-D5lkEFWM.js → index-CbBjirNE.js} +1 -1
  145. package/dist/assets/{index-Ca5y7O4k.js → index-Cfnr_7cH.js} +12 -12
  146. package/dist/assets/{index-DPyKucXe.js → index-ChWrF7R7.js} +1 -1
  147. package/dist/assets/{index-Cixwi4BX.js → index-CzxDEhmG.js} +1 -1
  148. package/dist/assets/index-D9e3uQkW.js +4 -0
  149. package/dist/assets/{index-TlMkikTm.js → index-DPXmNWqb.js} +1 -1
  150. package/dist/assets/{index-hv_yaUi2.js → index-DR40cJFL.js} +4 -4
  151. package/dist/assets/{index-D0ZBFe_v.js → index-DiOkeCOc.js} +12 -12
  152. package/dist/assets/{index-DCkU-F0r.js → index-Dp6zROo4.js} +1 -1
  153. package/dist/assets/{index-p81jbN_h.js → index-Ez2y1Lea.js} +1 -1
  154. package/dist/assets/{index-C2sin8wt.js → index-TwQfcdR0.js} +1 -1
  155. package/dist/assets/{index-BK4259Qj.js → index-hkkOggLS.js} +1 -1
  156. package/dist/assets/{index-BiafpQ0u.js → index-lVfYf5Oq.js} +40 -40
  157. package/dist/assets/{index-BtQOF6n3.js → index-s95vTNww.js} +1 -1
  158. package/dist/assets/{index.es-w-0rtBPs.js → index.es-CkGqU4MQ.js} +1 -1
  159. package/dist/assets/index.esm-8yCk0S5h.js +1 -0
  160. package/dist/assets/{invitation-KAlNPJe6.js → invitation-DAGy7I2M.js} +1 -1
  161. package/dist/assets/{invite-C_RF0Rm2.js → invite-06pBNgrg.js} +1 -1
  162. package/dist/assets/{issue-passport-DM7CKvcB.js → issue-passport-CbtgsLgQ.js} +1 -1
  163. package/dist/assets/item-B0XIEv1j.js +1 -0
  164. package/dist/assets/ja-BemsOTjE.js +1 -0
  165. package/dist/assets/ja-j9_7sWtG.js +1 -0
  166. package/dist/assets/{jss-plugin-props-sort.esm-BzROyw1n.js → jss-plugin-props-sort.esm-D4wv_NcC.js} +1 -1
  167. package/dist/assets/ko-BcDVaiV3.js +1 -0
  168. package/dist/assets/ko-CqkhhVdi.js +1 -0
  169. package/dist/assets/{launch-result-message-CIfX9Pg1.js → launch-result-message-BGkFHBr0.js} +1 -1
  170. package/dist/assets/{layout-Bb2LZLxa.js → layout-C1fJ0PwQ.js} +2 -2
  171. package/dist/assets/{list-header-BDhQIu5L.js → list-header-D2TsmXsU.js} +1 -1
  172. package/dist/assets/localization-IrbI0TJr.js +1 -0
  173. package/dist/assets/{log-o0iKO5dx.js → log-Bx1CDJfR.js} +1 -1
  174. package/dist/assets/{login-B9UvusG-.js → login-Ci8kprd2.js} +1 -1
  175. package/dist/assets/{login-oauth-callback-cZ3oa4a_.js → login-oauth-callback-OcVe-Pko.js} +1 -1
  176. package/dist/assets/logo-uploader-DPtvNrwp.js +122 -0
  177. package/dist/assets/lost-passport-DQYzD5oM.js +168 -0
  178. package/dist/assets/{lottie-DsjCdNh-.js → lottie-Dtcij0yx.js} +1 -1
  179. package/dist/assets/notifications-u_yxMKF9.js +62 -0
  180. package/dist/assets/{open-window-B5RcEIrm.js → open-window-Ca8SnnJR.js} +1 -1
  181. package/dist/assets/overview-hyt-Fv0L.js +12 -0
  182. package/dist/assets/{page-header-BvuGyCDw.js → page-header-DZBo2jY4.js} +1 -1
  183. package/dist/assets/{permission-BuA9Zt4q.js → permission-DDD12SuE.js} +1 -1
  184. package/dist/assets/{preferences-BzcjmMUC.js → preferences-BzxjYd2D.js} +1 -1
  185. package/dist/assets/pt-DZmF_qcN.js +1 -0
  186. package/dist/assets/pt-NjuvVfFo.js +1 -0
  187. package/dist/assets/publish-resource-BL3ifBGp.js +1 -0
  188. package/dist/assets/react-iXxw1Yhu.js +57 -0
  189. package/dist/assets/{redux-BDPBPXLM.js → redux-Bma4eNss.js} +1 -1
  190. package/dist/assets/resource-dialog-DhmviK8K.js +57 -0
  191. package/dist/assets/ru-BFNdjdAO.js +1 -0
  192. package/dist/assets/ru-BsFEd75u.js +1 -0
  193. package/dist/assets/sdk-B37oViy1.js +1 -0
  194. package/dist/assets/{selector-DktPytoX.js → selector-B8IAFODK.js} +3 -3
  195. package/dist/assets/session-D3mS3Gz5.js +1 -0
  196. package/dist/assets/setup-TXTEwwLA.js +19 -0
  197. package/dist/assets/{shorten-label-3owfLRzi.js → shorten-label-DWH-tsmz.js} +1 -1
  198. package/dist/assets/{slicedToArray-CQG0j1sa.js → slicedToArray-Doa8i3Sy.js} +2 -2
  199. package/dist/assets/{spaces-DDj9ynWl.js → spaces-DPfrZKXe.js} +1 -1
  200. package/dist/assets/{start-DCKDZC67.js → start-DwEZv43D.js} +1 -1
  201. package/dist/assets/{step-actions-CoJc8417.js → step-actions-B1vsf_QO.js} +1 -1
  202. package/dist/assets/{studio-B_0UB40R.js → studio-CTK5QQPt.js} +1 -1
  203. package/dist/assets/{switch-control-Bun_5Zkk.js → switch-control-DJhTvGtn.js} +1 -1
  204. package/dist/assets/th-B61cOYck.js +1 -0
  205. package/dist/assets/th-C7TEM40B.js +1 -0
  206. package/dist/assets/{toUpper-Bf_TQKK7.js → toUpper-Bff1Q0mA.js} +1 -1
  207. package/dist/assets/{transfer-C7Cxyvnx.js → transfer-IRhzEeuE.js} +1 -1
  208. package/dist/assets/{uniqBy-BqI7ffNX.js → uniqBy-DIeGY4K_.js} +1 -1
  209. package/dist/assets/{unsubscribe-B-iaO9gM.js → unsubscribe-CwygyLJZ.js} +1 -1
  210. package/dist/assets/{url-join-BoNn2Qh7.js → url-join-D5TK65dM.js} +1 -1
  211. package/dist/assets/{use-blocklet-info-for-connect-did-spaces-CfK0RcTD.js → use-blocklet-info-for-connect-did-spaces-DaNxIRBj.js} +1 -1
  212. package/dist/assets/{use-mobile-C19pzcVe.js → use-mobile-BA_cO1yG.js} +1 -1
  213. package/dist/assets/{useAsync-Ca_M5Jhn.js → useAsync-Bl2lmnoD.js} +1 -1
  214. package/dist/assets/{useFormControl-Cs3LGXJe.js → useFormControl-CAWQrhew.js} +1 -1
  215. package/dist/assets/{useLocalStorage-3-rj5S6B.js → useLocalStorage-DkK4fk62.js} +1 -1
  216. package/dist/assets/{useSetState-BTR-3GfC.js → useSetState-OuMAH4bG.js} +1 -1
  217. package/dist/assets/useSlot-nO86v-Bn.js +1 -0
  218. package/dist/assets/{useSlotProps-CCXsWmb3.js → useSlotProps-B8lkbwkT.js} +1 -1
  219. package/dist/assets/{useThemeProps-BjkDmxHT.js → useThemeProps-CIT7yB5m.js} +1 -1
  220. package/dist/assets/user-center-BEb-hcxI.js +1 -0
  221. package/dist/assets/user-sessions-D_s7CT2k.js +1 -0
  222. package/dist/assets/{util-DBNeRhAr.js → util-znUxW1sG.js} +1 -1
  223. package/dist/assets/vi-B884zOLu.js +1 -0
  224. package/dist/assets/vi-C1X-AoyG.js +1 -0
  225. package/dist/assets/wrap-locale-BjkpLOO0.js +1 -0
  226. package/dist/assets/zh-DjEnl7LY.js +1 -0
  227. package/dist/assets/zh-kNAPjCk5.js +2 -0
  228. package/dist/assets/zh-tw-Bn1Pkz9A.js +1 -0
  229. package/dist/assets/zh-tw-DSZuinRu.js +1 -0
  230. package/dist/index.html +1 -1
  231. package/dist/service-worker.js +1 -1
  232. package/package.json +26 -25
  233. package/api/util/constants.js +0 -10
  234. package/dist/assets/AddBox-BpwHbwbG.js +0 -1
  235. package/dist/assets/Alert-Dlco0B3L.js +0 -1
  236. package/dist/assets/Avatar-B1SFM1MR.js +0 -1
  237. package/dist/assets/FilterList-DumRQ8ls.js +0 -26
  238. package/dist/assets/FormControl-CeSJJZgZ.js +0 -1
  239. package/dist/assets/FormControlLabel-CpH9LTeH.js +0 -1
  240. package/dist/assets/FormGroup-B0Xdxgiy.js +0 -1
  241. package/dist/assets/TextField-D_Jtjg13.js +0 -1
  242. package/dist/assets/Toolbar-D7_EWzTj.js +0 -1
  243. package/dist/assets/access-control-YUBGali8.js +0 -13
  244. package/dist/assets/add-resource-BJ9u32jP.js +0 -1
  245. package/dist/assets/api-DbvHYaVa.js +0 -1
  246. package/dist/assets/ar-BSACs5SN.js +0 -1
  247. package/dist/assets/ar-lTVP4T3d.js +0 -1
  248. package/dist/assets/audit-logs-C1AOwGce.js +0 -58
  249. package/dist/assets/component-npmbPVSM.js +0 -464
  250. package/dist/assets/confirm-3b8GTIgU.js +0 -7
  251. package/dist/assets/connect-to-B0Td9yUD.js +0 -54
  252. package/dist/assets/de-B3TxaybY.js +0 -1
  253. package/dist/assets/domain-CkCbH8sj.js +0 -9
  254. package/dist/assets/es-BY0KMFme.js +0 -1
  255. package/dist/assets/es-Bk9E9Gbf.js +0 -1
  256. package/dist/assets/format-error-BVI56bJg.js +0 -2
  257. package/dist/assets/fr-BiVZLeXU.js +0 -1
  258. package/dist/assets/hi-B_LrkIOS.js +0 -1
  259. package/dist/assets/hi-HiGtGtUs.js +0 -1
  260. package/dist/assets/id-CirrqXGd.js +0 -1
  261. package/dist/assets/id-jBXPD1he.js +0 -1
  262. package/dist/assets/index-2xySyQ5i.js +0 -262
  263. package/dist/assets/index-B0NvcpjT.js +0 -1
  264. package/dist/assets/index-B7Un-ZeO.js +0 -68
  265. package/dist/assets/index-BP53WpUP.js +0 -4
  266. package/dist/assets/index-C1Puqx4M.js +0 -304
  267. package/dist/assets/index-CLQi4cVY.js +0 -126
  268. package/dist/assets/index.esm-CptJw3C8.js +0 -1
  269. package/dist/assets/item-DIkrlQMP.js +0 -1
  270. package/dist/assets/ja-BOs7uPqI.js +0 -1
  271. package/dist/assets/ja-DKiHQ6DE.js +0 -1
  272. package/dist/assets/ko-BBYyf1yM.js +0 -1
  273. package/dist/assets/ko-D1G4UvNg.js +0 -1
  274. package/dist/assets/localization-V0WRiXKC.js +0 -1
  275. package/dist/assets/logo-uploader-D4yqBa_O.js +0 -122
  276. package/dist/assets/lost-passport-soFqeEb7.js +0 -168
  277. package/dist/assets/notifications-B9Mu8Fxb.js +0 -62
  278. package/dist/assets/overview-CFbnZdV0.js +0 -12
  279. package/dist/assets/pt-CcFeyma6.js +0 -1
  280. package/dist/assets/pt-DI2MIkSi.js +0 -1
  281. package/dist/assets/publish-resource-DwhFCZXw.js +0 -1
  282. package/dist/assets/react-CwUjkFxY.js +0 -57
  283. package/dist/assets/resource-dialog-BBzXGjTp.js +0 -57
  284. package/dist/assets/ru-B2L3CRQ4.js +0 -1
  285. package/dist/assets/ru-OymXgLUI.js +0 -1
  286. package/dist/assets/sdk-CI7TJ_xu.js +0 -1
  287. package/dist/assets/session-Cw-dytKR.js +0 -1
  288. package/dist/assets/setup-DRfpHXNv.js +0 -19
  289. package/dist/assets/th-CZbdb5PZ.js +0 -1
  290. package/dist/assets/th-CfNBHHtU.js +0 -1
  291. package/dist/assets/useSlot-C1f6ZTLt.js +0 -1
  292. package/dist/assets/user-center-BN2FDsvO.js +0 -1
  293. package/dist/assets/user-sessions-BIEmgTqD.js +0 -1
  294. package/dist/assets/vi-DbzhnofW.js +0 -1
  295. package/dist/assets/vi-DhjQx2Z1.js +0 -1
  296. package/dist/assets/wrap-locale-D7L9anic.js +0 -1
  297. package/dist/assets/zh-FO0C29Rb.js +0 -1
  298. package/dist/assets/zh-jGK5FFL0.js +0 -2
  299. package/dist/assets/zh-tw-DnmwTx49.js +0 -1
  300. 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, node, options);
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 ([NODE_SERVICES_PREFIX.AUTH_SERVICE, WELLKNOWN_SERVICE_PATH_PREFIX].some((x) => req.path.startsWith(x))) {
375
+ if (req.path.startsWith(WELLKNOWN_SERVICE_PATH_PREFIX)) {
375
376
  res.status(400).send('Bad request');
376
377
  return;
377
378
  }
@@ -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
  /**
@@ -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
- /** @type {string[]} */
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
- claims.verifiableCredential = {
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: vcTypes,
206
+ item: PASSPORT_VC_TYPES,
247
207
  trustedIssuers,
248
208
  optional: !invitedUserOnly,
249
209
  claimUrl: getPassportClaimUrl(baseUrl),
250
210
  };
251
211
  if (passportId) {
252
- claims.verifiableCredential.target = passportId;
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 || !canUseProfileUrl(request.context.didwallet)) {
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.missingCredentialClaim[locale]);
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 { did: teamDid } = await request.getBlockletInfo();
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(get(config, 'profileFields', []), request.context.didwallet);
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: vcTypes,
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.missingCredentialClaim[locale]);
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, componentId, previousUserDid }) => {
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: profileFields || ['fullName', 'avatar'],
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: vcTypes,
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.missingCredentialClaim[locale]);
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
  };
@@ -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, NODE_SERVICES_PREFIX } = require('@abtnode/constant');
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, oldHandler],
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
- { role, secret, passport, expiresIn, tokenType, fullName, provider = LOGIN_PROVIDER.WALLET, walletOS }
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);