@abtnode/blocklet-services 1.16.37-beta-20250102-115729-ae7f327e → 1.16.37-beta-20250106-134442-ea92021c

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 (334) hide show
  1. package/LICENSE +1 -1
  2. package/api/index.js +1 -0
  3. package/api/libs/auth/utils.js +33 -31
  4. package/api/libs/connect/session.js +1 -1
  5. package/api/routes/blocklet.js +1 -1
  6. package/api/routes/oauth.js +21 -111
  7. package/api/routes/user.js +9 -25
  8. package/api/services/auth/connect/receive-transfer-app-owner.js +1 -2
  9. package/api/services/auth/connect/setup.js +7 -2
  10. package/api/services/auth/connect/verify-destroy.js +3 -16
  11. package/api/services/auth/index.js +4 -0
  12. package/api/services/auth/passkey.js +31 -0
  13. package/api/services/auth/passport.js +2 -2
  14. package/api/services/notification/index.js +10 -9
  15. package/api/socket/channel/did.js +4 -3
  16. package/api/socket/util.js +1 -1
  17. package/api/util/attach-shared-utils.js +5 -4
  18. package/api/util/index.js +5 -0
  19. package/dist/assets/Add-BWCYHsqO.js +1 -0
  20. package/dist/assets/ArrowDropDown-BpEWICfl.js +1 -0
  21. package/dist/assets/CheckCircle-CwD9Ke3p.js +1 -0
  22. package/dist/assets/ChevronLeft-DSkEbRl3.js +1 -0
  23. package/dist/assets/ChevronRight-D0L8yvDK.js +1 -0
  24. package/dist/assets/DeleteOutline-CXidpj4T.js +1 -0
  25. package/dist/assets/Done-C64D3evS.js +1 -0
  26. package/dist/assets/Download-Dw32CPvU.js +1 -0
  27. package/dist/assets/EditIcon-tG6wkTV8.js +1 -0
  28. package/dist/assets/Error-DJ3gIUKv.js +1 -0
  29. package/dist/assets/{Google-BuyGXo_n.js → Google-xPNZ3SW6.js} +3 -3
  30. package/dist/assets/InfoOutlined-C68E276M.js +1 -0
  31. package/dist/assets/Launch-BGwEi50t.js +1 -0
  32. package/dist/assets/LaunchOutlined-Ca3gdurT.js +1 -0
  33. package/dist/assets/LockIcon-DkGeStY0.js +1 -0
  34. package/dist/assets/Loop-BGNTppkv.js +1 -0
  35. package/dist/assets/MoreHoriz-ByYwcz4x.js +1 -0
  36. package/dist/assets/PlayArrow-D2eSJrmH.js +1 -0
  37. package/dist/assets/QuestionMarkCircle-CRU8b9ID.js +1 -0
  38. package/dist/assets/ServerLogo-2zkqpStV.js +1 -0
  39. package/dist/assets/ViewList-3IpnvMH9.js +1 -0
  40. package/dist/assets/_createAggregator-CTc4wR3U.js +1 -0
  41. package/dist/assets/abtwallet-o1JAGJkW.png +0 -0
  42. package/dist/assets/access-control-Cc5_tP4v.js +13 -0
  43. package/dist/assets/actions-DfuRxUKW.js +1 -0
  44. package/dist/assets/add-component-core-CMZl0Aw9.js +716 -0
  45. package/dist/assets/add-resource-DNWGI5Hi.js +1 -0
  46. package/dist/assets/addon-VajLOBqQ.js +31 -0
  47. package/dist/assets/analytics-DjT9BDYe.js +47 -0
  48. package/dist/assets/android-Xe96zWxX.png +0 -0
  49. package/dist/assets/api-C7qcY4XU.js +1 -0
  50. package/dist/assets/audit-logs-DXIS1eea.js +58 -0
  51. package/dist/assets/base32-DpVKJ4W_.js +1 -0
  52. package/dist/assets/branding-DP6PFXBo.js +40 -0
  53. package/dist/assets/bundle-avatar-CzB889SV.js +1 -0
  54. package/dist/assets/button-D3f-aYWj.js +1 -0
  55. package/dist/assets/click-to-copy-oC180fIr.js +1 -0
  56. package/dist/assets/complete-Ck7c7oAE.js +45 -0
  57. package/dist/assets/{component-CkbTdshc.js → component-BZTnOYBQ.js} +89 -89
  58. package/dist/assets/config-B592SaBl.js +32 -0
  59. package/dist/assets/config-C-7B0ly9.js +1 -0
  60. package/dist/assets/{config-navigation-CghjCkdz.js → config-navigation-BVFjfkWf.js} +6 -6
  61. package/dist/assets/config-space-D5tEidjS.js +1 -0
  62. package/dist/assets/confirm-vgd_1-1V.js +7 -0
  63. package/dist/assets/connect-LMZbP6sp.js +5 -0
  64. package/dist/assets/connect-gaOu1HRw.js +1 -0
  65. package/dist/assets/connect-to-D-QS37Vn.js +1 -0
  66. package/dist/assets/{content-layout-ANaBTlDS.js → content-layout-D25Q_vVO.js} +1 -1
  67. package/dist/assets/dashboard-BgW0SYmh.js +86 -0
  68. package/dist/assets/did-address-DAnP601f.js +1 -0
  69. package/dist/assets/domain-b6cmz4S4.js +9 -0
  70. package/dist/assets/domain-list-DLXeNUEV.js +15 -0
  71. package/dist/assets/email-KHVOUytb.js +18 -0
  72. package/dist/assets/exchange-passport-Ah6Oc4Hf.js +1 -0
  73. package/dist/assets/form-text-input-f773Hgdy.js +11 -0
  74. package/dist/assets/{format-error-D2V1IlSA.js → format-error-C0Ke3VXF.js} +2 -2
  75. package/dist/assets/fuel-D2M3FXAV.js +32 -0
  76. package/dist/assets/fullpage-Dpka7-iX.js +1 -0
  77. package/dist/assets/get-safe-url-6EgCrTPK.js +1 -0
  78. package/dist/assets/get-safe-url-BBLBic7f.js +1 -0
  79. package/dist/assets/home-DYkbr7a5.js +1 -0
  80. package/dist/assets/iframe-Dh23G9Wt.js +1 -0
  81. package/dist/assets/index-8-kTmhK2.js +4 -0
  82. package/dist/assets/index-BCJq3WNv.js +5 -0
  83. package/dist/assets/{index-BSHm8cVk.js → index-BEcpBIIf.js} +2 -2
  84. package/dist/assets/index-BUoBUFo9.js +243 -0
  85. package/dist/assets/index-B_nW8jWg.js +1 -0
  86. package/dist/assets/index-BodKukbo.js +11 -0
  87. package/dist/assets/index-BxUQG_ZS.js +291 -0
  88. package/dist/assets/{index-BZXNfshl.js → index-C6UmPiZc.js} +2 -2
  89. package/dist/assets/index-CDceAH6O.js +129 -0
  90. package/dist/assets/index-CeXw2vcO.js +1 -0
  91. package/dist/assets/index-CgyFjfCK.js +1 -0
  92. package/dist/assets/index-Cp3ZCh7o.js +1 -0
  93. package/dist/assets/{index-CUC8utCb.js → index-CqdCpHy-.js} +1 -1
  94. package/dist/assets/index-Cy5HwFoQ.js +221 -0
  95. package/dist/assets/index-DPVdZRyD.js +134 -0
  96. package/dist/assets/index-DTOMtrZi.js +144 -0
  97. package/dist/assets/index-DVYdq7IA.js +1 -0
  98. package/dist/assets/{index-DUI49Z8_.js → index-DoZ2YM4T.js} +1 -1
  99. package/dist/assets/{index-BDf4kEgE.js → index-YMnfgOF9.js} +2 -2
  100. package/dist/assets/index-_s_fLZnI.js +104 -0
  101. package/dist/assets/index-f88YxSnq.js +1 -0
  102. package/dist/assets/invitation-CxB-x_xn.js +176 -0
  103. package/dist/assets/invite-DBeeLtl3.js +5 -0
  104. package/dist/assets/ios-CBDmY-ic.png +0 -0
  105. package/dist/assets/isEmail-BWNRBSAy.js +1 -0
  106. package/dist/assets/issue-passport-DDvmexL3.js +1 -0
  107. package/dist/assets/item-6MGDbiPN.js +1 -0
  108. package/dist/assets/{launch-result-message-KFpSWl3O.js → launch-result-message-CDh6C7yN.js} +2 -2
  109. package/dist/assets/layout-CNG79gdU.js +29 -0
  110. package/dist/assets/list-header-CWds6opx.js +57 -0
  111. package/dist/assets/localization--GnHWBZu.js +1 -0
  112. package/dist/assets/{log-Bq3RbJRi.js → log-BeVAiHHb.js} +9 -9
  113. package/dist/assets/login-A-Fb7Rrc.js +1 -0
  114. package/dist/assets/login-oauth-callback-CBpbmy7Y.js +1 -0
  115. package/dist/assets/logo-uploader-CC0caghQ.js +133 -0
  116. package/dist/assets/lost-passport-HU2qWAuA.js +168 -0
  117. package/dist/assets/{lottie-react.esm-C3V68SQT.js → lottie-react.esm-CHpXrEmm.js} +1 -1
  118. package/dist/assets/open-window-BvQJJhL_.js +1 -0
  119. package/dist/assets/overview-DIREa8hS.js +12 -0
  120. package/dist/assets/{page-header-DjhLNLyP.js → page-header-1PJsLh7u.js} +1 -1
  121. package/dist/assets/permission-BBg-Yh9T.js +1 -0
  122. package/dist/assets/preferences-CB5uOidv.js +1 -0
  123. package/dist/assets/publish-resource-CmcZx-V_.js +1 -0
  124. package/dist/assets/raf-schd.esm-Cxhj8umC.js +1 -0
  125. package/dist/assets/{react-beautiful-dnd.esm-X7VVnJcV.js → react-beautiful-dnd.esm-CCGMJ6tB.js} +4 -4
  126. package/dist/assets/relative-time-gSR-I79i.js +1 -0
  127. package/dist/assets/sdk-BKgHFqrA.js +1 -0
  128. package/dist/assets/session-DjolhruE.js +1 -0
  129. package/dist/assets/setup-IWaLQEGW.js +19 -0
  130. package/dist/assets/shorten-label-cn1YaOcx.js +1 -0
  131. package/dist/assets/simple-select-C05FGhNJ.js +1 -0
  132. package/dist/assets/slicedToArray-DuBRe18s.js +2 -0
  133. package/dist/assets/start-DpxK1ev8.js +187 -0
  134. package/dist/assets/step-actions-DcWKBXOu.js +31 -0
  135. package/dist/assets/studio-B_CDfqTQ.js +6 -0
  136. package/dist/assets/switch-control-VwZyV9qS.js +13 -0
  137. package/dist/assets/toUpper-CD1KHWl4.js +1 -0
  138. package/dist/assets/transfer-BjIffkrb.js +16 -0
  139. package/dist/assets/unsubscribe-BdE7c0PR.js +1 -0
  140. package/dist/assets/use-mobile-CRGhfnSw.js +1 -0
  141. package/dist/assets/useAsync-Barwm_ml.js +1 -0
  142. package/dist/assets/useAsyncRetry-VpCDo2sM.js +7 -0
  143. package/dist/assets/useLocalStorage-DTPZT3h6.js +1 -0
  144. package/dist/assets/useSetState-Crt4S51m.js +1 -0
  145. package/dist/assets/user-center-DNT8JJcs.js +202 -0
  146. package/dist/assets/util-D-lyK2FV.js +1 -0
  147. package/dist/assets/{index-B4oT57Ax.css → vendor-arcblock-DhgPdlEj.css} +1 -1
  148. package/dist/assets/vendor-arcblock-DrV4Yh4h.js +3503 -0
  149. package/dist/assets/vendor-hooks-DHHsWSqV.js +7 -0
  150. package/dist/assets/vendor-mui-core-BHQ3rDZc.js +267 -0
  151. package/dist/assets/vendor-mui-x-CYVoSAR5.js +6 -0
  152. package/dist/assets/vendor-react-D-afvo_7.js +61 -0
  153. package/dist/assets/vendor-utils-CV7RLr7b.js +11 -0
  154. package/dist/assets/wrap-locale-Brk8trIp.js +1 -0
  155. package/dist/index.html +7 -2
  156. package/dist/service-worker.js +1 -1
  157. package/package.json +41 -41
  158. package/dist/assets/Add-DoWwr2Ul.js +0 -1
  159. package/dist/assets/Alert-W6ZoTZ3g.js +0 -1
  160. package/dist/assets/ArrowDropDown-DQkl2nkF.js +0 -1
  161. package/dist/assets/Autocomplete-D-KX7tlO.js +0 -1
  162. package/dist/assets/Avatar-hKVZimRi.js +0 -1
  163. package/dist/assets/ButtonGroup-3SFP3-pq.js +0 -1
  164. package/dist/assets/CSSTransition-VHrj2IrJ.js +0 -1
  165. package/dist/assets/CheckCircle-BDJMl1SC.js +0 -1
  166. package/dist/assets/ChevronLeft-B-NWC0xt.js +0 -1
  167. package/dist/assets/ChevronRight-Ddp2NEiN.js +0 -1
  168. package/dist/assets/Clear-De-d2EF8.js +0 -1
  169. package/dist/assets/CloseOutlined-BctPwMsA.js +0 -1
  170. package/dist/assets/Delete-3M81lrPw.js +0 -1
  171. package/dist/assets/DeleteOutline-ANDKP8NK.js +0 -1
  172. package/dist/assets/DialogContentText-Dn5BO5iN.js +0 -1
  173. package/dist/assets/Done-Bhem2M06.js +0 -1
  174. package/dist/assets/Download-BPmZzvvE.js +0 -1
  175. package/dist/assets/EditIcon-D33iMvFv.js +0 -1
  176. package/dist/assets/Error-BCA7Sqlp.js +0 -1
  177. package/dist/assets/ExpandMore-5qu10-VQ.js +0 -1
  178. package/dist/assets/FormControl-OqvyHuZv.js +0 -1
  179. package/dist/assets/FormControlLabel-DOOEGsWf.js +0 -1
  180. package/dist/assets/FormGroup-CMuwdC56.js +0 -1
  181. package/dist/assets/Grid-DtUfQ3Vj.js +0 -1
  182. package/dist/assets/HelpOutline-Bmrs_0Er.js +0 -1
  183. package/dist/assets/Hidden-CUtsI_97.js +0 -1
  184. package/dist/assets/InfoOutlined-Cs_orBaQ.js +0 -1
  185. package/dist/assets/InputAdornment-BEqTI4V4.js +0 -1
  186. package/dist/assets/LastPage-Bb4DD2DL.js +0 -1
  187. package/dist/assets/Launch-DHVfRKfR.js +0 -1
  188. package/dist/assets/LaunchOutlined-Bb4OL7ma.js +0 -1
  189. package/dist/assets/Link-DVsnc_O1.js +0 -1
  190. package/dist/assets/ListItemButton-ChDufQ0D.js +0 -1
  191. package/dist/assets/ListSubheader-BH5XlJEK.js +0 -1
  192. package/dist/assets/LoadingButton-D11bbs7Z.js +0 -1
  193. package/dist/assets/LockIcon-Dxf0oSGl.js +0 -1
  194. package/dist/assets/Loop-CYBwfB9B.js +0 -1
  195. package/dist/assets/Menu-BbykPAXR.js +0 -1
  196. package/dist/assets/MoreHoriz-XHayrhxr.js +0 -1
  197. package/dist/assets/MoreVert-BO-o5JnK.js +0 -1
  198. package/dist/assets/OpenInNew-__JhP3_b.js +0 -1
  199. package/dist/assets/OutlinedInput-DYGzdilY.js +0 -2
  200. package/dist/assets/PlayArrow-l1xyNa8v.js +0 -1
  201. package/dist/assets/QuestionMarkCircle-CgS1lsZu.js +0 -1
  202. package/dist/assets/RadioGroup-D2BrBv0W.js +0 -1
  203. package/dist/assets/Search-C-_AhyGc.js +0 -1
  204. package/dist/assets/Select-DdaHDvk1.js +0 -1
  205. package/dist/assets/ServerLogo-3sWhasNo.js +0 -1
  206. package/dist/assets/Stepper-AlrTJRkZ.js +0 -1
  207. package/dist/assets/TextField-F_rhcivt.js +0 -1
  208. package/dist/assets/Toolbar-NIQ6PygD.js +0 -1
  209. package/dist/assets/ViewColumn-hY5ABDIE.js +0 -1
  210. package/dist/assets/ViewList-DTOCqN2q.js +0 -1
  211. package/dist/assets/_createAggregator-C_N0DCeP.js +0 -1
  212. package/dist/assets/access-control-4hTaCeVw.js +0 -13
  213. package/dist/assets/actions-x_23wAjB.js +0 -1
  214. package/dist/assets/add-component-core-ChNA1r63.js +0 -804
  215. package/dist/assets/add-resource-Cn0pNFEC.js +0 -1
  216. package/dist/assets/addon-Buee4n4q.js +0 -31
  217. package/dist/assets/analytics-BKlawrzh.js +0 -52
  218. package/dist/assets/api-CSS3RGWL.js +0 -1
  219. package/dist/assets/audit-logs-CZXS4N0R.js +0 -59
  220. package/dist/assets/base32-CxcE4z8e.js +0 -1
  221. package/dist/assets/branding-C1OjV7l2.js +0 -40
  222. package/dist/assets/bundle-avatar-O5LAhLys.js +0 -1
  223. package/dist/assets/button-Bk5F6Z8J.js +0 -1
  224. package/dist/assets/click-to-copy-BBJwL23k.js +0 -1
  225. package/dist/assets/complete-zUtTPZWF.js +0 -45
  226. package/dist/assets/config-B1LTpJFT.js +0 -32
  227. package/dist/assets/config-DS2yUOy5.js +0 -1
  228. package/dist/assets/config-space-Bw1lK4NV.js +0 -1
  229. package/dist/assets/confirm-ULP5BJCc.js +0 -7
  230. package/dist/assets/connect-B7eXSDIr.js +0 -1
  231. package/dist/assets/connect-iIwcK5jn.js +0 -5
  232. package/dist/assets/connect-to-AXzvKU6L.js +0 -29
  233. package/dist/assets/dashboard-DOZ7LRQI.js +0 -122
  234. package/dist/assets/deprecate-Bo7yGTJO.js +0 -1
  235. package/dist/assets/did-address-DdPH8Oii.js +0 -1
  236. package/dist/assets/domain-BPKUv94X.js +0 -9
  237. package/dist/assets/domain-list-Cc3vVMhj.js +0 -15
  238. package/dist/assets/email-RMPOCYzR.js +0 -18
  239. package/dist/assets/emotion-cache.browser.esm-XJ-XPpML.js +0 -1
  240. package/dist/assets/exchange-passport-BXag-hFz.js +0 -1
  241. package/dist/assets/fallback-C1u7ttF8.js +0 -1
  242. package/dist/assets/form-text-input-CihqUkoN.js +0 -11
  243. package/dist/assets/fuel-DYi3vbS8.js +0 -32
  244. package/dist/assets/fullpage-DRR65bg5.js +0 -1
  245. package/dist/assets/get-safe-url-BRitJXVO.js +0 -1
  246. package/dist/assets/get-safe-url-V1nDCXmu.js +0 -1
  247. package/dist/assets/home-DvWIY2vO.js +0 -1
  248. package/dist/assets/iframe-BgHkFTAs.js +0 -1
  249. package/dist/assets/index-2qT6Nx8y.js +0 -1
  250. package/dist/assets/index-6R7fU17e.js +0 -1
  251. package/dist/assets/index-B0lK7ost.js +0 -16
  252. package/dist/assets/index-B5C90-kX.js +0 -1
  253. package/dist/assets/index-BFWnlhoS.js +0 -544
  254. package/dist/assets/index-BHTgfI3J.js +0 -1413
  255. package/dist/assets/index-Bk2jPh4B.js +0 -1
  256. package/dist/assets/index-Bof7se0O.js +0 -129
  257. package/dist/assets/index-BrmO4-ZK.js +0 -5
  258. package/dist/assets/index-BuDChzu6.js +0 -1
  259. package/dist/assets/index-Bu_gkGlR.js +0 -12
  260. package/dist/assets/index-C16yDs-W.js +0 -13
  261. package/dist/assets/index-CORQxWB5.js +0 -243
  262. package/dist/assets/index-Cv5S4z7J.js +0 -1
  263. package/dist/assets/index-CyUo44rA.js +0 -102
  264. package/dist/assets/index-D-H65z2j.js +0 -11
  265. package/dist/assets/index-D2DRxJlW.js +0 -1
  266. package/dist/assets/index-DC_6kAED.js +0 -721
  267. package/dist/assets/index-DF3kd1Sh.js +0 -1
  268. package/dist/assets/index-DesHTrdZ.js +0 -134
  269. package/dist/assets/index-Dz6UVrgJ.js +0 -291
  270. package/dist/assets/index-Q-uhDp8D.js +0 -221
  271. package/dist/assets/index-TosM5wPB.js +0 -1
  272. package/dist/assets/index-Tzm7gzea.js +0 -4
  273. package/dist/assets/index-cTQLMlpc.js +0 -11
  274. package/dist/assets/index-fZw7Vpgz.js +0 -1
  275. package/dist/assets/index-foZCwT8M.css +0 -1
  276. package/dist/assets/index-hcmgeyWk.js +0 -1
  277. package/dist/assets/index-uWCiD0vp.js +0 -316
  278. package/dist/assets/index-vYhCTuA2.js +0 -1
  279. package/dist/assets/index-yHuDMvJG.js +0 -340
  280. package/dist/assets/invitation-CEnhUxqR.js +0 -176
  281. package/dist/assets/invite-Djgak5cM.js +0 -5
  282. package/dist/assets/isEmail-CVqVoLMc.js +0 -1
  283. package/dist/assets/issue-passport-OTW1CE4-.js +0 -1
  284. package/dist/assets/item-DuOVC0zG.js +0 -1
  285. package/dist/assets/jss-plugin-props-sort.esm-C1sdxDXq.js +0 -14
  286. package/dist/assets/layout-qVa0Azu2.js +0 -29
  287. package/dist/assets/list-header-BEzk1po8.js +0 -57
  288. package/dist/assets/localization-CSEYhUZ2.js +0 -1
  289. package/dist/assets/login-C3EevTE0.js +0 -1
  290. package/dist/assets/login-oauth-callback-AOtjEuqk.js +0 -1
  291. package/dist/assets/logo-uploader-BFKU96PE.js +0 -133
  292. package/dist/assets/lost-passport-Iq98nbcM.js +0 -168
  293. package/dist/assets/open-window-lc2oKdlW.js +0 -1
  294. package/dist/assets/overview-DzTYyyOK.js +0 -12
  295. package/dist/assets/permission-BZvOkDQF.js +0 -1
  296. package/dist/assets/preferences-C93eFPAg.js +0 -1
  297. package/dist/assets/publish-resource-X3eI0niL.js +0 -1
  298. package/dist/assets/purify.es-DutPtr9A.js +0 -2
  299. package/dist/assets/raf-schd.esm-Bwmb5y9p.js +0 -1
  300. package/dist/assets/refType-CEDeXbgm.js +0 -1
  301. package/dist/assets/relative-time-CTnNqlzz.js +0 -1
  302. package/dist/assets/resource-dialog-BgQL1Bby.js +0 -299
  303. package/dist/assets/sdk-DOHTCfK1.js +0 -1
  304. package/dist/assets/selector-C2hu0WUk.js +0 -48
  305. package/dist/assets/session-B2D3crc6.js +0 -1
  306. package/dist/assets/setup-CIZIzYOP.js +0 -19
  307. package/dist/assets/shorten-label-CfxSH4kN.js +0 -1
  308. package/dist/assets/simple-select-BP_h5NOM.js +0 -1
  309. package/dist/assets/slicedToArray-WKq_kWhB.js +0 -2
  310. package/dist/assets/start-Ceyr0Slk.js +0 -187
  311. package/dist/assets/step-actions-BKTyBqOr.js +0 -31
  312. package/dist/assets/studio-wrdTUHb8.js +0 -6
  313. package/dist/assets/switch-control-Bhky7auW.js +0 -13
  314. package/dist/assets/toPropertyKey-PLuKRk1e.js +0 -1
  315. package/dist/assets/toUpper-zlUBufNw.js +0 -1
  316. package/dist/assets/transfer-Bs21EL8V.js +0 -16
  317. package/dist/assets/trim-Ci8FKlWl.js +0 -1
  318. package/dist/assets/uniqBy-DX0iyhMx.js +0 -1
  319. package/dist/assets/unsubscribe-C74g_s8L.js +0 -1
  320. package/dist/assets/url-join-GUOMgSK4.js +0 -1
  321. package/dist/assets/use-mobile-C8gQQg5h.js +0 -1
  322. package/dist/assets/use-mobile-QzoRHUEw.js +0 -1
  323. package/dist/assets/useAsync-CA1s-Q3Q.js +0 -1
  324. package/dist/assets/useAsyncRetry-CC8wuBBZ.js +0 -7
  325. package/dist/assets/useFormControl--BH_DJ53.js +0 -1
  326. package/dist/assets/useLocalStorage-CvimZx-D.js +0 -1
  327. package/dist/assets/useSetState-BYl9GHuD.js +0 -1
  328. package/dist/assets/useSlot-B-WSi9Gx.js +0 -1
  329. package/dist/assets/useThemeProps-CKP9Y0ID.js +0 -1
  330. package/dist/assets/user-center-D4cWW8SV.js +0 -334
  331. package/dist/assets/util-DKzAB6dy.js +0 -1
  332. package/dist/assets/utils-DoM3o7-Q.js +0 -1
  333. package/dist/assets/visuallyHidden-Dan1xhjv.js +0 -1
  334. package/dist/assets/wrap-locale-CmUR3sB1.js +0 -1
package/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright 2018-2020 ArcBlock
1
+ Copyright 2018-2025 ArcBlock
2
2
 
3
3
  Licensed under the Apache License, Version 2.0 (the "License");
4
4
  you may not use this file except in compliance with the License.
package/api/index.js CHANGED
@@ -416,6 +416,7 @@ module.exports = function createServer(node, serverOptions = {}) {
416
416
  createConnectRelayRoutes.init(server, node, options, wsRouter);
417
417
  authRoutes.attachDidAuthHandlers(server);
418
418
  authRoutes.createPassportRoutes.init(server, node);
419
+ authRoutes.createPasskeyRoutes.init(server, node);
419
420
  authRoutes.createCommonRoutes.init(server, node);
420
421
 
421
422
  // API: gql
@@ -33,38 +33,40 @@ async function transferPassport(fromUser, toUser, { req, teamDid, node, nodeInfo
33
33
  return;
34
34
  }
35
35
 
36
- const attachments = waitPassportList.map((x) => {
37
- const vcParams = {
38
- issuerName,
39
- issuerWallet,
40
- ownerDid: toUser.did,
41
- passport: { ...pick(x, ['name', 'title', 'specVersion']), endpoint: x.endpoint || blockletInfo.appUrl },
42
- endpoint: getPassportStatusEndpoint({
43
- baseUrl: x.endpoint || blockletInfo.appUrl,
44
- userDid: toUser.did,
45
- teamDid,
46
- }),
47
- ownerProfile: {
48
- email: toUser.email,
49
- fullName: toUser.fullName,
50
- avatar: getUserAvatarUrl(x.endpoint || blockletInfo.appUrl, toUser.avatar),
51
- },
52
- preferredColor: passportColor,
53
- types: teamDid === nodeInfo.did ? [VC_TYPE_NODE_PASSPORT] : x.types,
54
- purpose: teamDid === nodeInfo.did || isEmpty(x.types) ? 'login' : 'verification',
55
- display: x.display,
56
- };
57
-
58
- const vc = createPassportVC(vcParams);
59
- return {
60
- type: 'vc',
61
- data: {
62
- credential: vc,
63
- tag: x.name,
36
+ const attachments = await Promise.all(
37
+ waitPassportList.map(async (x) => {
38
+ const vcParams = {
39
+ issuerName,
40
+ issuerWallet,
41
+ ownerDid: toUser.did,
42
+ passport: { ...pick(x, ['name', 'title', 'specVersion']), endpoint: x.endpoint || blockletInfo.appUrl },
43
+ endpoint: getPassportStatusEndpoint({
44
+ baseUrl: x.endpoint || blockletInfo.appUrl,
45
+ userDid: toUser.did,
46
+ teamDid,
47
+ }),
48
+ ownerProfile: {
49
+ email: toUser.email,
50
+ fullName: toUser.fullName,
51
+ avatar: getUserAvatarUrl(x.endpoint || blockletInfo.appUrl, toUser.avatar),
52
+ },
53
+ preferredColor: passportColor,
54
+ types: teamDid === nodeInfo.did ? [VC_TYPE_NODE_PASSPORT] : x.types,
55
+ purpose: teamDid === nodeInfo.did || isEmpty(x.types) ? 'login' : 'verification',
64
56
  display: x.display,
65
- },
66
- };
67
- });
57
+ };
58
+
59
+ const vc = await createPassportVC(vcParams);
60
+ return {
61
+ type: 'vc',
62
+ data: {
63
+ credential: vc,
64
+ tag: x.name,
65
+ display: x.display,
66
+ },
67
+ };
68
+ })
69
+ );
68
70
  const insertPassportList = attachments.map((item, index) => {
69
71
  return {
70
72
  ...createUserPassport(item.data.credential, { role: item.data.tag, display: item.data.display }),
@@ -393,7 +393,7 @@ module.exports = {
393
393
 
394
394
  const profile = claims.find((x) => x.type === 'profile');
395
395
 
396
- vc = createPassportVC({
396
+ vc = await createPassportVC({
397
397
  issuerName: name,
398
398
  issuerWallet: wallet,
399
399
  issuerAvatarUrl: getAppAvatarUrl(baseUrl),
@@ -244,7 +244,7 @@ module.exports = {
244
244
  const hasOwnerPassport = (user.passports || []).some((x) => x.name === role);
245
245
  if (hasOwnerPassport === false) {
246
246
  // create vc
247
- const vc = createPassportVC({
247
+ const vc = await createPassportVC({
248
248
  issuerName: name,
249
249
  issuerWallet: wallet,
250
250
  issuerAvatarUrl: getAppAvatarUrl(appUrl),
@@ -1,27 +1,25 @@
1
1
  const { handleInvitationReceive, getApplicationInfo } = require('@abtnode/auth/lib/auth');
2
- const { upsertToPassports, createPassportSvg } = require('@abtnode/auth/lib/passport');
2
+ const { createPassportList, createPassportSwitcher } = require('@abtnode/auth/lib/oauth');
3
3
  const {
4
4
  WELLKNOWN_SERVICE_PATH_PREFIX,
5
5
  PASSPORT_STATUS,
6
6
  ROLES,
7
7
  SECURITY_RULE_DEFAULT_ID,
8
8
  } = require('@abtnode/constant');
9
- const { extractUserAvatar, getUserAvatarUrl, getAppAvatarUrl } = require('@abtnode/util/lib/user');
9
+ const { extractUserAvatar, getUserAvatarUrl } = require('@abtnode/util/lib/user');
10
10
  const { fromAppDid } = require('@arcblock/did-ext');
11
- const { getBlockletAppIdList } = require('@blocklet/meta/lib/util');
12
- const uniq = require('lodash/uniq');
13
11
  const last = require('lodash/last');
14
12
  const pick = require('lodash/pick');
15
13
  const sortBy = require('lodash/sortBy');
16
14
  const cloneDeep = require('lodash/cloneDeep');
17
15
  const { joinURL } = require('ufo');
16
+ const { upsertToPassports } = require('@abtnode/auth/lib/passport');
18
17
  const { getWalletDid, getConnectedAccounts, getSourceProvider } = require('@blocklet/meta/lib/did-utils');
19
18
  const formatContext = require('@abtnode/util/lib/format-context');
20
19
  const createTranslator = require('@abtnode/util/lib/translate');
21
20
  const getRequestIP = require('@abtnode/util/lib/get-request-ip');
22
21
  const CustomError = require('@abtnode/util/lib/custom-error');
23
22
  const { LOGIN_PROVIDER } = require('@blocklet/constant');
24
- const { getActivePassports } = require('@abtnode/util/lib/passport');
25
23
  const { withHttps, withTrailingSlash } = require('ufo');
26
24
 
27
25
  const logger = require('../libs/logger')('oauth');
@@ -768,67 +766,25 @@ async function unbind(req, node) {
768
766
  }
769
767
 
770
768
  module.exports = {
771
- init(server, node, options) {
772
- server.get(`${prefixApi}/configs`, async (req, res) => {
769
+ checkUser,
770
+
771
+ init(router, node, options) {
772
+ const { createSessionToken } = initJwt(node, options);
773
+
774
+ router.get(`${prefixApi}/configs`, async (req, res) => {
773
775
  const blocklet = await req.getBlocklet();
774
776
  const oauthConfig = blocklet?.settings?.oauth || {};
775
777
  res.send(oauthConfig);
776
778
  });
777
779
 
778
- server.get(`${prefixApi}/passports`, checkUser, async (req, res) => {
779
- const userDid = req.user.did;
780
- const blockletInfo = await req.getBlockletInfo();
781
- const nodeInfo = await req.getNodeInfo();
782
- const { did: teamDid, wallet: blockletWallet, appUrl } = blockletInfo;
783
- const { passportColor } = await getApplicationInfo({ node, nodeInfo, teamDid });
784
- const issuerDidList = uniq([blockletWallet.address, ...getBlockletAppIdList(blockletInfo)]);
785
- // NOTICE: 这里获取的 did 是当前登录用户的永久 did,无需查询 connectedAccount
786
- const user = await node.getUser({ teamDid, user: { did: userDid } });
787
- let ownerAvatarUrl = getUserAvatarUrl(appUrl, user.avatar);
788
- try {
789
- // FIXME: @zhanghan 暂时将 imageFilter 等 queryString 参数移除
790
- const ownerAvatarUrlInstance = new URL(ownerAvatarUrl);
791
- ownerAvatarUrlInstance.search = '';
792
- ownerAvatarUrl = ownerAvatarUrlInstance.href;
793
- } catch {
794
- /* empty */
795
- }
796
- let issuerAvatarUrl = getAppAvatarUrl(appUrl);
797
- try {
798
- // FIXME: @zhanghan 暂时将 imageFilter 等 queryString 参数移除
799
- const issuerAvatarUrlInstance = new URL(issuerAvatarUrl);
800
- issuerAvatarUrlInstance.search = '';
801
- issuerAvatarUrl = issuerAvatarUrlInstance.href;
802
- } catch {
803
- /* empty */
804
- }
780
+ router.get(`${prefixApi}/passports`, checkUser, createPassportList(node, 'service'));
781
+ router.post(
782
+ `${prefixApi}/switch`,
783
+ checkUser,
784
+ createPassportSwitcher(node, createTokenFn(createSessionToken), 'service')
785
+ );
805
786
 
806
- const { passports = [] } = user || {};
807
- const passportTypes = getActivePassports({ passports }, issuerDidList).map((x) => {
808
- return {
809
- ...pick(x, ['id', 'name', 'title', 'role', 'scope', 'role']),
810
- display:
811
- x.scope === 'custom'
812
- ? x.display
813
- : createPassportSvg({
814
- scope: x.scope,
815
- role: x.role,
816
- title: x.scope === 'kyc' ? x.name : x.title,
817
- issuer: x.issuer.name,
818
- issuerDid: x.issuer.id,
819
- issuerAvatarUrl,
820
- ownerName: user?.fullName,
821
- ownerDid: userDid,
822
- ownerAvatarUrl,
823
- isDataUrl: true,
824
- preferredColor: passportColor || 'auto',
825
- }),
826
- };
827
- });
828
- res.send(passportTypes);
829
- });
830
-
831
- server.post(`${prefixApi}/bind`, checkUser, async (req, res) => {
787
+ router.post(`${prefixApi}/bind`, checkUser, async (req, res) => {
832
788
  try {
833
789
  await bind(req, node, options);
834
790
  res.status(200).json({});
@@ -842,7 +798,7 @@ module.exports = {
842
798
  }
843
799
  });
844
800
 
845
- server.post(`${prefixApi}/unbind`, checkUser, async (req, res) => {
801
+ router.post(`${prefixApi}/unbind`, checkUser, async (req, res) => {
846
802
  try {
847
803
  await unbind(req, node, options);
848
804
  res.status(200).json({});
@@ -856,58 +812,12 @@ module.exports = {
856
812
  }
857
813
  });
858
814
 
859
- server.post(`${prefixApi}/switch`, checkUser, async (req, res) => {
860
- const { did: userDid, provider } = req.user;
861
- const { passportId } = req.body;
862
- const blocklet = await req.getBlocklet();
863
- const { did: teamDid, secret } = await req.getBlockletInfo();
864
- // NOTICE: 这里获取的 did 是当前登录用户的永久 did,无需查询 connectedAccount
865
- const user = await node.getUser({ teamDid, user: { did: userDid } });
866
- const { passports = [] } = user || {};
867
- const passport = passportId
868
- ? passports.find((item) => item.id === passportId)
869
- : { name: 'Guest', role: 'guest', scope: 'passport' };
870
- await node.createAuditLog(
871
- {
872
- action: 'switchPassport',
873
- args: { teamDid, userDid, passport, provider: user?.sourceProvider },
874
- context: formatContext(Object.assign(req, { user })),
875
- result: user,
876
- },
877
- node
878
- );
879
- const { createSessionToken } = initJwt(node, options);
880
- const createToken = createTokenFn(createSessionToken);
881
- const sessionConfig = blocklet.settings?.session || {};
882
- const { sessionToken, refreshToken } = createToken(
883
- userDid,
884
- {
885
- secret,
886
- passport,
887
- role: passport.scope === 'passport' ? passport.role : ROLES.GUEST,
888
- fullName: user?.fullName,
889
- provider,
890
- walletOS: 'web',
891
- emailVerified: !!user?.emailVerified,
892
- phoneVerified: !!user?.phoneVerified,
893
- },
894
- { ...sessionConfig, didConnectVersion: getDidConnectVersion(req) }
895
- );
896
-
897
- // for backward compatibility
898
- if (!getDidConnectVersion(req)) {
899
- res.status(200).send(sessionToken);
900
- }
901
-
902
- res.status(200).json({ sessionToken, refreshToken });
903
- });
904
-
905
815
  /**
906
816
  * oauth 方式登录
907
817
  * 1. 普通配置下,登录/注册是同样的流程,登录过程中会自动注册账号
908
818
  * 2. 仅邀请可登录模式下,只允许登录,不允许注册
909
819
  */
910
- server.post(`${prefixApi}/login`, async (req, res) => {
820
+ router.post(`${prefixApi}/login`, async (req, res) => {
911
821
  const { action = 'login' } = req.body;
912
822
  const actionMap = {
913
823
  login,
@@ -931,7 +841,7 @@ module.exports = {
931
841
  }
932
842
  });
933
843
 
934
- server.post(`${prefixApi}/getUser`, async (req, res) => {
844
+ router.post(`${prefixApi}/getUser`, async (req, res) => {
935
845
  const { provider, token, idToken, code, appPid } = req.body;
936
846
  const blocklet = await req.getBlocklet();
937
847
  const oauthInfo = await getOAuthUserInfo({ blocklet, provider, token, idToken, code, appPid });
@@ -959,7 +869,7 @@ module.exports = {
959
869
  };
960
870
  };
961
871
 
962
- server.get(`${prefix}/login/:provider`, checkReferrerMiddleware(), async (req, res) => {
872
+ router.get(`${prefix}/login/:provider`, checkReferrerMiddleware(), async (req, res) => {
963
873
  const { provider } = req.params;
964
874
  const blocklet = await req.getBlocklet();
965
875
  const availableProviderList = Object.keys(blocklet.settings?.oauth).filter(
@@ -977,7 +887,7 @@ module.exports = {
977
887
 
978
888
  // HACK: apple 需要特殊处理,callback 使用的是 post 请求返回的,通过特殊处理转为 get 请求,转由前端继续处理
979
889
  // 此处改为所有 provider 都兼容的模式
980
- server.post(`${prefix}/callback/:provider`, (req, res) => {
890
+ router.post(`${prefix}/callback/:provider`, (req, res) => {
981
891
  /**
982
892
  * @type {{code?: string, user?: {name: {firstName: string, lastName: string}, email: string}}}
983
893
  */
@@ -4,13 +4,13 @@ const { fromAppDid } = require('@arcblock/did-ext');
4
4
  const { extractUserAvatar } = require('@abtnode/util/lib/user');
5
5
  const formatContext = require('@abtnode/util/lib/format-context');
6
6
  const createTranslator = require('@abtnode/util/lib/translate');
7
+ const { fromBase64 } = require('@ocap/util');
7
8
  const { isFromPublicKey } = require('@arcblock/did');
8
9
  const { LOGIN_PROVIDER } = require('@blocklet/constant');
9
- const sortBy = require('lodash/sortBy');
10
- const head = require('lodash/head');
11
10
  const pick = require('lodash/pick');
12
11
  const merge = require('lodash/merge');
13
12
  const omitBy = require('lodash/omitBy');
13
+ const { getLastUsedPassport } = require('@abtnode/auth/lib/passport');
14
14
  const { verify, decode } = require('@arcblock/jwt');
15
15
  const { getWallet } = require('@blocklet/meta/lib/did-utils');
16
16
  const { Joi } = require('@arcblock/validator');
@@ -33,7 +33,12 @@ const { Profile } = require('../state/profile');
33
33
 
34
34
  const validateUser = (user) => {
35
35
  try {
36
- return user && user.did && user.pk && isFromPublicKey(user.did, user.pk);
36
+ return (
37
+ user &&
38
+ user.did &&
39
+ user.pk &&
40
+ (isFromPublicKey(user.did, user.pk) || isFromPublicKey(user.did, fromBase64(user.pk)))
41
+ );
37
42
  } catch (e) {
38
43
  return false;
39
44
  }
@@ -524,28 +529,7 @@ module.exports = {
524
529
  const { createSessionToken } = initJwt(node, options);
525
530
  const createToken = createTokenFn(createSessionToken);
526
531
  const sessionConfig = blocklet.settings?.session || {};
527
- const passports = currentUser?.passports || [];
528
-
529
- let passport = null;
530
- if (passportId) {
531
- passport = passports.find((x) => x.status === 'valid' && x.passportId === passportId);
532
- }
533
- if (!passport) {
534
- const now = new Date().getTime();
535
- passport = head(
536
- sortBy(passports, (x) => {
537
- const lastLoginAt = new Date(x.lastLoginAt).getTime();
538
- if (typeof lastLoginAt === 'number') {
539
- return now - lastLoginAt;
540
- }
541
- return now;
542
- })
543
- );
544
- }
545
-
546
- if (!passport) {
547
- passport = { name: 'Guest', role: 'guest' };
548
- }
532
+ const passport = getLastUsedPassport(currentUser?.passports || [], passportId);
549
533
 
550
534
  const lastLoginIp = getRequestIP(req);
551
535
  const loggedInUser = await node.loginUser({
@@ -236,8 +236,7 @@ module.exports = function createRoutes(node, _, createSessionToken) {
236
236
  preferredColor: passportColor,
237
237
  };
238
238
 
239
- const vc = createPassportVC(vcParams);
240
-
239
+ const vc = await createPassportVC(vcParams);
241
240
  const role = getRoleFromLocalPassport(get(vc, 'credentialSubject.passport'));
242
241
  const passport = createUserPassport(vc, { role });
243
242
 
@@ -30,7 +30,7 @@ const checkOwner = async ({ node, userDid, blocklet }) => {
30
30
  return user;
31
31
  };
32
32
 
33
- module.exports = function createRoutes(node, _authenticator, createSessionToken) {
33
+ module.exports = function createRoutes(node, authenticator, createSessionToken) {
34
34
  return {
35
35
  action: 'setup',
36
36
  onConnect: async ({ req, userDid, extraParams: { locale } }) => {
@@ -113,7 +113,12 @@ module.exports = function createRoutes(node, _authenticator, createSessionToken)
113
113
 
114
114
  // Generate new session token that client can save to localStorage
115
115
  // HACK: 此处没有 passportId,所以特意不设置 refreshToken,失效后下次登录就能选择合适的 passport
116
- const sessionToken = await createSessionToken(userDid, { secret, role: 'owner', fullName: profile?.fullName });
116
+ const sessionToken = await createSessionToken(userDid, {
117
+ secret,
118
+ role: 'owner',
119
+ fullName: profile?.fullName,
120
+ elevated: true,
121
+ });
117
122
  await updateSession({ sessionToken }, true);
118
123
  logger.info('setup.connect.success', { userDid });
119
124
  } catch (err) {
@@ -1,6 +1,6 @@
1
1
  const { messages } = require('@abtnode/auth/lib/auth');
2
- const { authenticateByVc, getVerifyAccessClaims } = require('@abtnode/auth/lib/server');
3
- const { ROLES, MFA_PROTECTED_METHODS } = require('@abtnode/constant');
2
+ const { authenticateByVc, getVerifyAccessClaims, validateVerifyDestroyRequest } = require('@abtnode/auth/lib/server');
3
+ const { ROLES } = require('@abtnode/constant');
4
4
  const { getSourceAppPid } = require('@blocklet/sdk/lib/util/login');
5
5
  const { fromBase64 } = require('@ocap/util');
6
6
  const { LOGIN_PROVIDER } = require('@blocklet/constant');
@@ -26,20 +26,7 @@ module.exports = function createRoutes(node, authenticator, createSessionToken)
26
26
  throw new Error(messages.notAuthorized[locale]);
27
27
  }
28
28
 
29
- // ensure payload is valid
30
- const parsed = JSON.parse(fromBase64(payload).toString());
31
- if (!MFA_PROTECTED_METHODS.includes(parsed.action)) {
32
- throw new Error(messages.notAllowed[locale]);
33
- }
34
-
35
- // ensure roles are valid
36
- const expected = roles
37
- .split(',')
38
- .map((x) => x.trim())
39
- .filter(Boolean);
40
- if (expected.some((x) => !ALLOWED_ROLES.includes(x))) {
41
- throw new Error(messages.notAllowed[locale]);
42
- }
29
+ const expected = validateVerifyDestroyRequest({ payload, roles, locale, allowedRoles: ALLOWED_ROLES });
43
30
 
44
31
  const sourceAppPid = getSourceAppPid(request);
45
32
  return {
@@ -37,6 +37,7 @@ const createVerifyDestroyAuth = require('./connect/verify-destroy');
37
37
  const createReceiveTransferAppOwnerRoutes = require('./connect/receive-transfer-app-owner');
38
38
  const createSessionRoutes = require('./session');
39
39
  const createPassportRoutes = require('./passport');
40
+ const createPasskeyRoutes = require('./passkey');
40
41
  const { getRedirectUrl, shouldIgnoreUrl, redirectWithoutCache } = require('../../util');
41
42
  const { createConnectToDidSpacesForUserRoute } = require('./connect/connect-to-did-spaces-for-user');
42
43
  const { isEmailKycRequired, isPhoneKycRequired } = require('../../libs/kyc');
@@ -249,6 +250,9 @@ const init = ({ node, options }) => {
249
250
 
250
251
  // public http api
251
252
  routes.createPassportRoutes = createPassportRoutes;
253
+ routes.createPasskeyRoutes = {
254
+ init: (router) => createPasskeyRoutes.init(router, node, options, createSessionToken),
255
+ };
252
256
  routes.createSessionRoutes = {
253
257
  // eslint-disable-next-line no-shadow
254
258
  init: (router, node) =>
@@ -0,0 +1,31 @@
1
+ const { createPasskeyHandlers } = require('@abtnode/auth/lib/passkey');
2
+ const { WELLKNOWN_SERVICE_PATH_PREFIX } = require('@abtnode/constant');
3
+ const { createPassportList, createPassportSwitcher } = require('@abtnode/auth/lib/oauth');
4
+ const { createTokenFn } = require('../../util');
5
+ const { checkUser } = require('../../routes/oauth');
6
+
7
+ module.exports = {
8
+ init(router, node, options, createSessionToken) {
9
+ const createToken = createTokenFn(createSessionToken);
10
+
11
+ const {
12
+ ensurePasskeySession,
13
+ ensureUser,
14
+ handleRegisterRequest,
15
+ handleRegisterResponse,
16
+ handleAuthRequest,
17
+ handleAuthResponse,
18
+ } = createPasskeyHandlers(node, 'service', createToken);
19
+
20
+ const prefix = `${WELLKNOWN_SERVICE_PATH_PREFIX}/api/passkey`;
21
+
22
+ router.get(`${prefix}/register`, handleRegisterRequest);
23
+ router.post(`${prefix}/register`, ensurePasskeySession, handleRegisterResponse);
24
+ router.get(`${prefix}/auth`, ensureUser, handleAuthRequest);
25
+ router.post(`${prefix}/auth`, ensurePasskeySession, handleAuthResponse);
26
+
27
+ // Following routes are same as oauth routes
28
+ router.get(`${prefix}/passports`, checkUser, createPassportList(node, 'service'));
29
+ router.post(`${prefix}/switch`, checkUser, createPassportSwitcher(node, createToken, 'service'));
30
+ },
31
+ };
@@ -2,8 +2,8 @@ const { getPassportStatus } = require('@abtnode/auth/lib/auth');
2
2
  const { WELLKNOWN_SERVICE_PATH_PREFIX } = require('@abtnode/constant');
3
3
 
4
4
  module.exports = {
5
- init(server, node) {
6
- server.get(`${WELLKNOWN_SERVICE_PATH_PREFIX}/api/passport/status`, async (req, res) => {
5
+ init(router, node) {
6
+ router.get(`${WELLKNOWN_SERVICE_PATH_PREFIX}/api/passport/status`, async (req, res) => {
7
7
  const { vcId, userDid, locale } = req.query;
8
8
  const teamDid = req.headers['x-blocklet-did'];
9
9
 
@@ -23,14 +23,15 @@ const authenticateConnect = (req, cb) => {
23
23
  return;
24
24
  }
25
25
 
26
- if (!JWT.verify(token, pk)) {
27
- cb(new Error('token verify failed'));
28
- return;
29
- }
30
-
31
- const decoded = JWT.decode(token);
32
- const info = getTokenInfo(decoded);
33
- cb(null, info);
26
+ JWT.verify(token, pk)
27
+ .then(() => {
28
+ const decoded = JWT.decode(token);
29
+ const info = getTokenInfo(decoded);
30
+ cb(null, info);
31
+ })
32
+ .catch((err) => {
33
+ cb(err, null);
34
+ });
34
35
  };
35
36
 
36
37
  const authenticateJoinChannel = async ({ topic: channel, payload, node }) => {
@@ -45,7 +46,7 @@ const authenticateJoinChannel = async ({ topic: channel, payload, node }) => {
45
46
  // so we need to support token is valid for one day
46
47
  const tolerance = 3600 * 24;
47
48
 
48
- if (!JWT.verify(payload.token, payload.pk, { tolerance })) {
49
+ if (!(await JWT.verify(payload.token, payload.pk, { tolerance }))) {
49
50
  throw new Error(`verify did failed: ${info.did}`);
50
51
  }
51
52
 
@@ -171,13 +171,14 @@ const sendToUserDid = async ({ sender, receiver: rawDid, notification, options,
171
171
  await Promise.all(
172
172
  notifications.map(async (data) => {
173
173
  let doc = null;
174
- if (data.id) {
174
+ const isSaveSkipped = data.type?.toLowerCase() === 'passthrough';
175
+ if (data.id && !isSaveSkipped) {
175
176
  doc = await node.getNotificationById({
176
177
  teamDid: _teamDid,
177
178
  id: data.id,
178
179
  });
179
180
  }
180
- if (!data.id && !isServer && sender.type !== 'server') {
181
+ if (!data.id && !isServer && sender.type !== 'server' && !isSaveSkipped) {
181
182
  doc = await node.createNotification({
182
183
  teamDid,
183
184
  ...data,
@@ -298,7 +299,7 @@ const sendToUserDid = async ({ sender, receiver: rawDid, notification, options,
298
299
  }
299
300
  }
300
301
 
301
- if (channels.includes('webhook')) {
302
+ if (channels.includes('webhook') && !isSaveSkipped) {
302
303
  // 发送 webhook
303
304
  for (const webhook of webhookList) {
304
305
  let webhookSender = webhookSenders.get(webhook.type);
@@ -60,7 +60,7 @@ const ensureSenderApp = async ({ sender, node, nodeInfo }) => {
60
60
  }
61
61
 
62
62
  const { wallet } = appInfo;
63
- if (!JWT.verify(sender.token, wallet.publicKey)) {
63
+ if (!(await JWT.verify(sender.token, wallet.publicKey))) {
64
64
  throw new Error(`Invalid authentication token for sender blocklet: ${sender.appDid}`);
65
65
  }
66
66
 
@@ -159,6 +159,7 @@ module.exports = ({ node, req, options }) => {
159
159
  };
160
160
 
161
161
  const user = await verifySessionToken(token, secret, opt);
162
+
162
163
  if (user && visitorId) {
163
164
  const [userSession] = await node.getUserSession({
164
165
  teamDid,
@@ -166,14 +167,14 @@ module.exports = ({ node, req, options }) => {
166
167
  userDid: user.did,
167
168
  visitorId,
168
169
  });
169
- if (!userSession) return;
170
-
171
- req.userSession = userSession;
170
+ if (userSession) {
171
+ req.userSession = userSession;
172
+ }
172
173
  }
173
174
  req.user = user;
174
175
  }
175
176
  } catch (error) {
176
- logger.debug('Failed to ensureUser', { error });
177
+ console.error('Failed to ensureUser', error);
177
178
  }
178
179
  };
179
180
 
package/api/util/index.js CHANGED
@@ -84,6 +84,7 @@ const getRedirectUrl = ({ req, pagePath, params = {} }) => {
84
84
  const launchType = redirectUrlObj.searchParams.get('launchType');
85
85
  const chainHost = redirectUrlObj.searchParams.get('chainHost');
86
86
  const visitorId = redirectUrlObj.searchParams.get('visitorId');
87
+ const inviter = redirectUrlObj.searchParams.get('inviter');
87
88
 
88
89
  const nftId = redirectUrlObj.searchParams.get('nftId');
89
90
  redirectUrlObj.searchParams.delete('__start__');
@@ -133,6 +134,10 @@ const getRedirectUrl = ({ req, pagePath, params = {} }) => {
133
134
  url.searchParams.set('visitorId', visitorId);
134
135
  }
135
136
 
137
+ if (inviter) {
138
+ url.searchParams.set('inviter', inviter);
139
+ }
140
+
136
141
  Object.keys(params).forEach((key) => {
137
142
  if (params[key] === undefined) {
138
143
  return;
@@ -0,0 +1 @@
1
+ import{a1 as r,j as a}from"./vendor-mui-core-BHQ3rDZc.js";import{ai as t}from"./vendor-arcblock-DrV4Yh4h.js";var e={},o=r;Object.defineProperty(e,"__esModule",{value:!0});var u=e.default=void 0,d=o(t()),v=a;u=e.default=(0,d.default)((0,v.jsx)("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6z"}),"Add");export{u as d};
@@ -0,0 +1 @@
1
+ import{a1 as r,j as a}from"./vendor-mui-core-BHQ3rDZc.js";import{ai as t}from"./vendor-arcblock-DrV4Yh4h.js";var e={},o=r;Object.defineProperty(e,"__esModule",{value:!0});var u=e.default=void 0,i=o(t()),p=a;u=e.default=(0,i.default)((0,p.jsx)("path",{d:"m7 10 5 5 5-5z"}),"ArrowDropDown");export{u as d};
@@ -0,0 +1 @@
1
+ import{a1 as r,j as a}from"./vendor-mui-core-BHQ3rDZc.js";import{ai as t}from"./vendor-arcblock-DrV4Yh4h.js";var e={},i=r;Object.defineProperty(e,"__esModule",{value:!0});var o=e.default=void 0,u=i(t()),l=a;o=e.default=(0,u.default)((0,l.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m-2 15-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8z"}),"CheckCircle");export{o as d};
@@ -0,0 +1 @@
1
+ import{a1 as r,j as t}from"./vendor-mui-core-BHQ3rDZc.js";import{ai as a}from"./vendor-arcblock-DrV4Yh4h.js";var e={},o=r;Object.defineProperty(e,"__esModule",{value:!0});var u=e.default=void 0,i=o(a()),f=t;u=e.default=(0,i.default)((0,f.jsx)("path",{d:"M15.41 7.41 14 6l-6 6 6 6 1.41-1.41L10.83 12z"}),"ChevronLeft");export{u as d};
@@ -0,0 +1 @@
1
+ import{a1 as r,j as t}from"./vendor-mui-core-BHQ3rDZc.js";import{ai as a}from"./vendor-arcblock-DrV4Yh4h.js";var e={},o=r;Object.defineProperty(e,"__esModule",{value:!0});var i=e.default=void 0,u=o(a()),v=t;i=e.default=(0,u.default)((0,v.jsx)("path",{d:"M10 6 8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"}),"ChevronRight");export{i as d};
@@ -0,0 +1 @@
1
+ import{a1 as t,j as r}from"./vendor-mui-core-BHQ3rDZc.js";import{ai as a}from"./vendor-arcblock-DrV4Yh4h.js";var e={},u=t;Object.defineProperty(e,"__esModule",{value:!0});var i=e.default=void 0,o=u(a()),l=r;i=e.default=(0,o.default)((0,l.jsx)("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6zM8 9h8v10H8zm7.5-5-1-1h-5l-1 1H5v2h14V4z"}),"DeleteOutline");export{i as d};
@@ -0,0 +1 @@
1
+ import{a1 as r,j as a}from"./vendor-mui-core-BHQ3rDZc.js";import{ai as t}from"./vendor-arcblock-DrV4Yh4h.js";var e={},o=r;Object.defineProperty(e,"__esModule",{value:!0});var u=e.default=void 0,i=o(t()),l=a;u=e.default=(0,i.default)((0,l.jsx)("path",{d:"M9 16.2 4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4z"}),"Done");export{u as d};
@@ -0,0 +1 @@
1
+ import{a1 as a,j as r}from"./vendor-mui-core-BHQ3rDZc.js";import{ai as t}from"./vendor-arcblock-DrV4Yh4h.js";var e={},o=a;Object.defineProperty(e,"__esModule",{value:!0});var u=e.default=void 0,i=o(t()),d=r;u=e.default=(0,i.default)((0,d.jsx)("path",{d:"M5 20h14v-2H5zM19 9h-4V3H9v6H5l7 7z"}),"Download");export{u as d};