@abtnode/blocklet-services 1.16.34-beta-20241125-062922-620c3f17 → 1.16.34-beta-20241126-120125-d0907434

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 (204) hide show
  1. package/api/routes/federated.js +7 -26
  2. package/api/routes/oauth.js +2 -4
  3. package/api/routes/user-session.js +200 -191
  4. package/api/util/attach-shared-utils.js +95 -83
  5. package/api/util/federated.js +33 -0
  6. package/dist/assets/{Add-DrvqL0hE.js → Add-CEnYgOex.js} +1 -1
  7. package/dist/assets/{Alert-BejFmWNH.js → Alert-CUutCRQM.js} +1 -1
  8. package/dist/assets/{ArrowDropDown-CZUn78y5.js → ArrowDropDown-DIG2GNpA.js} +1 -1
  9. package/dist/assets/{Autocomplete-BDAQ52_1.js → Autocomplete-BaPr9QiM.js} +1 -1
  10. package/dist/assets/{Avatar-kkkoJE0g.js → Avatar-CeWQngrs.js} +1 -1
  11. package/dist/assets/{ButtonGroup-WlPKzLhC.js → ButtonGroup-CfPEps06.js} +1 -1
  12. package/dist/assets/{CSSTransition-C2Gy3zp4.js → CSSTransition-BZUscMXa.js} +1 -1
  13. package/dist/assets/{CheckCircle-HvwKrdUR.js → CheckCircle-CL0KsA5E.js} +1 -1
  14. package/dist/assets/{ChevronLeft-ChTfIUFT.js → ChevronLeft-Qerk8qgF.js} +1 -1
  15. package/dist/assets/{ChevronRight-DmcZK4DK.js → ChevronRight-CSGwuunG.js} +1 -1
  16. package/dist/assets/{Close-B_rG_xrc.js → Close-D6sXyhlH.js} +1 -1
  17. package/dist/assets/{Delete-CWSox7Pi.js → Delete-CmO5kVHD.js} +1 -1
  18. package/dist/assets/{DeleteOutline-CCuUMIOD.js → DeleteOutline-8UjaH55s.js} +1 -1
  19. package/dist/assets/{DialogContentText-AZa4UZAk.js → DialogContentText-B00yXaoi.js} +1 -1
  20. package/dist/assets/{Done-TRARuAiP.js → Done-Dgvss9oA.js} +1 -1
  21. package/dist/assets/{Download-DLBLdXgp.js → Download-ChsqP0uH.js} +1 -1
  22. package/dist/assets/{EditIcon-B7GE1XOt.js → EditIcon-COwmruWo.js} +1 -1
  23. package/dist/assets/{Error-DFKaWPMg.js → Error-FscbJgp7.js} +1 -1
  24. package/dist/assets/{ExpandMore-Co-_XFGT.js → ExpandMore-GfZ-uN5v.js} +1 -1
  25. package/dist/assets/{FormControl-BXFBXBjg.js → FormControl-C6JD7494.js} +1 -1
  26. package/dist/assets/{FormControlLabel-Cj9C6pO9.js → FormControlLabel-X8LKIHS4.js} +1 -1
  27. package/dist/assets/{FormGroup-BgZW2j0M.js → FormGroup-NRynWVWb.js} +1 -1
  28. package/dist/assets/{Google-Bc3te3Qz.js → Google-SNXE1Rfm.js} +1 -1
  29. package/dist/assets/{Grid-Cdg6My8u.js → Grid-CMn9enps.js} +1 -1
  30. package/dist/assets/{HelpOutline-DHPhK_es.js → HelpOutline-DMKvoG5B.js} +1 -1
  31. package/dist/assets/{Hidden-CrDKveON.js → Hidden-CuDy4bSo.js} +1 -1
  32. package/dist/assets/{InfoOutlined-CBAB8Exy.js → InfoOutlined-DRNI79ap.js} +1 -1
  33. package/dist/assets/{InputAdornment-scbCVxkC.js → InputAdornment-trK1o6Ra.js} +1 -1
  34. package/dist/assets/{LastPage-PwdeYobs.js → LastPage-DWacMALj.js} +1 -1
  35. package/dist/assets/{Launch-Esgq-P4W.js → Launch-nHt2LvAq.js} +1 -1
  36. package/dist/assets/{LaunchOutlined-n2nxc88a.js → LaunchOutlined-A7b6W5__.js} +1 -1
  37. package/dist/assets/{Link-Chjdc6xT.js → Link-DmneDBbP.js} +1 -1
  38. package/dist/assets/{ListItemButton-CdKDiD3I.js → ListItemButton-CKeRCJ5w.js} +1 -1
  39. package/dist/assets/{ListSubheader-XBVgmuKv.js → ListSubheader-K22abWoa.js} +1 -1
  40. package/dist/assets/{LoadingButton-DA1yC-kT.js → LoadingButton-BDgaeIOh.js} +1 -1
  41. package/dist/assets/{LockIcon-BirTrSPk.js → LockIcon-HEOjrnKf.js} +1 -1
  42. package/dist/assets/{Loop-7B6BliWo.js → Loop-FfybK8NL.js} +1 -1
  43. package/dist/assets/{MarkEmailRead-DOV-CcYR.js → MarkEmailRead-Dc6AcWRS.js} +1 -1
  44. package/dist/assets/{Menu-DHy4VyDW.js → Menu-ICImY48f.js} +1 -1
  45. package/dist/assets/{MoreHoriz-BsqSBC3_.js → MoreHoriz-QJ-dNyyA.js} +1 -1
  46. package/dist/assets/{MoreVert-B5eqgNGS.js → MoreVert-B46gT3ic.js} +1 -1
  47. package/dist/assets/{OpenInNew-DZ_gvUzN.js → OpenInNew-BGNoXYXt.js} +1 -1
  48. package/dist/assets/{Pagination-C83UkGSd.js → Pagination-BfKMdjic.js} +1 -1
  49. package/dist/assets/{PlayArrow-lZ_9d9Mv.js → PlayArrow-BCwK0VYi.js} +1 -1
  50. package/dist/assets/{QuestionMarkCircle-JNr-NuUt.js → QuestionMarkCircle-BRwsi4c3.js} +1 -1
  51. package/dist/assets/{RadioGroup-CMawEABb.js → RadioGroup-BM5Kucog.js} +1 -1
  52. package/dist/assets/{Search-sbQ5imrV.js → Search-vKjAZRDI.js} +1 -1
  53. package/dist/assets/{Select-DUqBNlJT.js → Select-NBBlNRtC.js} +1 -1
  54. package/dist/assets/{ServerLogo-BTP7_6r3.js → ServerLogo-Be4McAaJ.js} +1 -1
  55. package/dist/assets/{Skeleton-DF-GsUea.js → Skeleton-jwrjHAcT.js} +1 -1
  56. package/dist/assets/{Slider-BCZ2cCDg.js → Slider-CJXmz9ej.js} +1 -1
  57. package/dist/assets/{Stack-FAMhTibv.js → Stack-DXMuFZOU.js} +1 -1
  58. package/dist/assets/{Stepper-b62gMXip.js → Stepper-mdLmfHWu.js} +1 -1
  59. package/dist/assets/{TextField-CmfNcPZp.js → TextField-BE9HBBNF.js} +1 -1
  60. package/dist/assets/{Toolbar-CpYKKa3O.js → Toolbar-7qNQ4bZ4.js} +1 -1
  61. package/dist/assets/{ViewColumn-B0BnNDVH.js → ViewColumn-BeJAI0RW.js} +1 -1
  62. package/dist/assets/{ViewList-BAdS9i6w.js → ViewList-BTSZluzD.js} +1 -1
  63. package/dist/assets/{_createAggregator-C-mfkhIa.js → _createAggregator-Cmwsfh55.js} +1 -1
  64. package/dist/assets/{access-control-TZ0OUaSN.js → access-control-PlOvJ_AO.js} +1 -1
  65. package/dist/assets/{actions-BqmYvcdf.js → actions-BHddSviS.js} +1 -1
  66. package/dist/assets/{add-component-core-DZBoGXUA.js → add-component-core-B1Zb7GR1.js} +12 -12
  67. package/dist/assets/add-resource-D1dS9Z66.js +1 -0
  68. package/dist/assets/{addon-BuKGtRc4.js → addon-FDUmsP1a.js} +1 -1
  69. package/dist/assets/{analytics-D56V3Sop.js → analytics-DasUNOZZ.js} +1 -1
  70. package/dist/assets/api-CHM7C61K.js +1 -0
  71. package/dist/assets/{audit-logs-b9BOYn27.js → audit-logs-DGf6UpQ9.js} +1 -1
  72. package/dist/assets/{base32-CGlguZYQ.js → base32-CqVdgCv-.js} +1 -1
  73. package/dist/assets/{branding-SdIrXaeA.js → branding-D9mZ97it.js} +2 -2
  74. package/dist/assets/{bundle-avatar-CEJOCMtg.js → bundle-avatar-CmcJLcUi.js} +1 -1
  75. package/dist/assets/{button-CJhVrVoJ.js → button-f1MmdcUZ.js} +1 -1
  76. package/dist/assets/{click-to-copy-DpIi-Ham.js → click-to-copy-DvwHcRcx.js} +1 -1
  77. package/dist/assets/{complete-1WLD3Yhs.js → complete-Cm-0T_kv.js} +1 -1
  78. package/dist/assets/{component-DdVHNXiX.js → component-COIRVrMw.js} +1 -1
  79. package/dist/assets/{config-DObZpcn4.js → config-Csj5xBon.js} +1 -1
  80. package/dist/assets/{config-DBh-abLa.js → config-DFQuXpSq.js} +1 -1
  81. package/dist/assets/{config-navigation-hfsPmuuQ.js → config-navigation-BeY6OIBs.js} +1 -1
  82. package/dist/assets/{config-space-CKHFApDK.js → config-space-B-uzzQOf.js} +1 -1
  83. package/dist/assets/{confirm-8d8O8-hN.js → confirm-BeuzMgKx.js} +1 -1
  84. package/dist/assets/{connect-BO8mJZOj.js → connect-BXJ-zYBM.js} +1 -1
  85. package/dist/assets/{connect-DTsatDsu.js → connect-DyhXk7LV.js} +1 -1
  86. package/dist/assets/{connect-to-Dgx9BKmm.js → connect-to-ClkUUvxy.js} +1 -1
  87. package/dist/assets/{content-layout-BDtUAEV0.js → content-layout-BuukPoQq.js} +1 -1
  88. package/dist/assets/{dashboard-zMsgPjUH.js → dashboard-lE_T9vNV.js} +3 -3
  89. package/dist/assets/{deprecate-DRUEDZmV.js → deprecate-Ohw0wM22.js} +1 -1
  90. package/dist/assets/{did-address-CFfKa4ZS.js → did-address-Dl7sEfPI.js} +1 -1
  91. package/dist/assets/{domain-BRoqwOqZ.js → domain-0D6iyno8.js} +1 -1
  92. package/dist/assets/{domain-list-DoZbI3G_.js → domain-list-DPC_fR4s.js} +1 -1
  93. package/dist/assets/{email-BM1qa0Kc.js → email-Dxr-3jU8.js} +3 -3
  94. package/dist/assets/emotion-cache.browser.esm-OvB3R1tt.js +1 -0
  95. package/dist/assets/{exchange-passport-B9Lw18ge.js → exchange-passport-be-akwXh.js} +1 -1
  96. package/dist/assets/{fallback-Bog6C-ue.js → fallback-BtrnFKYB.js} +1 -1
  97. package/dist/assets/{form-text-input-D8koWTiU.js → form-text-input-DqB1EkYl.js} +1 -1
  98. package/dist/assets/{format-error-CovOYOWJ.js → format-error-ax9-5p2F.js} +1 -1
  99. package/dist/assets/{fuel-5L-T-vll.js → fuel-M6wo1TMe.js} +1 -1
  100. package/dist/assets/{fullpage-Box75beI.js → fullpage-Be5VLtbn.js} +1 -1
  101. package/dist/assets/{home-CWu-pk3b.js → home-Sj4zjS4-.js} +1 -1
  102. package/dist/assets/{iframe-BJHPqysN.js → iframe-0YsarcCH.js} +1 -1
  103. package/dist/assets/{index-DaQDeVXf.js → index-3ihUy4xD.js} +1 -1
  104. package/dist/assets/{index-C1CKS8aB.js → index-B4pJXjk5.js} +1 -1
  105. package/dist/assets/{index-CdezW1Kw.js → index-BFoE_Yt3.js} +1 -1
  106. package/dist/assets/{index-DmCU66xw.js → index-BPIr1Ect.js} +1 -1
  107. package/dist/assets/{index-RCN26efj.js → index-BPPZQpLf.js} +1 -1
  108. package/dist/assets/{index-BNJA7fMm.js → index-BcngleaY.js} +1 -1
  109. package/dist/assets/{index-nwhvC7DB.js → index-BdQKsIdG.js} +1 -1
  110. package/dist/assets/{index-CVkCg5Aj.js → index-BpmSJ9Yl.js} +1 -1
  111. package/dist/assets/{index-OSlxm1AT.js → index-Bs6sOIsv.js} +1 -1
  112. package/dist/assets/{index-B43BetvD.js → index-C94zTqbe.js} +1 -1
  113. package/dist/assets/{index-Sv01KoW8.js → index-CB8xpfia.js} +1 -1
  114. package/dist/assets/{index-DlOKstn-.js → index-CM5-ZMwr.js} +3 -3
  115. package/dist/assets/{index-DigEOLzs.js → index-CToJFS2F.js} +1 -1
  116. package/dist/assets/{index-BDRTenWj.js → index-CfzGAVxb.js} +1 -1
  117. package/dist/assets/{index-cidQmAep.js → index-Chx10XyZ.js} +1 -1
  118. package/dist/assets/{index-4nRB-kyL.js → index-CmjMRcmz.js} +1 -1
  119. package/dist/assets/{index-CyvvlQUB.js → index-CsIL9BNL.js} +1 -1
  120. package/dist/assets/{index-CVNhVzkq.js → index-Ctype_yD.js} +1 -1
  121. package/dist/assets/{index-DCyBcr-q.js → index-D1gRNL5z.js} +1 -1
  122. package/dist/assets/{index-nA-fvgOS.js → index-DSgReUML.js} +1 -1
  123. package/dist/assets/{index-D-ntO8rE.js → index-DUCjQn9B.js} +1 -1
  124. package/dist/assets/{index-CBvRZgBF.js → index-DhEfbg1G.js} +1 -1
  125. package/dist/assets/{index-yypbZOfl.js → index-DkC4Z7ZS.js} +1 -1
  126. package/dist/assets/{index-B6JqnGav.js → index-Drscafxp.js} +2 -2
  127. package/dist/assets/{index-D_a9PK4V.js → index-Dv3UtNf0.js} +1 -1
  128. package/dist/assets/{index-B6_C9nGz.js → index-KQCKuBQl.js} +1 -1
  129. package/dist/assets/{index-DhmNHIsJ.js → index-L1uvdKP1.js} +1 -1
  130. package/dist/assets/{index-z1j9rzLQ.js → index-RI50EWV7.js} +1 -1
  131. package/dist/assets/{index-CAPbxUg5.js → index-XgLsjfUY.js} +1 -1
  132. package/dist/assets/{index-C2Js2VJs.js → index-dwIzYyMO.js} +1 -1
  133. package/dist/assets/{index-DQ1qH1cl.js → index-emWbc0aq.js} +1 -1
  134. package/dist/assets/{index-HtPUMJiU.js → index-k1mDfWTu.js} +1 -1
  135. package/dist/assets/{index-CdvA-nst.js → index-lNUKqVwv.js} +4 -4
  136. package/dist/assets/{index-FRZkFqzO.js → index-sgeabixm.js} +3 -3
  137. package/dist/assets/{invitation-B_tDaqpP.js → invitation-woQ5Oz_M.js} +1 -1
  138. package/dist/assets/{invite-BxGFltRp.js → invite-BVQ7mP5X.js} +1 -1
  139. package/dist/assets/{isEmail-DETpi_Kb.js → isEmail-B5vNiuJV.js} +1 -1
  140. package/dist/assets/{issue-passport-CSBAlOX8.js → issue-passport-BVA9lwvN.js} +1 -1
  141. package/dist/assets/{item-BRd0dxiN.js → item-CozCCAB-.js} +1 -1
  142. package/dist/assets/{jss-plugin-props-sort.esm-DVpQ5yti.js → jss-plugin-props-sort.esm-DqLky9fL.js} +1 -1
  143. package/dist/assets/{launch-result-message-C1eFaH2g.js → launch-result-message-BHmkx4EK.js} +1 -1
  144. package/dist/assets/{layout-BqxJknpc.js → layout-BjYG2I0e.js} +1 -1
  145. package/dist/assets/{list-header-xJwS88e7.js → list-header-U7WlkshP.js} +1 -1
  146. package/dist/assets/localization-BhW_1W55.js +1 -0
  147. package/dist/assets/{log-BeCiBP1M.js → log-BWvBeyFu.js} +1 -1
  148. package/dist/assets/{login-5cPOokIA.js → login-BmaH-PFO.js} +1 -1
  149. package/dist/assets/{login-oauth-callback-Bs-N26OI.js → login-oauth-callback-jcq2ro8T.js} +1 -1
  150. package/dist/assets/{logo-uploader-eG5vS5PT.js → logo-uploader-DRw1h7P9.js} +3 -3
  151. package/dist/assets/{lost-passport-B6EDBN0v.js → lost-passport-DwrNxBrg.js} +3 -3
  152. package/dist/assets/{lottie-react.esm-BJHzlo-r.js → lottie-react.esm-Crfv_vrn.js} +1 -1
  153. package/dist/assets/{notifications-D43qhnwk.js → notifications-C6hijIai.js} +1 -1
  154. package/dist/assets/{open-window-C5vksiRO.js → open-window-C0yEQai7.js} +1 -1
  155. package/dist/assets/{overview-CocE0lv3.js → overview-DdYvrtas.js} +1 -1
  156. package/dist/assets/{page-header--q6whIwK.js → page-header-DfEZNX4T.js} +1 -1
  157. package/dist/assets/{permission-DUJv7a1-.js → permission-C34_PWS3.js} +1 -1
  158. package/dist/assets/{preferences-AQkIuV2K.js → preferences-T7CTeNR7.js} +1 -1
  159. package/dist/assets/publish-resource-RK5OgLdI.js +1 -0
  160. package/dist/assets/{raf-schd.esm-DsHttn7z.js → raf-schd.esm-D8AMXkr5.js} +1 -1
  161. package/dist/assets/{react-beautiful-dnd.esm-DcPMGQEg.js → react-beautiful-dnd.esm-DVrxw2Fw.js} +1 -1
  162. package/dist/assets/refType-CRusJQhT.js +1 -0
  163. package/dist/assets/{resource-dialog-B5zwd0d0.js → resource-dialog-CQkjcdEl.js} +1 -1
  164. package/dist/assets/sdk-D9DeARmG.js +1 -0
  165. package/dist/assets/{selector-BWYpRcfb.js → selector-DyynUZ1K.js} +1 -1
  166. package/dist/assets/session-DwStRueZ.js +1 -0
  167. package/dist/assets/{setup-DVdr-Ufq.js → setup-BM9MxCRJ.js} +3 -3
  168. package/dist/assets/{shorten-label-CEzmS0N5.js → shorten-label-DgSj_iKd.js} +1 -1
  169. package/dist/assets/{simple-select-Dhi7iDYe.js → simple-select-D5JsYrcp.js} +1 -1
  170. package/dist/assets/{slicedToArray-iE8MT9PB.js → slicedToArray-BvEze-go.js} +1 -1
  171. package/dist/assets/{start-CSsdyyNU.js → start-DMZ_83G5.js} +1 -1
  172. package/dist/assets/{step-actions-DfqIHjeq.js → step-actions-BhqRwM1p.js} +1 -1
  173. package/dist/assets/{studio-DRAx93ei.js → studio-CJHXx3nz.js} +1 -1
  174. package/dist/assets/{switch-control-BkQkUgCM.js → switch-control-BCRT7NPQ.js} +1 -1
  175. package/dist/assets/{toUpper-CgUsg4OW.js → toUpper-VL7Bgo0i.js} +1 -1
  176. package/dist/assets/{transfer-CoLhRcuo.js → transfer-v1LLtXqH.js} +1 -1
  177. package/dist/assets/{trim-CWNwpiNo.js → trim-DP0jYool.js} +1 -1
  178. package/dist/assets/{uniqBy-C5F74Dtm.js → uniqBy-Ds-3fKqa.js} +1 -1
  179. package/dist/assets/{unsubscribe-6fUWnoTw.js → unsubscribe-BVuSOEEx.js} +1 -1
  180. package/dist/assets/{url-join-CZtmq1NB.js → url-join-CJw6XrTa.js} +1 -1
  181. package/dist/assets/{use-mobile-CUUBXgJx.js → use-mobile-BOfpe7EU.js} +1 -1
  182. package/dist/assets/{use-mobile-DwzyaoXc.js → use-mobile-CK46GXLD.js} +1 -1
  183. package/dist/assets/{useAsync-DD0YPYoS.js → useAsync-B3AEn2Wm.js} +1 -1
  184. package/dist/assets/{useFormControl-BL1v7rl-.js → useFormControl-DzctaIge.js} +1 -1
  185. package/dist/assets/{useLocalStorage-D0ViwHPK.js → useLocalStorage-C6aEhqFy.js} +1 -1
  186. package/dist/assets/{useSetState-CaW4MG-2.js → useSetState-Byn4PXJ9.js} +1 -1
  187. package/dist/assets/{useSlot-CXDnszbU.js → useSlot-BcOJq--Y.js} +1 -1
  188. package/dist/assets/{useSlotProps-_l_btYci.js → useSlotProps-Cm4YEMsK.js} +1 -1
  189. package/dist/assets/{useThemeProps-BuPPlocj.js → useThemeProps-BCjwemRG.js} +1 -1
  190. package/dist/assets/{user-center-CCplZBFV.js → user-center-CgfPJ8DB.js} +1 -1
  191. package/dist/assets/{user-sessions-BcrnRXiG.js → user-sessions-D7CwcMwf.js} +1 -1
  192. package/dist/assets/{util-BeBowuUp.js → util-tRug1FPz.js} +1 -1
  193. package/dist/assets/{wrap-locale-MPr5fZic.js → wrap-locale-CQSXZnej.js} +1 -1
  194. package/dist/index.html +1 -1
  195. package/dist/service-worker.js +1 -1
  196. package/package.json +19 -19
  197. package/dist/assets/add-resource-CqkVchdo.js +0 -1
  198. package/dist/assets/api-BvIXgXDN.js +0 -1
  199. package/dist/assets/emotion-cache.browser.esm-4zaifxzt.js +0 -1
  200. package/dist/assets/localization-CmnKrS_Z.js +0 -1
  201. package/dist/assets/publish-resource-CxkA39Ir.js +0 -1
  202. package/dist/assets/refType-D9byZzl-.js +0 -1
  203. package/dist/assets/sdk-DrdJIJgz.js +0 -1
  204. package/dist/assets/session-WU4Y95zb.js +0 -1
@@ -21,7 +21,12 @@ const initJwt = require('../libs/jwt');
21
21
  const { createTokenFn, getDidConnectVersion } = require('../util');
22
22
  const ensureBlocklet = require('../middlewares/ensure-blocklet');
23
23
  const verifyFederatedCall = require('../middlewares/verify-federated-call');
24
- const { getUserAvatarUrl, getFederatedMaster, getUserWithinFederated, isMaster } = require('../util/federated');
24
+ const {
25
+ getUserAvatarUrl,
26
+ getFederatedMaster,
27
+ getUserWithinFederated,
28
+ getTrustedDomains,
29
+ } = require('../util/federated');
25
30
  const { declareAccount, migrateAccount } = require('../services/oauth');
26
31
 
27
32
  const PREFIX = WELLKNOWN_SERVICE_PATH_PREFIX;
@@ -840,31 +845,7 @@ module.exports = {
840
845
  // 获取当前站点所有可信的域名
841
846
  server.get(`${prefix}/getTrustedDomains`, ensureBlocklet(), async (req, res) => {
842
847
  const { blocklet } = req;
843
- const teamDid = blocklet.appPid;
844
- const federated = defaults(cloneDeep(blocklet.settings.federated || {}), {
845
- config: {
846
- appId: blocklet.appDid,
847
- appPid: teamDid,
848
- },
849
- sites: [],
850
- });
851
- const nodeInfo = await req.getNodeInfo();
852
- const domainAliases = await node.getBlockletDomainAliases({ blocklet, nodeInfo });
853
- const domainList = domainAliases.map((item) => item.value);
854
- federated.sites
855
- .filter((x) => x.status === 'approved' || isMaster(x))
856
- .forEach((cur) => {
857
- try {
858
- const appDomain = new URL(cur.appUrl).host;
859
- if (appDomain) {
860
- domainList.push(appDomain);
861
- }
862
- } catch {
863
- logger.error('Failed to get domain from appUrl', { appUrl: cur.appUrl });
864
- }
865
- domainList.push(...(cur?.aliasDomain || []));
866
- });
867
- const result = [...new Set(domainList)];
848
+ const result = await getTrustedDomains({ node, req, blocklet });
868
849
  res.json(result);
869
850
  });
870
851
  },
@@ -965,13 +965,11 @@ module.exports = {
965
965
 
966
966
  const checkReferrer = async (req, res, next) => {
967
967
  const blocklet = await req.getBlocklet();
968
- const nodeInfo = await req.getNodeInfo();
969
- const domainAliases = await node.getBlockletDomainAliases({ blocklet, nodeInfo });
970
- const domainAliasesHost = domainAliases.map((x) => x.value);
968
+ const trustedDomains = await federatedUtil.getTrustedDomains({ node, req, blocklet });
971
969
  const referrer = req.get('referrer');
972
970
  const referrerHost = new URL(referrer).host;
973
971
 
974
- if (!domainAliasesHost.includes(referrerHost)) {
972
+ if (!trustedDomains.includes(referrerHost)) {
975
973
  res.status(400).send(`Invalid host: ${referrerHost}`);
976
974
  return;
977
975
  }
@@ -1,21 +1,21 @@
1
1
  /* eslint-disable no-await-in-loop */
2
2
  const { WELLKNOWN_SERVICE_PATH_PREFIX, SESSION_TTL } = require('@abtnode/constant');
3
- const { LOGIN_PROVIDER } = require('@blocklet/constant');
4
- const pick = require('lodash/pick');
3
+ // const { LOGIN_PROVIDER } = require('@blocklet/constant');
4
+ // const pick = require('lodash/pick');
5
5
  const defaults = require('lodash/defaults');
6
6
  const cloneDeep = require('lodash/cloneDeep');
7
- const sortBy = require('lodash/sortBy');
7
+ // const sortBy = require('lodash/sortBy');
8
8
  const omit = require('lodash/omit');
9
9
  const pLimit = require('p-limit');
10
- const { getSourceProvider } = require('@blocklet/meta/lib/did-utils');
10
+ // const { getSourceProvider } = require('@blocklet/meta/lib/did-utils');
11
11
  const getRequestIP = require('@abtnode/util/lib/get-request-ip');
12
- const { messages } = require('@abtnode/auth/lib/auth');
12
+ // const { messages } = require('@abtnode/auth/lib/auth');
13
13
 
14
- const logger = require('../libs/logger')('blocklet-services:user-session');
14
+ // const logger = require('../libs/logger')('blocklet-services:user-session');
15
15
  const ensureBlocklet = require('../middlewares/ensure-blocklet');
16
16
  const { getUserAvatarUrl } = require('../util/federated');
17
- const initJwt = require('../libs/jwt');
18
- const { createTokenFn, getDidConnectVersion } = require('../util');
17
+ // const initJwt = require('../libs/jwt');
18
+ // const { createTokenFn, getDidConnectVersion } = require('../util');
19
19
 
20
20
  const prefix = `${WELLKNOWN_SERVICE_PATH_PREFIX}/api/user-session`;
21
21
  const limit = pLimit(5);
@@ -89,199 +89,208 @@ async function patchUserSessionData(userSession, { blocklet, appPid, teamDid, no
89
89
  }
90
90
 
91
91
  module.exports = {
92
+ // eslint-disable-next-line no-unused-vars
92
93
  init(app, node, options) {
94
+ // FIXME: @zhanghan 登录要确保安全性
93
95
  // NOTE: 保留 /login 路由,该功能不是针对于某一个实体来操作的,需要更明确表达意图
94
- app.post(`${prefix}/login`, ensureBlocklet(), async (req, res) => {
95
- const { blocklet } = req;
96
- const loginUserSession = req.body;
97
- let visitorId = req.body?.visitorId;
98
- if (!visitorId) {
99
- visitorId = req.get('x-blocklet-visitor-id');
100
- }
96
+ app.post(`${prefix}/login`, ensureBlocklet(), (req, res) => {
97
+ res.status(400).json({ error: 'not supported' });
101
98
 
102
- if (!loginUserSession.userDid) {
103
- res.status(400).json({ error: 'userDid is required' });
104
- return;
105
- }
106
- if (!loginUserSession.appPid) {
107
- res.status(400).json({ error: 'appPid is required' });
108
- return;
109
- }
99
+ // const { blocklet } = req;
100
+ // const loginUserSession = req.body;
101
+ // // let visitorId = req.body?.visitorId;
102
+ // // if (!visitorId) {
103
+ // // visitorId = req.get('x-blocklet-visitor-id');
104
+ // // }
105
+ // if (!loginUserSession.id) {
106
+ // res.status(400).json({ error: 'not supported' });
107
+ // return;
108
+ // }
110
109
 
111
- const teamDid = blocklet.appPid;
112
- const userSessions = await node.getUserSession({
113
- teamDid,
114
- userDid: loginUserSession.userDid,
115
- visitorId,
116
- id: loginUserSession.id,
117
- });
118
- const now = Date.now();
119
- const sessionTtl = blocklet.settings?.session?.ttl || SESSION_TTL;
120
- // NOTICE: 保持与前端一致的排序方式,确保此时续期的是前端展示的 walletOS
121
- const sortedUserSessions = sortBy(userSessions, (x) => now - new Date(x.updatedAt).getTime());
122
- const validSession = sortedUserSessions.some((x) => now - new Date(x.updatedAt).getTime() < sessionTtl * 1000);
123
-
124
- if (validSession) {
125
- const user = await node.getUser({ teamDid, user: { did: loginUserSession.userDid } });
126
- if (!user.approved) {
127
- res.status(401).json(messages.notAllowedAppUser.en);
128
- return;
129
- }
130
- const federated = defaults(cloneDeep(blocklet.settings.federated || {}), {
131
- config: {
132
- appId: blocklet.appDid,
133
- appPid: teamDid,
134
- },
135
- sites: [],
136
- });
137
- const sourceProvider = getSourceProvider(user);
138
-
139
- const provider = sourceProvider || LOGIN_PROVIDER.WALLET;
140
-
141
- const memberSite = federated.sites.find(
142
- (item) => item.appPid === loginUserSession.appPid && item.isMaster === false
143
- );
144
- const postUser = pick(user, ['did', 'pk', 'fullName', 'locale', 'inviter', 'generation']);
145
- postUser.lastLoginAt = getRequestIP(req);
146
-
147
- if (user.email) {
148
- postUser.email = user.email;
149
- }
150
- if (user.avatar) {
151
- postUser.avatar = getUserAvatarUrl(user.avatar, blocklet);
152
- }
153
-
154
- let result = {};
155
-
156
- const walletOS = validSession?.extra?.walletOS || 'web';
157
-
158
- const isFederatedLogin = !!memberSite;
159
- if (isFederatedLogin) {
160
- try {
161
- result = await node.loginFederated({
162
- did: teamDid,
163
- data: {
164
- user: postUser,
165
- passport: loginUserSession.passportId ? { id: loginUserSession.passportId } : undefined,
166
- walletOS,
167
- provider,
168
- },
169
- site: memberSite,
170
- });
171
- } catch (err) {
172
- if (err.response) {
173
- const { status, data } = err.response;
174
- res.status(status).json(data);
175
- return;
176
- }
177
- throw err;
178
- }
179
- } else {
180
- const { createSessionToken } = initJwt(node, options);
181
- const createToken = createTokenFn(createSessionToken);
182
- const { secret } = await req.getBlockletInfo();
183
- const sessionConfig = blocklet.settings?.session || {};
184
- const targetPassport = loginUserSession.passportId
185
- ? (user?.passports || []).find((item) => item.id === loginUserSession.passportId)
186
- : null;
187
- const loggedInUser = await node.loginUser({
188
- teamDid,
189
- user: {
190
- did: postUser.did,
191
- pk: postUser.pk,
192
- passport: targetPassport,
193
- connectedAccount: {
194
- provider,
195
- did: user.did,
196
- pk: user.pk,
197
- },
198
- },
199
- });
200
-
201
- result = createToken(
202
- user.did,
203
- {
204
- secret,
205
- passport: targetPassport,
206
- role: targetPassport?.role || 'guest',
207
- fullName: loggedInUser.fullName,
208
- provider,
209
- walletOS,
210
- emailVerified: !!user?.emailVerified,
211
- phoneVerified: !!user?.phoneVerified,
212
- },
213
- {
214
- ...sessionConfig,
215
- didConnectVersion: getDidConnectVersion(req),
216
- }
217
- );
218
- }
219
-
220
- const lastLoginIp = getRequestIP(req);
221
- const ua = req.get('user-agent');
222
- const walletDeviceMessageToken = req.get('wallet-device-message-token');
223
- const walletDeviceId = req.get('wallet-device-id');
224
-
225
- const userSessionDoc = await node.upsertUserSession({
226
- id: loginUserSession.id,
227
- teamDid,
228
- userDid: loginUserSession.userDid,
229
- visitorId,
230
- appPid: loginUserSession.appPid,
231
- passportId: loginUserSession.passportId,
232
- status: 'online',
233
- ua,
234
- lastLoginIp,
235
- extra: {
236
- walletOS,
237
- walletDeviceMessageToken,
238
- walletDeviceId,
239
- },
240
- });
110
+ // if (!loginUserSession.userDid) {
111
+ // res.status(400).json({ error: 'userDid is required' });
112
+ // return;
113
+ // }
114
+ // if (!loginUserSession.appPid) {
115
+ // res.status(400).json({ error: 'appPid is required' });
116
+ // return;
117
+ // }
241
118
 
242
- if (isFederatedLogin) {
243
- node.syncUserSession({
244
- teamDid,
245
- userDid: loginUserSession.userDid,
246
- visitorId: userSessionDoc.visitorId,
247
- passportId: loginUserSession.passportId,
248
- targetAppPid: loginUserSession.appPid,
249
- ua,
250
- lastLoginIp,
251
- extra: {
252
- walletOS,
253
- walletDeviceMessageToken,
254
- walletDeviceId,
255
- },
256
- });
257
- }
258
-
259
- logger.info('quick-login with', {
260
- teamDid,
261
- visitorId,
262
- userDid: loginUserSession.userDid,
263
- appPid: loginUserSession.appPid,
264
- passportId: loginUserSession.passportId,
265
- extra: {
266
- walletOS,
267
- },
268
- });
119
+ // const teamDid = blocklet.appPid;
120
+ // const userSessions = await node.getUserSession({
121
+ // teamDid,
122
+ // userDid: loginUserSession.userDid,
123
+ // // visitorId,
124
+ // id: loginUserSession.id,
125
+ // });
126
+ // const now = Date.now();
127
+ // const sessionTtl = blocklet.settings?.session?.ttl || SESSION_TTL;
128
+ // // NOTICE: 保持与前端一致的排序方式,确保此时续期的是前端展示的 walletOS
129
+ // const sortedUserSessions = sortBy(userSessions, (x) => now - new Date(x.updatedAt).getTime());
130
+ // const validSession = sortedUserSessions.some((x) => now - new Date(x.updatedAt).getTime() < sessionTtl * 1000);
269
131
 
270
- res.json({ ...result, visitorId: userSessionDoc.visitorId });
271
- } else {
272
- logger.warn('failed to quick-login with', {
273
- teamDid,
274
- visitorId,
275
- userDid: loginUserSession.userDid,
276
- appPid: loginUserSession.appPid,
277
- passportId: loginUserSession.passportId,
278
- });
279
- res.status(401).json({ error: 'session expired' });
280
- }
132
+ // if (validSession) {
133
+ // const user = await node.getUser({ teamDid, user: { did: loginUserSession.userDid } });
134
+ // if (!user.approved) {
135
+ // res.status(401).json(messages.notAllowedAppUser.en);
136
+ // return;
137
+ // }
138
+ // const federated = defaults(cloneDeep(blocklet.settings.federated || {}), {
139
+ // config: {
140
+ // appId: blocklet.appDid,
141
+ // appPid: teamDid,
142
+ // },
143
+ // sites: [],
144
+ // });
145
+ // const sourceProvider = getSourceProvider(user);
146
+
147
+ // const provider = sourceProvider || LOGIN_PROVIDER.WALLET;
148
+
149
+ // const memberSite = federated.sites.find(
150
+ // (item) => item.appPid === loginUserSession.appPid && item.isMaster === false
151
+ // );
152
+ // const postUser = pick(user, ['did', 'pk', 'fullName', 'locale', 'inviter', 'generation']);
153
+ // postUser.lastLoginAt = getRequestIP(req);
154
+
155
+ // if (user.email) {
156
+ // postUser.email = user.email;
157
+ // }
158
+ // if (user.avatar) {
159
+ // postUser.avatar = getUserAvatarUrl(user.avatar, blocklet);
160
+ // }
161
+
162
+ // let result = {};
163
+
164
+ // const walletOS = validSession?.extra?.walletOS || 'web';
165
+
166
+ // const isFederatedLogin = !!memberSite;
167
+ // if (isFederatedLogin) {
168
+ // try {
169
+ // result = await node.loginFederated({
170
+ // did: teamDid,
171
+ // data: {
172
+ // user: postUser,
173
+ // passport: loginUserSession.passportId ? { id: loginUserSession.passportId } : undefined,
174
+ // walletOS,
175
+ // provider,
176
+ // },
177
+ // site: memberSite,
178
+ // });
179
+ // } catch (err) {
180
+ // if (err.response) {
181
+ // const { status, data } = err.response;
182
+ // res.status(status).json(data);
183
+ // return;
184
+ // }
185
+ // throw err;
186
+ // }
187
+ // } else {
188
+ // const { createSessionToken } = initJwt(node, options);
189
+ // const createToken = createTokenFn(createSessionToken);
190
+ // const { secret } = await req.getBlockletInfo();
191
+ // const sessionConfig = blocklet.settings?.session || {};
192
+ // const targetPassport = loginUserSession.passportId
193
+ // ? (user?.passports || []).find((item) => item.id === loginUserSession.passportId)
194
+ // : null;
195
+ // const loggedInUser = await node.loginUser({
196
+ // teamDid,
197
+ // user: {
198
+ // did: postUser.did,
199
+ // pk: postUser.pk,
200
+ // passport: targetPassport,
201
+ // connectedAccount: {
202
+ // provider,
203
+ // did: user.did,
204
+ // pk: user.pk,
205
+ // },
206
+ // },
207
+ // });
208
+
209
+ // result = createToken(
210
+ // user.did,
211
+ // {
212
+ // secret,
213
+ // passport: targetPassport,
214
+ // role: targetPassport?.role || 'guest',
215
+ // fullName: loggedInUser.fullName,
216
+ // provider,
217
+ // walletOS,
218
+ // emailVerified: !!user?.emailVerified,
219
+ // phoneVerified: !!user?.phoneVerified,
220
+ // },
221
+ // {
222
+ // ...sessionConfig,
223
+ // didConnectVersion: getDidConnectVersion(req),
224
+ // }
225
+ // );
226
+ // }
227
+
228
+ // const lastLoginIp = getRequestIP(req);
229
+ // const ua = req.get('user-agent');
230
+ // const walletDeviceMessageToken = req.get('wallet-device-message-token');
231
+ // const walletDeviceId = req.get('wallet-device-id');
232
+
233
+ // const userSessionDoc = await node.upsertUserSession({
234
+ // id: loginUserSession.id,
235
+ // teamDid,
236
+ // userDid: loginUserSession.userDid,
237
+ // // visitorId,
238
+ // appPid: loginUserSession.appPid,
239
+ // passportId: loginUserSession.passportId,
240
+ // status: 'online',
241
+ // ua,
242
+ // lastLoginIp,
243
+ // extra: {
244
+ // walletOS,
245
+ // walletDeviceMessageToken,
246
+ // walletDeviceId,
247
+ // },
248
+ // });
249
+
250
+ // if (isFederatedLogin) {
251
+ // node.syncUserSession({
252
+ // teamDid,
253
+ // userDid: loginUserSession.userDid,
254
+ // visitorId: userSessionDoc.visitorId,
255
+ // passportId: loginUserSession.passportId,
256
+ // targetAppPid: loginUserSession.appPid,
257
+ // ua,
258
+ // lastLoginIp,
259
+ // extra: {
260
+ // walletOS,
261
+ // walletDeviceMessageToken,
262
+ // walletDeviceId,
263
+ // },
264
+ // });
265
+ // }
266
+
267
+ // logger.info('quick-login with', {
268
+ // teamDid,
269
+ // // visitorId,
270
+ // userDid: loginUserSession.userDid,
271
+ // appPid: loginUserSession.appPid,
272
+ // passportId: loginUserSession.passportId,
273
+ // extra: {
274
+ // walletOS,
275
+ // },
276
+ // });
277
+
278
+ // res.json({ ...result, visitorId: userSessionDoc.visitorId });
279
+ // } else {
280
+ // logger.warn('failed to quick-login with', {
281
+ // teamDid,
282
+ // // visitorId,
283
+ // userDid: loginUserSession.userDid,
284
+ // appPid: loginUserSession.appPid,
285
+ // passportId: loginUserSession.passportId,
286
+ // });
287
+ // res.status(401).json({ error: 'session expired' });
288
+ // }
281
289
  });
282
290
 
283
291
  /**
284
292
  * 获取指定用户的所有登录会话
293
+ * FIXME: @zhanghan 获取要确保安全性
285
294
  */
286
295
  app.get(`${prefix}`, ensureBlocklet(), async (req, res) => {
287
296
  const { blocklet } = req;