@abtnode/blocklet-services 1.16.37-beta-20250104-120451-e4049aeb → 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 (333) 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/util.js +1 -1
  16. package/api/util/attach-shared-utils.js +5 -4
  17. package/api/util/index.js +5 -0
  18. package/dist/assets/Add-BWCYHsqO.js +1 -0
  19. package/dist/assets/ArrowDropDown-BpEWICfl.js +1 -0
  20. package/dist/assets/CheckCircle-CwD9Ke3p.js +1 -0
  21. package/dist/assets/ChevronLeft-DSkEbRl3.js +1 -0
  22. package/dist/assets/ChevronRight-D0L8yvDK.js +1 -0
  23. package/dist/assets/DeleteOutline-CXidpj4T.js +1 -0
  24. package/dist/assets/Done-C64D3evS.js +1 -0
  25. package/dist/assets/Download-Dw32CPvU.js +1 -0
  26. package/dist/assets/EditIcon-tG6wkTV8.js +1 -0
  27. package/dist/assets/Error-DJ3gIUKv.js +1 -0
  28. package/dist/assets/{Google-BAgnJN1d.js → Google-xPNZ3SW6.js} +3 -3
  29. package/dist/assets/InfoOutlined-C68E276M.js +1 -0
  30. package/dist/assets/Launch-BGwEi50t.js +1 -0
  31. package/dist/assets/LaunchOutlined-Ca3gdurT.js +1 -0
  32. package/dist/assets/LockIcon-DkGeStY0.js +1 -0
  33. package/dist/assets/Loop-BGNTppkv.js +1 -0
  34. package/dist/assets/MoreHoriz-ByYwcz4x.js +1 -0
  35. package/dist/assets/PlayArrow-D2eSJrmH.js +1 -0
  36. package/dist/assets/QuestionMarkCircle-CRU8b9ID.js +1 -0
  37. package/dist/assets/ServerLogo-2zkqpStV.js +1 -0
  38. package/dist/assets/ViewList-3IpnvMH9.js +1 -0
  39. package/dist/assets/_createAggregator-CTc4wR3U.js +1 -0
  40. package/dist/assets/abtwallet-o1JAGJkW.png +0 -0
  41. package/dist/assets/access-control-Cc5_tP4v.js +13 -0
  42. package/dist/assets/actions-DfuRxUKW.js +1 -0
  43. package/dist/assets/add-component-core-CMZl0Aw9.js +716 -0
  44. package/dist/assets/add-resource-DNWGI5Hi.js +1 -0
  45. package/dist/assets/addon-VajLOBqQ.js +31 -0
  46. package/dist/assets/analytics-DjT9BDYe.js +47 -0
  47. package/dist/assets/android-Xe96zWxX.png +0 -0
  48. package/dist/assets/api-C7qcY4XU.js +1 -0
  49. package/dist/assets/audit-logs-DXIS1eea.js +58 -0
  50. package/dist/assets/base32-DpVKJ4W_.js +1 -0
  51. package/dist/assets/branding-DP6PFXBo.js +40 -0
  52. package/dist/assets/bundle-avatar-CzB889SV.js +1 -0
  53. package/dist/assets/button-D3f-aYWj.js +1 -0
  54. package/dist/assets/click-to-copy-oC180fIr.js +1 -0
  55. package/dist/assets/complete-Ck7c7oAE.js +45 -0
  56. package/dist/assets/{component-ChbClWUp.js → component-BZTnOYBQ.js} +89 -89
  57. package/dist/assets/config-B592SaBl.js +32 -0
  58. package/dist/assets/config-C-7B0ly9.js +1 -0
  59. package/dist/assets/{config-navigation-CWPZjlHO.js → config-navigation-BVFjfkWf.js} +6 -6
  60. package/dist/assets/config-space-D5tEidjS.js +1 -0
  61. package/dist/assets/confirm-vgd_1-1V.js +7 -0
  62. package/dist/assets/connect-LMZbP6sp.js +5 -0
  63. package/dist/assets/connect-gaOu1HRw.js +1 -0
  64. package/dist/assets/connect-to-D-QS37Vn.js +1 -0
  65. package/dist/assets/{content-layout-B3qFdI6N.js → content-layout-D25Q_vVO.js} +1 -1
  66. package/dist/assets/dashboard-BgW0SYmh.js +86 -0
  67. package/dist/assets/did-address-DAnP601f.js +1 -0
  68. package/dist/assets/domain-b6cmz4S4.js +9 -0
  69. package/dist/assets/domain-list-DLXeNUEV.js +15 -0
  70. package/dist/assets/email-KHVOUytb.js +18 -0
  71. package/dist/assets/exchange-passport-Ah6Oc4Hf.js +1 -0
  72. package/dist/assets/form-text-input-f773Hgdy.js +11 -0
  73. package/dist/assets/{format-error-CpEoP1rb.js → format-error-C0Ke3VXF.js} +2 -2
  74. package/dist/assets/fuel-D2M3FXAV.js +32 -0
  75. package/dist/assets/fullpage-Dpka7-iX.js +1 -0
  76. package/dist/assets/get-safe-url-6EgCrTPK.js +1 -0
  77. package/dist/assets/get-safe-url-BBLBic7f.js +1 -0
  78. package/dist/assets/home-DYkbr7a5.js +1 -0
  79. package/dist/assets/iframe-Dh23G9Wt.js +1 -0
  80. package/dist/assets/index-8-kTmhK2.js +4 -0
  81. package/dist/assets/index-BCJq3WNv.js +5 -0
  82. package/dist/assets/index-BEcpBIIf.js +5 -0
  83. package/dist/assets/index-BUoBUFo9.js +243 -0
  84. package/dist/assets/index-B_nW8jWg.js +1 -0
  85. package/dist/assets/index-BodKukbo.js +11 -0
  86. package/dist/assets/index-BxUQG_ZS.js +291 -0
  87. package/dist/assets/{index-Cbi6kl34.js → index-C6UmPiZc.js} +2 -2
  88. package/dist/assets/{index-CH1qAD3K.js → index-CDceAH6O.js} +21 -21
  89. package/dist/assets/index-CeXw2vcO.js +1 -0
  90. package/dist/assets/index-CgyFjfCK.js +1 -0
  91. package/dist/assets/index-Cp3ZCh7o.js +1 -0
  92. package/dist/assets/{index-D8zCBBsy.js → index-CqdCpHy-.js} +1 -1
  93. package/dist/assets/index-Cy5HwFoQ.js +221 -0
  94. package/dist/assets/index-DPVdZRyD.js +134 -0
  95. package/dist/assets/index-DTOMtrZi.js +144 -0
  96. package/dist/assets/index-DVYdq7IA.js +1 -0
  97. package/dist/assets/{index-Gze7IkP6.js → index-DoZ2YM4T.js} +1 -1
  98. package/dist/assets/{index-CqfW2FZt.js → index-YMnfgOF9.js} +2 -2
  99. package/dist/assets/index-_s_fLZnI.js +104 -0
  100. package/dist/assets/index-f88YxSnq.js +1 -0
  101. package/dist/assets/invitation-CxB-x_xn.js +176 -0
  102. package/dist/assets/invite-DBeeLtl3.js +5 -0
  103. package/dist/assets/ios-CBDmY-ic.png +0 -0
  104. package/dist/assets/isEmail-BWNRBSAy.js +1 -0
  105. package/dist/assets/issue-passport-DDvmexL3.js +1 -0
  106. package/dist/assets/item-6MGDbiPN.js +1 -0
  107. package/dist/assets/{launch-result-message-BelGEFPb.js → launch-result-message-CDh6C7yN.js} +2 -2
  108. package/dist/assets/layout-CNG79gdU.js +29 -0
  109. package/dist/assets/list-header-CWds6opx.js +57 -0
  110. package/dist/assets/localization--GnHWBZu.js +1 -0
  111. package/dist/assets/{log-C-mcb3Rv.js → log-BeVAiHHb.js} +9 -9
  112. package/dist/assets/login-A-Fb7Rrc.js +1 -0
  113. package/dist/assets/login-oauth-callback-CBpbmy7Y.js +1 -0
  114. package/dist/assets/logo-uploader-CC0caghQ.js +133 -0
  115. package/dist/assets/lost-passport-HU2qWAuA.js +168 -0
  116. package/dist/assets/{lottie-react.esm-BpyUyTL6.js → lottie-react.esm-CHpXrEmm.js} +1 -1
  117. package/dist/assets/open-window-BvQJJhL_.js +1 -0
  118. package/dist/assets/overview-DIREa8hS.js +12 -0
  119. package/dist/assets/{page-header-cgpPCMon.js → page-header-1PJsLh7u.js} +1 -1
  120. package/dist/assets/permission-BBg-Yh9T.js +1 -0
  121. package/dist/assets/preferences-CB5uOidv.js +1 -0
  122. package/dist/assets/publish-resource-CmcZx-V_.js +1 -0
  123. package/dist/assets/raf-schd.esm-Cxhj8umC.js +1 -0
  124. package/dist/assets/{react-beautiful-dnd.esm-C5fDIc0r.js → react-beautiful-dnd.esm-CCGMJ6tB.js} +4 -4
  125. package/dist/assets/relative-time-gSR-I79i.js +1 -0
  126. package/dist/assets/sdk-BKgHFqrA.js +1 -0
  127. package/dist/assets/session-DjolhruE.js +1 -0
  128. package/dist/assets/setup-IWaLQEGW.js +19 -0
  129. package/dist/assets/shorten-label-cn1YaOcx.js +1 -0
  130. package/dist/assets/simple-select-C05FGhNJ.js +1 -0
  131. package/dist/assets/slicedToArray-DuBRe18s.js +2 -0
  132. package/dist/assets/start-DpxK1ev8.js +187 -0
  133. package/dist/assets/step-actions-DcWKBXOu.js +31 -0
  134. package/dist/assets/studio-B_CDfqTQ.js +6 -0
  135. package/dist/assets/switch-control-VwZyV9qS.js +13 -0
  136. package/dist/assets/toUpper-CD1KHWl4.js +1 -0
  137. package/dist/assets/transfer-BjIffkrb.js +16 -0
  138. package/dist/assets/unsubscribe-BdE7c0PR.js +1 -0
  139. package/dist/assets/use-mobile-CRGhfnSw.js +1 -0
  140. package/dist/assets/useAsync-Barwm_ml.js +1 -0
  141. package/dist/assets/useAsyncRetry-VpCDo2sM.js +7 -0
  142. package/dist/assets/useLocalStorage-DTPZT3h6.js +1 -0
  143. package/dist/assets/useSetState-Crt4S51m.js +1 -0
  144. package/dist/assets/user-center-DNT8JJcs.js +202 -0
  145. package/dist/assets/util-D-lyK2FV.js +1 -0
  146. package/dist/assets/{index-B4oT57Ax.css → vendor-arcblock-DhgPdlEj.css} +1 -1
  147. package/dist/assets/vendor-arcblock-DrV4Yh4h.js +3503 -0
  148. package/dist/assets/vendor-hooks-DHHsWSqV.js +7 -0
  149. package/dist/assets/vendor-mui-core-BHQ3rDZc.js +267 -0
  150. package/dist/assets/vendor-mui-x-CYVoSAR5.js +6 -0
  151. package/dist/assets/vendor-react-D-afvo_7.js +61 -0
  152. package/dist/assets/vendor-utils-CV7RLr7b.js +11 -0
  153. package/dist/assets/wrap-locale-Brk8trIp.js +1 -0
  154. package/dist/index.html +7 -2
  155. package/dist/service-worker.js +1 -1
  156. package/package.json +39 -39
  157. package/dist/assets/Add-B3vUgBj_.js +0 -1
  158. package/dist/assets/Alert-BeI3TGsH.js +0 -1
  159. package/dist/assets/ArrowDropDown-BDen6kv8.js +0 -1
  160. package/dist/assets/Autocomplete-B9XdXNLV.js +0 -1
  161. package/dist/assets/Avatar-VP6VjO6F.js +0 -1
  162. package/dist/assets/ButtonGroup-BQ3t8F0M.js +0 -1
  163. package/dist/assets/CSSTransition-CAyI_Voi.js +0 -1
  164. package/dist/assets/CheckCircle-C2NNCmBl.js +0 -1
  165. package/dist/assets/ChevronLeft-CnYlL3td.js +0 -1
  166. package/dist/assets/ChevronRight-CW0I-au3.js +0 -1
  167. package/dist/assets/Clear-CJ32w-ta.js +0 -1
  168. package/dist/assets/CloseOutlined-sL5HP2JB.js +0 -1
  169. package/dist/assets/Delete-Cw0XHQbI.js +0 -1
  170. package/dist/assets/DeleteOutline-CNDiVs89.js +0 -1
  171. package/dist/assets/DialogContentText-CEsqdDWz.js +0 -1
  172. package/dist/assets/Done-B1Id3HZ7.js +0 -1
  173. package/dist/assets/Download-5eyWxKFR.js +0 -1
  174. package/dist/assets/EditIcon-CyjMgREV.js +0 -1
  175. package/dist/assets/Error-CUxzkNdG.js +0 -1
  176. package/dist/assets/ExpandMore-CLLcIz7v.js +0 -1
  177. package/dist/assets/FormControl-BXjjQ2Cl.js +0 -1
  178. package/dist/assets/FormControlLabel-CRQiOFgY.js +0 -1
  179. package/dist/assets/FormGroup-CPYnhZEp.js +0 -1
  180. package/dist/assets/Grid-vQ4in7aJ.js +0 -1
  181. package/dist/assets/HelpOutline-CMsKsWc3.js +0 -1
  182. package/dist/assets/Hidden-ideB0Yow.js +0 -1
  183. package/dist/assets/InfoOutlined-5WyW673W.js +0 -1
  184. package/dist/assets/InputAdornment-BYO2j_v5.js +0 -1
  185. package/dist/assets/LastPage-CzXhZxbb.js +0 -1
  186. package/dist/assets/Launch-DYv1e-sP.js +0 -1
  187. package/dist/assets/LaunchOutlined-BxjL--pT.js +0 -1
  188. package/dist/assets/Link-BePn_RNM.js +0 -1
  189. package/dist/assets/ListItemButton-DFfqWy-t.js +0 -1
  190. package/dist/assets/ListSubheader-XVI0gGYq.js +0 -1
  191. package/dist/assets/LoadingButton-iTGCDYUz.js +0 -1
  192. package/dist/assets/LockIcon-Cj6s3Czr.js +0 -1
  193. package/dist/assets/Loop-JyIa8s4d.js +0 -1
  194. package/dist/assets/Menu-C6kynm4m.js +0 -1
  195. package/dist/assets/MoreHoriz-Cj6hh2tu.js +0 -1
  196. package/dist/assets/MoreVert-m5BY_p4K.js +0 -1
  197. package/dist/assets/OpenInNew-CIsQ-VD4.js +0 -1
  198. package/dist/assets/OutlinedInput-B93_cuhJ.js +0 -2
  199. package/dist/assets/PlayArrow-CSCQWAOp.js +0 -1
  200. package/dist/assets/QuestionMarkCircle-Bgaj2WkC.js +0 -1
  201. package/dist/assets/RadioGroup-DPurewE-.js +0 -1
  202. package/dist/assets/Search-Cy_vXJXs.js +0 -1
  203. package/dist/assets/Select-BoIViWSN.js +0 -1
  204. package/dist/assets/ServerLogo-C2FfSxkG.js +0 -1
  205. package/dist/assets/Stepper-CDMW7dY4.js +0 -1
  206. package/dist/assets/TextField-apRN2NFH.js +0 -1
  207. package/dist/assets/Toolbar-B0MDD2MX.js +0 -1
  208. package/dist/assets/ViewColumn-DLbcQUHz.js +0 -1
  209. package/dist/assets/ViewList-CYnd76EG.js +0 -1
  210. package/dist/assets/_createAggregator-jZ136RIi.js +0 -1
  211. package/dist/assets/access-control-D_3Sf3DH.js +0 -13
  212. package/dist/assets/actions-BEfqQHvh.js +0 -1
  213. package/dist/assets/add-component-core-8-K3kI62.js +0 -804
  214. package/dist/assets/add-resource-BJc9d35J.js +0 -1
  215. package/dist/assets/addon-C2s3597J.js +0 -31
  216. package/dist/assets/analytics-__YzXiEy.js +0 -52
  217. package/dist/assets/api-Du2npubO.js +0 -1
  218. package/dist/assets/audit-logs-DCsbxX3x.js +0 -59
  219. package/dist/assets/base32-CSHbjBse.js +0 -1
  220. package/dist/assets/branding-D8ZABeVU.js +0 -40
  221. package/dist/assets/bundle-avatar-DjGcv6Sg.js +0 -1
  222. package/dist/assets/button-BpodnaUj.js +0 -1
  223. package/dist/assets/click-to-copy-Ct4_CI1M.js +0 -1
  224. package/dist/assets/complete-CKV6Ebun.js +0 -45
  225. package/dist/assets/config-BnBRy_w4.js +0 -1
  226. package/dist/assets/config-C7arZYXl.js +0 -32
  227. package/dist/assets/config-space-D4B-Fcx4.js +0 -1
  228. package/dist/assets/confirm-CyScKRsz.js +0 -7
  229. package/dist/assets/connect-D50yPXAE.js +0 -5
  230. package/dist/assets/connect-DZgc6pEB.js +0 -1
  231. package/dist/assets/connect-to-Byo-gZWq.js +0 -29
  232. package/dist/assets/dashboard-lB4ZPVoV.js +0 -122
  233. package/dist/assets/deprecate-cv6v3EXd.js +0 -1
  234. package/dist/assets/did-address-pHUGf5mt.js +0 -1
  235. package/dist/assets/domain-UlRrTp1n.js +0 -9
  236. package/dist/assets/domain-list-CKs3EKNU.js +0 -15
  237. package/dist/assets/email-PtOk65dC.js +0 -18
  238. package/dist/assets/emotion-cache.browser.esm-DuQlBwjm.js +0 -1
  239. package/dist/assets/exchange-passport-DdO1PoJN.js +0 -1
  240. package/dist/assets/fallback-BMr0sE-j.js +0 -1
  241. package/dist/assets/form-text-input-C5wKQFKL.js +0 -11
  242. package/dist/assets/fuel-DkDXKRe9.js +0 -32
  243. package/dist/assets/fullpage-cRbvfPCn.js +0 -1
  244. package/dist/assets/get-safe-url-6c6RI8XT.js +0 -1
  245. package/dist/assets/get-safe-url-CwEZKvfc.js +0 -1
  246. package/dist/assets/home-D29pIqLK.js +0 -1
  247. package/dist/assets/iframe-BFiRQ7tw.js +0 -1
  248. package/dist/assets/index-72Zql8CQ.js +0 -5
  249. package/dist/assets/index-B27mVEab.js +0 -102
  250. package/dist/assets/index-B3dU1BRu.js +0 -1
  251. package/dist/assets/index-B5C90-kX.js +0 -1
  252. package/dist/assets/index-B6PbP50h.js +0 -1
  253. package/dist/assets/index-BUN78vRQ.js +0 -1
  254. package/dist/assets/index-BXoHPu8T.js +0 -5
  255. package/dist/assets/index-BcaFN_aP.js +0 -1
  256. package/dist/assets/index-Bgv4pLgc.js +0 -243
  257. package/dist/assets/index-BhxTb2Rs.js +0 -1
  258. package/dist/assets/index-Bo3ifRfa.js +0 -1
  259. package/dist/assets/index-BqLf0w23.js +0 -221
  260. package/dist/assets/index-C0UJXtze.js +0 -4
  261. package/dist/assets/index-C3YL4xGi.js +0 -1
  262. package/dist/assets/index-CMbz2eu6.js +0 -11
  263. package/dist/assets/index-CUdjeFH3.js +0 -1413
  264. package/dist/assets/index-C_mXaY4E.js +0 -1
  265. package/dist/assets/index-Cg_T1V-P.js +0 -544
  266. package/dist/assets/index-ChhcKroJ.js +0 -12
  267. package/dist/assets/index-CqnrpD4d.js +0 -134
  268. package/dist/assets/index-CtQolg_s.js +0 -1
  269. package/dist/assets/index-DSX7jfl3.js +0 -1
  270. package/dist/assets/index-DgoHglX6.js +0 -1
  271. package/dist/assets/index-Dim9am4F.js +0 -291
  272. package/dist/assets/index-DvwEbnCV.js +0 -13
  273. package/dist/assets/index-I-TxeVFM.js +0 -340
  274. package/dist/assets/index-ZSNG3xSj.js +0 -11
  275. package/dist/assets/index-foZCwT8M.css +0 -1
  276. package/dist/assets/index-q27UQsWn.js +0 -16
  277. package/dist/assets/index-q2_9XHCb.js +0 -721
  278. package/dist/assets/index-xuTvwkle.js +0 -316
  279. package/dist/assets/invitation-CI9oI0ML.js +0 -176
  280. package/dist/assets/invite-BD1LrTA8.js +0 -5
  281. package/dist/assets/isEmail-BCMyh8vZ.js +0 -1
  282. package/dist/assets/issue-passport-Bd-T51oN.js +0 -1
  283. package/dist/assets/item-CvCwtq6F.js +0 -1
  284. package/dist/assets/jss-plugin-props-sort.esm-KqvaA55X.js +0 -14
  285. package/dist/assets/layout-CqjS3RFh.js +0 -29
  286. package/dist/assets/list-header-DVNuHNDo.js +0 -57
  287. package/dist/assets/localization-Dutgz4tx.js +0 -1
  288. package/dist/assets/login-8AhFtIOc.js +0 -1
  289. package/dist/assets/login-oauth-callback-CsFM0yAZ.js +0 -1
  290. package/dist/assets/logo-uploader-DabQD2dA.js +0 -133
  291. package/dist/assets/lost-passport-CxN1g858.js +0 -168
  292. package/dist/assets/open-window-Banfzs4p.js +0 -1
  293. package/dist/assets/overview-DcAEoK9V.js +0 -12
  294. package/dist/assets/permission-WZrPwf2m.js +0 -1
  295. package/dist/assets/preferences-Ca7-Ov6u.js +0 -1
  296. package/dist/assets/publish-resource-DZ4bcjeq.js +0 -1
  297. package/dist/assets/purify.es-DutPtr9A.js +0 -2
  298. package/dist/assets/raf-schd.esm-CAeD1GPF.js +0 -1
  299. package/dist/assets/refType-Cd6nIb--.js +0 -1
  300. package/dist/assets/relative-time-DDo7Crj5.js +0 -1
  301. package/dist/assets/resource-dialog-CrGsGXEE.js +0 -299
  302. package/dist/assets/sdk-BTNAvCf8.js +0 -1
  303. package/dist/assets/selector-Br9-dR9y.js +0 -48
  304. package/dist/assets/session-BB2DljXy.js +0 -1
  305. package/dist/assets/setup-Cv1zGHfT.js +0 -19
  306. package/dist/assets/shorten-label-DT9X1B8w.js +0 -1
  307. package/dist/assets/simple-select-BAxNgpxE.js +0 -1
  308. package/dist/assets/slicedToArray-DyRQzefY.js +0 -2
  309. package/dist/assets/start-C7dSefgZ.js +0 -187
  310. package/dist/assets/step-actions-oy5A5R40.js +0 -31
  311. package/dist/assets/studio-Boj6f6bS.js +0 -6
  312. package/dist/assets/switch-control-ChW_GuaN.js +0 -13
  313. package/dist/assets/toPropertyKey-PLuKRk1e.js +0 -1
  314. package/dist/assets/toUpper-DXbBjpP8.js +0 -1
  315. package/dist/assets/transfer-CwhoFyG0.js +0 -16
  316. package/dist/assets/trim-D79XRDvY.js +0 -1
  317. package/dist/assets/uniqBy-BBGY8CA1.js +0 -1
  318. package/dist/assets/unsubscribe-BlsNq4VD.js +0 -1
  319. package/dist/assets/url-join-DILCgsel.js +0 -1
  320. package/dist/assets/use-mobile-B3qubz56.js +0 -1
  321. package/dist/assets/use-mobile-D8jiOBBW.js +0 -1
  322. package/dist/assets/useAsync-CwWuQ31n.js +0 -1
  323. package/dist/assets/useAsyncRetry-o3huFKOY.js +0 -7
  324. package/dist/assets/useFormControl-Bm0BZQS7.js +0 -1
  325. package/dist/assets/useLocalStorage-DdNsoUmT.js +0 -1
  326. package/dist/assets/useSetState-DuK5mvRn.js +0 -1
  327. package/dist/assets/useSlot-RdBOCJrx.js +0 -1
  328. package/dist/assets/useThemeProps-Bmm6xEda.js +0 -1
  329. package/dist/assets/user-center-6IaKm8kc.js +0 -201
  330. package/dist/assets/util-CZ4Gnuni.js +0 -1
  331. package/dist/assets/utils-DoM3o7-Q.js +0 -1
  332. package/dist/assets/visuallyHidden-Dan1xhjv.js +0 -1
  333. package/dist/assets/wrap-locale-DKHVNdE9.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
 
@@ -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};
@@ -0,0 +1 @@
1
+ import{r as f}from"./vendor-react-D-afvo_7.js";import{j as s}from"./vendor-mui-core-BHQ3rDZc.js";var o={};Object.defineProperty(o,"__esModule",{value:!0});var l=o.default=void 0;b(f);var u=s;function b(e){return e&&e.__esModule?e:{default:e}}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(p){return Object.getOwnPropertyDescriptor(e,p).enumerable})),r.push.apply(r,n)}return r}function c(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?arguments[t]:{};t%2?a(Object(r),!0).forEach(function(n){m(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))})}return e}function m(e,t,r){return(t=y(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function y(e){var t=d(e,"string");return typeof t=="symbol"?t:t+""}function d(e,t){if(typeof e!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var n=r.call(e,t||"default");if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var i=function(t){return(0,u.jsx)("svg",c(c({},t),{},{children:(0,u.jsx)("path",{d:"M6.03984 17.625C6.08672 17.625 6.13359 17.6203 6.18047 17.6133L10.1227 16.9219C10.1695 16.9125 10.2141 16.8914 10.2469 16.8563L20.182 6.92109C20.2038 6.89941 20.221 6.87366 20.2328 6.8453C20.2445 6.81695 20.2506 6.78656 20.2506 6.75586C20.2506 6.72516 20.2445 6.69477 20.2328 6.66642C20.221 6.63806 20.2038 6.61231 20.182 6.59063L16.2867 2.69297C16.2422 2.64844 16.1836 2.625 16.1203 2.625C16.057 2.625 15.9984 2.64844 15.9539 2.69297L6.01875 12.6281C5.98359 12.6633 5.9625 12.7055 5.95312 12.7523L5.26172 16.6945C5.23892 16.8201 5.24707 16.9493 5.28545 17.071C5.32384 17.1927 5.39132 17.3032 5.48203 17.393C5.63672 17.543 5.83125 17.625 6.03984 17.625ZM7.61953 13.5375L16.1203 5.03906L17.8383 6.75703L9.3375 15.2555L7.25391 15.6234L7.61953 13.5375ZM20.625 19.5938H3.375C2.96016 19.5938 2.625 19.9289 2.625 20.3438V21.1875C2.625 21.2906 2.70937 21.375 2.8125 21.375H21.1875C21.2906 21.375 21.375 21.2906 21.375 21.1875V20.3438C21.375 19.9289 21.0398 19.5938 20.625 19.5938Z"})}))};i.defaultProps={width:"24",height:"24",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg"};i.displayName="edit";l=o.default=i;export{l 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()),s=a;u=e.default=(0,i.default)((0,s.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m1 15h-2v-2h2zm0-4h-2V7h2z"}),"Error");export{u as d};