@abtnode/blocklet-services 1.16.34-beta-20241213-135509-c2832f80 → 1.16.34-beta-20241216-230644-e9ec07d8

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 (250) hide show
  1. package/api/cache.js +8 -8
  2. package/api/index.js +9 -12
  3. package/api/libs/connect/session.js +3 -0
  4. package/api/libs/jwt.js +17 -2
  5. package/api/middlewares/proxy-to-daemon.js +20 -13
  6. package/api/routes/dns-resolver.js +4 -4
  7. package/api/routes/env.js +1 -0
  8. package/api/services/auth/connect/invite.js +2 -0
  9. package/api/services/auth/connect/issue-passport.js +2 -0
  10. package/api/services/auth/connect/receive-transfer-app-owner.js +1 -0
  11. package/api/services/auth/connect/verify-destroy.js +112 -0
  12. package/api/services/auth/connect/verify-elevated.js +96 -0
  13. package/api/services/auth/index.js +4 -0
  14. package/api/util/attach-shared-utils.js +1 -1
  15. package/dist/assets/{Add-DcTdY6TL.js → Add-oziwJQxO.js} +1 -1
  16. package/dist/assets/{Alert-D-e8-MAP.js → Alert-B2UMxWD1.js} +1 -1
  17. package/dist/assets/{ArrowDropDown-BvKbPg9O.js → ArrowDropDown-pBeX48af.js} +1 -1
  18. package/dist/assets/{Autocomplete-BX46bk2_.js → Autocomplete-BlOvv6or.js} +1 -1
  19. package/dist/assets/{Avatar-BoZ94vwc.js → Avatar-D996AUZ6.js} +1 -1
  20. package/dist/assets/{ButtonGroup-CtoWRVeN.js → ButtonGroup-BREUzzil.js} +1 -1
  21. package/dist/assets/{CSSTransition-DhDaGYf6.js → CSSTransition-zaAbEPiZ.js} +1 -1
  22. package/dist/assets/{CheckCircle-DuplVjH9.js → CheckCircle-FLHDae-o.js} +1 -1
  23. package/dist/assets/{ChevronLeft-CRxnDPnp.js → ChevronLeft-CiKmoQ8h.js} +1 -1
  24. package/dist/assets/{ChevronRight-6ehYjoIB.js → ChevronRight-95UKQtj3.js} +1 -1
  25. package/dist/assets/{Clear-BkApEw3Y.js → Clear-6_9YOCNo.js} +1 -1
  26. package/dist/assets/{Delete-LBSof570.js → Delete-2JRITUjd.js} +1 -1
  27. package/dist/assets/{DeleteOutline-DoKDfJgl.js → DeleteOutline-ClfCE0Lj.js} +1 -1
  28. package/dist/assets/{DialogContentText-B73EoFbn.js → DialogContentText-D44OMnuk.js} +1 -1
  29. package/dist/assets/{DialogTitle-B7_qt6er.js → DialogTitle-DMKAXOmc.js} +1 -1
  30. package/dist/assets/{Done-BdhX20sl.js → Done-BdFUC8Hw.js} +1 -1
  31. package/dist/assets/{Download-cZILKd7o.js → Download-CMXqqksP.js} +1 -1
  32. package/dist/assets/{EditIcon-D9kgkBKD.js → EditIcon-bXgVKORX.js} +1 -1
  33. package/dist/assets/{Error-ClsC7NrR.js → Error-Z_CuZYH4.js} +1 -1
  34. package/dist/assets/{ExpandMore-DrecSXMe.js → ExpandMore-jcRO64rE.js} +1 -1
  35. package/dist/assets/{FormControl-Ve2KegjN.js → FormControl-D0w8yTS2.js} +1 -1
  36. package/dist/assets/{FormControlLabel-C10RDNgA.js → FormControlLabel-sbdGqFv7.js} +1 -1
  37. package/dist/assets/{FormGroup-C2DrHvar.js → FormGroup-Bcb4UUdo.js} +1 -1
  38. package/dist/assets/{Google-qzzGwT5f.js → Google-CpqMiC47.js} +1 -1
  39. package/dist/assets/{Grid-DZk6Z8OE.js → Grid-CkAEzm2H.js} +1 -1
  40. package/dist/assets/{HelpOutline-epGv8mXi.js → HelpOutline-BpufW7NN.js} +1 -1
  41. package/dist/assets/{Hidden-DPr9AEQp.js → Hidden-Cg7GJqQC.js} +1 -1
  42. package/dist/assets/{InfoOutlined-B8LkdcP3.js → InfoOutlined-B-lhOPpX.js} +1 -1
  43. package/dist/assets/{InputAdornment-gT40mObj.js → InputAdornment-BKVRkS63.js} +1 -1
  44. package/dist/assets/{LastPage-DrjUl7Ym.js → LastPage-Bu5G-pPf.js} +1 -1
  45. package/dist/assets/{Launch-CyTNEiOE.js → Launch-CZLWgEhO.js} +1 -1
  46. package/dist/assets/{LaunchOutlined-ByFC01OF.js → LaunchOutlined-CaVcl9-h.js} +1 -1
  47. package/dist/assets/{Link-51uCMh9H.js → Link-DmX7wc4Q.js} +1 -1
  48. package/dist/assets/{ListItemButton-DtweULpb.js → ListItemButton-D2yb3fbs.js} +1 -1
  49. package/dist/assets/{ListSubheader-DfLnu3fa.js → ListSubheader-BPyWzTb6.js} +1 -1
  50. package/dist/assets/{LoadingButton-jLzgx1P7.js → LoadingButton-CHAAyCOF.js} +1 -1
  51. package/dist/assets/{LockIcon-De6Ad6SH.js → LockIcon-CNS267tc.js} +1 -1
  52. package/dist/assets/{Loop-tTR2yrlz.js → Loop-BrR8FuGB.js} +1 -1
  53. package/dist/assets/{MarkEmailRead-B6ZiEWoQ.js → MarkEmailRead-BmNRVkyO.js} +1 -1
  54. package/dist/assets/{Menu-BeKA5iSq.js → Menu-DH85QS6H.js} +1 -1
  55. package/dist/assets/{MoreHoriz-B1JvEOcC.js → MoreHoriz-DQk1Wfli.js} +1 -1
  56. package/dist/assets/{MoreVert-GvhXcnsL.js → MoreVert-DPq_WKu9.js} +1 -1
  57. package/dist/assets/{OpenInNew-C7tW6zIz.js → OpenInNew-TXxyzsEy.js} +1 -1
  58. package/dist/assets/{OutlinedInput-Do_G2JiI.js → OutlinedInput-BVNOux2S.js} +1 -1
  59. package/dist/assets/{Pagination-CkastftC.js → Pagination-WU-N6cKj.js} +1 -1
  60. package/dist/assets/{PlayArrow-DDe0KUdi.js → PlayArrow-TyTORlLZ.js} +1 -1
  61. package/dist/assets/{QuestionMarkCircle-BbZ4QGV2.js → QuestionMarkCircle-90cRouXl.js} +1 -1
  62. package/dist/assets/{RadioGroup-CTXZALsL.js → RadioGroup-CBIFU9QD.js} +1 -1
  63. package/dist/assets/{Search-BctSuhZ0.js → Search-AoXzdD_X.js} +1 -1
  64. package/dist/assets/{Select-DYnsfpKN.js → Select-ChOe39sc.js} +1 -1
  65. package/dist/assets/{ServerLogo-BLAQXKZ3.js → ServerLogo-g2N3ZDmz.js} +1 -1
  66. package/dist/assets/{Skeleton-CVZKKwKZ.js → Skeleton-0YcPrg6p.js} +1 -1
  67. package/dist/assets/{Stack-Cc1e8uS3.js → Stack-D7Z2rgbj.js} +1 -1
  68. package/dist/assets/{Stepper-DsIq58ia.js → Stepper-DLsN98r-.js} +1 -1
  69. package/dist/assets/{TextField-CO9VOqaC.js → TextField-Ci5oxFIy.js} +1 -1
  70. package/dist/assets/{Toolbar-D_Z1ZGgn.js → Toolbar-CJeMK--o.js} +1 -1
  71. package/dist/assets/{ViewColumn-DQ20ttLn.js → ViewColumn-BwKeJgtn.js} +1 -1
  72. package/dist/assets/{ViewList-Bnq-Bz9v.js → ViewList-DW1lT38f.js} +1 -1
  73. package/dist/assets/{_createAggregator-dQcfls_H.js → _createAggregator-BKOLMTnl.js} +1 -1
  74. package/dist/assets/{access-control-BXwHzkCA.js → access-control-BO-NNa9L.js} +1 -1
  75. package/dist/assets/{actions-D67DGwR5.js → actions-CS1-onx7.js} +1 -1
  76. package/dist/assets/{add-component-core-Bfu_zvLX.js → add-component-core-CQpcjzTp.js} +1 -1
  77. package/dist/assets/add-resource-B4aCQWaa.js +1 -0
  78. package/dist/assets/{addon-yHbJNe3B.js → addon-RtY7NgSk.js} +1 -1
  79. package/dist/assets/{analytics-DecQzqwH.js → analytics-B1wTku12.js} +1 -1
  80. package/dist/assets/api-CxPenYpb.js +1 -0
  81. package/dist/assets/ar-ClAzJrsL.js +1 -0
  82. package/dist/assets/{audit-logs-Blyvfwui.js → audit-logs-ClsyAREU.js} +1 -1
  83. package/dist/assets/{base32-DTb-J1h_.js → base32-BRLhYt8r.js} +1 -1
  84. package/dist/assets/branding-Bw9x4GNJ.js +40 -0
  85. package/dist/assets/{bundle-avatar-TCiQIGsc.js → bundle-avatar-Bcu0-qbg.js} +1 -1
  86. package/dist/assets/{button-B2WmAAQP.js → button-CpNLLw_g.js} +1 -1
  87. package/dist/assets/{click-to-copy-C-hq6Slv.js → click-to-copy-DzbCL3sK.js} +1 -1
  88. package/dist/assets/{complete-CFh6Nef4.js → complete-D3R19SMR.js} +1 -1
  89. package/dist/assets/{component-G-UDGzGu.js → component-C1mVBi8e.js} +1 -1
  90. package/dist/assets/{config-R9luUUXo.js → config-lWDYH0JD.js} +1 -1
  91. package/dist/assets/{config-navigation-DAx0e99X.js → config-navigation-SPjZqHh0.js} +3 -3
  92. package/dist/assets/{config-CdE9iwiR.js → config-odm7jeyi.js} +1 -1
  93. package/dist/assets/{config-space-DGTpbWBc.js → config-space-C0tjrcWp.js} +1 -1
  94. package/dist/assets/{confirm-BC8TTdT0.js → confirm-Crbbzsvz.js} +1 -1
  95. package/dist/assets/{connect-DYbGPYA1.js → connect-B3-GVkfZ.js} +1 -1
  96. package/dist/assets/{connect-Ca4Z5ZCG.js → connect-DLLbGPl5.js} +1 -1
  97. package/dist/assets/{connect-to-CK3sPRsk.js → connect-to-C9eVFlcm.js} +1 -1
  98. package/dist/assets/{content-layout-DPhqwbjU.js → content-layout-BKC5bNW-.js} +1 -1
  99. package/dist/assets/{dashboard-DqNsUCmU.js → dashboard-8di0vHo9.js} +3 -3
  100. package/dist/assets/de-DXtamgji.js +1 -0
  101. package/dist/assets/{deprecate-BzwAgeY6.js → deprecate-C1HSovTS.js} +1 -1
  102. package/dist/assets/{did-address-_iA2JBVL.js → did-address-B0GIn9Ek.js} +1 -1
  103. package/dist/assets/{domain-CdS6WH7r.js → domain-D6w8Qhru.js} +1 -1
  104. package/dist/assets/{domain-list-DgnHKWqf.js → domain-list-DQRrwjcQ.js} +1 -1
  105. package/dist/assets/{email-pILbo7GY.js → email-R2H09wqy.js} +3 -3
  106. package/dist/assets/emotion-cache.browser.esm--gKiCyha.js +1 -0
  107. package/dist/assets/es-CpCX7I40.js +1 -0
  108. package/dist/assets/{exchange-passport-Bz0OFLm3.js → exchange-passport-BZGRS47V.js} +1 -1
  109. package/dist/assets/{fallback-DNotPO94.js → fallback-Dl7dgOaa.js} +1 -1
  110. package/dist/assets/{form-text-input-BMDOwfx4.js → form-text-input-lwoAZfFl.js} +1 -1
  111. package/dist/assets/{format-error-DwZSxaHw.js → format-error-DBtDfVh-.js} +1 -1
  112. package/dist/assets/fr-BEjay0TP.js +1 -0
  113. package/dist/assets/{fuel-BLdY2pe6.js → fuel-D41QERyB.js} +1 -1
  114. package/dist/assets/{fullpage-DizVq3Q0.js → fullpage-RXfv9M5o.js} +1 -1
  115. package/dist/assets/{get-safe-url-BFPkD_-w.js → get-safe-url-B3Azg5h8.js} +1 -1
  116. package/dist/assets/{get-safe-url-DZ-z9Y11.js → get-safe-url-D3hjXvs9.js} +1 -1
  117. package/dist/assets/hi-CiAkcvJi.js +1 -0
  118. package/dist/assets/{home-Tu1r9UUP.js → home-D8fBcNgB.js} +1 -1
  119. package/dist/assets/id-Bdd8R_aj.js +1 -0
  120. package/dist/assets/{iframe-CaVEoPzZ.js → iframe-DkewNhA3.js} +1 -1
  121. package/dist/assets/{index-D3U2QoHe.js → index-4GU9KEjL.js} +1 -1
  122. package/dist/assets/{index-4W47mya0.js → index-B07Wn0U-.js} +1 -1
  123. package/dist/assets/{index-DLfBZi9C.js → index-B1kpM8NP.js} +1 -1
  124. package/dist/assets/{index-DheUDLUu.js → index-BCgSGfV1.js} +1 -1
  125. package/dist/assets/{index-CWzdBGm2.js → index-BDUj-193.js} +1 -1
  126. package/dist/assets/{index-BuFsUoby.js → index-BUvwt8Ib.js} +1 -1
  127. package/dist/assets/{index-DWDFxHgN.js → index-BXO1IWsc.js} +1 -1
  128. package/dist/assets/{index-Bj8u1Jq1.js → index-BdLPd5L6.js} +49 -49
  129. package/dist/assets/{index-DUDLGVrz.js → index-BfV_ShLL.js} +3 -3
  130. package/dist/assets/{index-YElVd5eM.js → index-BfaLrSR3.js} +1 -1
  131. package/dist/assets/{index-Cyq88B7c.js → index-Bt6PI6pf.js} +1 -1
  132. package/dist/assets/{index-BH89MPC8.js → index-By7O71Mh.js} +1 -1
  133. package/dist/assets/{index-BcBVFEsU.js → index-CDcW4rnB.js} +1 -1
  134. package/dist/assets/{index-BEJPw-Yp.js → index-CFqjtwFE.js} +11 -11
  135. package/dist/assets/{index-BjsbrYRH.js → index-CGjZdtFl.js} +1 -1
  136. package/dist/assets/{index-CNW7JpLY.js → index-CIk-ynX5.js} +1 -1
  137. package/dist/assets/{index-d-mPwPwc.js → index-CKcc_fAq.js} +1 -1
  138. package/dist/assets/{index-DDG6nzV-.js → index-CPeY-Ohp.js} +1 -1
  139. package/dist/assets/{index-B3taNgzi.js → index-CZsgoYpY.js} +1 -1
  140. package/dist/assets/{index-dEKXkm4C.js → index-CqThjKMA.js} +20 -20
  141. package/dist/assets/{index-DEG_Pe1F.js → index-Cs4TyV1c.js} +1 -1
  142. package/dist/assets/{index-CzXHRu12.js → index-D-9CkeIG.js} +1 -1
  143. package/dist/assets/{index-DPiBRCz4.js → index-D6ldJXfX.js} +1 -1
  144. package/dist/assets/{index-Bn2ctnS8.js → index-DKINM6Nt.js} +1 -1
  145. package/dist/assets/{index-BXvoL3Iu.js → index-DOu_xcdl.js} +1 -1
  146. package/dist/assets/{index-DblJTJQz.js → index-DfXj7ybg.js} +1 -1
  147. package/dist/assets/{index-lJoTfApr.js → index-GUizGQzu.js} +3 -3
  148. package/dist/assets/{index-pMGk7BEW.js → index-QMWW0Bcs.js} +1 -1
  149. package/dist/assets/{index-BM80ek7x.js → index-SKdgoMeu.js} +16 -16
  150. package/dist/assets/index-c9cG5wja.js +1 -0
  151. package/dist/assets/{index-BWn04_iI.js → index-obymsIFm.js} +1 -1
  152. package/dist/assets/{index-CjBMqGWM.js → index-pWkpwD1Q.js} +1 -1
  153. package/dist/assets/{index-BOpUgQ8H.js → index-sMu-oGGn.js} +1 -1
  154. package/dist/assets/{invitation-BFbVuQFx.js → invitation-D4WpIn6x.js} +1 -1
  155. package/dist/assets/{invite-Bron7GEw.js → invite-BfB_aDyT.js} +1 -1
  156. package/dist/assets/{isEmail-5f9jXFqI.js → isEmail-F9TPpwIe.js} +1 -1
  157. package/dist/assets/{issue-passport-BMTa-EpO.js → issue-passport-CApp6bN1.js} +1 -1
  158. package/dist/assets/{item-BYnIVyyp.js → item-kzpPRPVR.js} +1 -1
  159. package/dist/assets/ja-DnQKgDGU.js +1 -0
  160. package/dist/assets/{jss-plugin-props-sort.esm-CxRI79tr.js → jss-plugin-props-sort.esm-CwPevptU.js} +1 -1
  161. package/dist/assets/ko-BHfb-bOw.js +1 -0
  162. package/dist/assets/{launch-result-message-DXzliFie.js → launch-result-message-CX_U99kd.js} +1 -1
  163. package/dist/assets/{layout-CAsilLGB.js → layout-DvMUwpg_.js} +1 -1
  164. package/dist/assets/{list-header-YJQAbm9g.js → list-header-uQE_23fF.js} +1 -1
  165. package/dist/assets/localization-CuAmUQDN.js +1 -0
  166. package/dist/assets/{log-Bdo9FkyE.js → log-CvLTE7pK.js} +1 -1
  167. package/dist/assets/{login-D8bQWYck.js → login-CFKL0FQd.js} +1 -1
  168. package/dist/assets/{login-oauth-callback-DQ0fJI0M.js → login-oauth-callback-BSY1JDGL.js} +1 -1
  169. package/dist/assets/{logo-uploader-cFGQ2Gvc.js → logo-uploader-DY_8qKDx.js} +3 -3
  170. package/dist/assets/{lost-passport-Cut0hEBf.js → lost-passport-B_QIprST.js} +3 -3
  171. package/dist/assets/{lottie-react.esm-BMrLVwC-.js → lottie-react.esm-BcWUpu_M.js} +1 -1
  172. package/dist/assets/{notifications-OcsJQIbe.js → notifications-SQYVBOJl.js} +1 -1
  173. package/dist/assets/{open-window-D7sglcpE.js → open-window-DT3o9_iM.js} +1 -1
  174. package/dist/assets/{overview-DYkC_WUD.js → overview-cXOMTeZY.js} +1 -1
  175. package/dist/assets/{page-header-Bs0D4BNJ.js → page-header-CLillI1Q.js} +1 -1
  176. package/dist/assets/{permission-BXmIoXZx.js → permission-BGFCgHaZ.js} +1 -1
  177. package/dist/assets/{preferences-C4gMbsXE.js → preferences-C-oVi6nW.js} +1 -1
  178. package/dist/assets/pt-BVlUCv-x.js +1 -0
  179. package/dist/assets/publish-resource-D_6RVXvs.js +1 -0
  180. package/dist/assets/{raf-schd.esm-4I_ky4wN.js → raf-schd.esm-BOV912qX.js} +1 -1
  181. package/dist/assets/{react-beautiful-dnd.esm-0qjksHeu.js → react-beautiful-dnd.esm-DaEDtLZw.js} +1 -1
  182. package/dist/assets/refType-DZSgX1z-.js +1 -0
  183. package/dist/assets/{resource-dialog-D7wZSQZM.js → resource-dialog-J8x4QYiR.js} +1 -1
  184. package/dist/assets/ru-9zTXB_9d.js +1 -0
  185. package/dist/assets/sdk-1vv5JP0C.js +1 -0
  186. package/dist/assets/{selector-CbAq7CNk.js → selector-DINv7b40.js} +1 -1
  187. package/dist/assets/session-CKflpSkt.js +1 -0
  188. package/dist/assets/{setup-CfBWQVLM.js → setup-Dl2ojiVm.js} +3 -3
  189. package/dist/assets/{shorten-label-DwdHohLo.js → shorten-label-DFTBgwE4.js} +1 -1
  190. package/dist/assets/{simple-select-DABb5zZb.js → simple-select-DosSi8_f.js} +1 -1
  191. package/dist/assets/{slicedToArray-oTB17pto.js → slicedToArray-grkGbmXV.js} +1 -1
  192. package/dist/assets/{start-6oXQjfyP.js → start-BU6y8pDq.js} +1 -1
  193. package/dist/assets/{step-actions-6E9sNomZ.js → step-actions-b3xtzolO.js} +1 -1
  194. package/dist/assets/{studio-rQhXFpEr.js → studio-DnP6IorH.js} +1 -1
  195. package/dist/assets/{switch-control-BEdKOp6L.js → switch-control-BOpP15eU.js} +1 -1
  196. package/dist/assets/th-dSEsbGj3.js +1 -0
  197. package/dist/assets/{toUpper-DUJEYm58.js → toUpper-Dp3pwZgt.js} +1 -1
  198. package/dist/assets/{transfer-I7cX7406.js → transfer-tZLszbhH.js} +1 -1
  199. package/dist/assets/{trim-Dlp2Wnor.js → trim-Bm98bTgi.js} +1 -1
  200. package/dist/assets/{uniqBy-BSt4eeqO.js → uniqBy-fYx3UGP9.js} +1 -1
  201. package/dist/assets/{unsubscribe-HqTE-lAn.js → unsubscribe-BZiPgFod.js} +1 -1
  202. package/dist/assets/{url-join-D5NytcuV.js → url-join-D_G6hgzn.js} +1 -1
  203. package/dist/assets/{use-mobile-kPLzB4n2.js → use-mobile-C3j-6YEm.js} +1 -1
  204. package/dist/assets/{use-mobile-CPfu5RWb.js → use-mobile-zO5gFHCz.js} +1 -1
  205. package/dist/assets/{useAsync-BYLVsyCe.js → useAsync-BZGW_Fx5.js} +1 -1
  206. package/dist/assets/{useFormControl-Cb-boaYc.js → useFormControl-Ddh25APR.js} +1 -1
  207. package/dist/assets/{useLocalStorage-DwpjAyRq.js → useLocalStorage-CE24rTA_.js} +1 -1
  208. package/dist/assets/{useSetState-BZm8P2F-.js → useSetState-BkRqzg1b.js} +1 -1
  209. package/dist/assets/{useSlot-2GhS7jdI.js → useSlot-BcsOw05W.js} +1 -1
  210. package/dist/assets/{useSlotProps-Dxo3NBwX.js → useSlotProps-DDlERLnv.js} +1 -1
  211. package/dist/assets/{useThemeProps-CK1ghsXu.js → useThemeProps-qe1GIVnM.js} +1 -1
  212. package/dist/assets/{user-center-De5_2TQv.js → user-center-BgYk7eUi.js} +1 -1
  213. package/dist/assets/{user-sessions-BIa10Xhc.js → user-sessions-U3mG72jr.js} +1 -1
  214. package/dist/assets/{util-CJcl9xCr.js → util-DXw3G0bm.js} +1 -1
  215. package/dist/assets/vi-DGJT58io.js +1 -0
  216. package/dist/assets/wrap-locale-BgPwnYQ_.js +1 -0
  217. package/dist/assets/zh-B5m-JMeT.js +1 -0
  218. package/dist/assets/zh-C0cVdfIo.js +2 -0
  219. package/dist/assets/zh-tw-DkLkQUwb.js +1 -0
  220. package/dist/assets/zh-tw-DwIjSsJ9.js +1 -0
  221. package/dist/index.html +1 -1
  222. package/dist/service-worker.js +1 -1
  223. package/package.json +21 -20
  224. package/dist/assets/add-resource-Bopi2F5-.js +0 -1
  225. package/dist/assets/api-DH8IdxXg.js +0 -1
  226. package/dist/assets/ar-B3QGVHSJ.js +0 -1
  227. package/dist/assets/branding-Cr7lzDNp.js +0 -40
  228. package/dist/assets/de-CuczgAA8.js +0 -1
  229. package/dist/assets/emotion-cache.browser.esm-FU3nBxaV.js +0 -1
  230. package/dist/assets/es-D938HYco.js +0 -1
  231. package/dist/assets/fr-BUgkJkru.js +0 -1
  232. package/dist/assets/hi-CLGvJ0VO.js +0 -1
  233. package/dist/assets/id-CoJHfLJv.js +0 -1
  234. package/dist/assets/index-D7t6icMl.js +0 -1
  235. package/dist/assets/ja-BfQ6NQ1Q.js +0 -1
  236. package/dist/assets/ko-OirMS2DQ.js +0 -1
  237. package/dist/assets/localization-CoaLMiV4.js +0 -1
  238. package/dist/assets/pt-DFNHF52P.js +0 -1
  239. package/dist/assets/publish-resource-D-e2YEIQ.js +0 -1
  240. package/dist/assets/refType-B6FV0kei.js +0 -1
  241. package/dist/assets/ru-D1ipkx7j.js +0 -1
  242. package/dist/assets/sdk-DbJuRsBZ.js +0 -1
  243. package/dist/assets/session-uB27dTXO.js +0 -1
  244. package/dist/assets/th-Bq0BOWuO.js +0 -1
  245. package/dist/assets/vi-w34NOSIe.js +0 -1
  246. package/dist/assets/wrap-locale-CZRJioV-.js +0 -1
  247. package/dist/assets/zh-BTeqEH4T.js +0 -1
  248. package/dist/assets/zh-C8AwRuvb.js +0 -2
  249. package/dist/assets/zh-tw-BvZpzT6d.js +0 -1
  250. package/dist/assets/zh-tw-CJBhIBvB.js +0 -1
package/api/cache.js CHANGED
@@ -1,21 +1,21 @@
1
- const LRU = require('lru-cache');
1
+ const { LRUCache } = require('lru-cache');
2
2
  const nodemailer = require('nodemailer');
3
3
  const getBlockletInfo = require('@blocklet/meta/lib/info');
4
4
  const md5 = require('@abtnode/util/lib/md5');
5
5
 
6
- const cache = new LRU({
6
+ const cache = new LRUCache({
7
7
  max: 100, // cache at most 100
8
- maxAge: 60 * 60 * 1000, // cache for 1 hour
8
+ ttl: 60 * 60 * 1000, // cache for 1 hour
9
9
  });
10
10
 
11
- const sessionCacheDisabledUser = new LRU({
11
+ const sessionCacheDisabledUser = new LRUCache({
12
12
  max: 10000,
13
- maxAge: 86400 * 1000, // cache for 1 day
13
+ ttl: 86400 * 1000, // cache for 1 day
14
14
  });
15
15
 
16
- const securityConfigCache = new LRU({
16
+ const securityConfigCache = new LRUCache({
17
17
  max: 5000, // 这里存储的是所有 blocklet 的缓存数据,需要设置的大一些
18
- maxAge: 86400 * 1000, // 这部分数据不会频繁变动,设置为 1 天,将来可以通过页面进行性能优化设置
18
+ ttl: 86400 * 1000, // 这部分数据不会频繁变动,设置为 1 天,将来可以通过页面进行性能优化设置
19
19
  });
20
20
 
21
21
  // FIXME: @zhanghan 将来需要缩短 cache key 的长度
@@ -163,7 +163,7 @@ cache.removeSecurityConfig = ({ did } = {}) => {
163
163
  const prefix = cache.keyFns.securityConfig(did);
164
164
  securityConfigCache.forEach((value, key) => {
165
165
  if (key.startsWith(prefix)) {
166
- securityConfigCache.del(key);
166
+ securityConfigCache.delete(key);
167
167
  }
168
168
  });
169
169
  };
package/api/index.js CHANGED
@@ -206,17 +206,17 @@ module.exports = function createServer(node, serverOptions = {}) {
206
206
  const did = get(data, 'meta.did');
207
207
  if (did) {
208
208
  logger.info('delete blocklet cache on update', { did, pid: process.pid });
209
- cache.del(cache.keyFns.blocklet(did));
210
- cache.del(cache.keyFns.blockletInfo(did));
211
- cache.del(cache.keyFns.notificationConfig(did));
209
+ cache.delete(cache.keyFns.blocklet(did));
210
+ cache.delete(cache.keyFns.blockletInfo(did));
211
+ cache.delete(cache.keyFns.notificationConfig(did));
212
212
  }
213
213
 
214
214
  // structV1Did is just for migration purpose and should be removed in the future
215
215
  const structV1Did = get(data, 'structV1Did');
216
216
  if (structV1Did) {
217
217
  logger.info('delete blocklet cache on update', { structV1Did, pid: process.pid });
218
- cache.del(cache.keyFns.blocklet(structV1Did));
219
- cache.del(cache.keyFns.blockletInfo(structV1Did));
218
+ cache.delete(cache.keyFns.blocklet(structV1Did));
219
+ cache.delete(cache.keyFns.blockletInfo(structV1Did));
220
220
  }
221
221
  });
222
222
  });
@@ -227,7 +227,8 @@ module.exports = function createServer(node, serverOptions = {}) {
227
227
  });
228
228
  eventHub.on(EVENTS.NODE_UPDATED, () => {
229
229
  logger.info('node update', { pid: process.pid });
230
- cache.del(cache.keyFns.node());
230
+ cache.delete(cache.keyFns.node());
231
+ proxyToDaemon.clearCache();
231
232
  });
232
233
  eventHub.on(TeamEvents.userPermissionUpdated, ({ teamDid, user } = {}) => {
233
234
  logger.info('user permission updated', { teamDid, userDid: user?.did });
@@ -439,7 +440,7 @@ module.exports = function createServer(node, serverOptions = {}) {
439
440
  checkMemberPermission(req, res, next);
440
441
  }
441
442
  },
442
- proxyToDaemon({ proxy, ...options })
443
+ proxyToDaemon({ proxy, node })
443
444
  );
444
445
  });
445
446
 
@@ -451,11 +452,7 @@ module.exports = function createServer(node, serverOptions = {}) {
451
452
  // media 相关处理代理到 daemon 中进行处理
452
453
  '/api/media/upload/**',
453
454
  ].forEach((pathname) => {
454
- server.use(
455
- `${WELLKNOWN_SERVICE_PATH_PREFIX}${pathname}`,
456
- checkMemberPermission,
457
- proxyToDaemon({ proxy, ...options })
458
- );
455
+ server.use(`${WELLKNOWN_SERVICE_PATH_PREFIX}${pathname}`, checkMemberPermission, proxyToDaemon({ proxy, node }));
459
456
  });
460
457
 
461
458
  // API: dns resolver
@@ -10,6 +10,7 @@ const {
10
10
  getPassportStatusEndpoint,
11
11
  getApplicationInfo,
12
12
  verifyNFT,
13
+ canSessionBeElevated,
13
14
  } = require('@abtnode/auth/lib/auth');
14
15
  const {
15
16
  NODE_SERVICES,
@@ -599,6 +600,7 @@ module.exports = {
599
600
  walletOS,
600
601
  emailVerified: updatedUser.emailVerified,
601
602
  phoneVerified: updatedUser.phoneVerified,
603
+ elevated: canSessionBeElevated(role, await request.getNodeInfo()),
602
604
  },
603
605
  { ...sessionConfig, didConnectVersion: getDidConnectVersion(request) }
604
606
  );
@@ -968,6 +970,7 @@ module.exports = {
968
970
  walletOS: request.context.didwallet.os,
969
971
  emailVerified: user.emailVerified,
970
972
  phoneVerified: user.phoneVerified,
973
+ elevated: canSessionBeElevated(role, await request.getNodeInfo()),
971
974
  },
972
975
  { ...sessionConfig, didConnectVersion: getDidConnectVersion(request) }
973
976
  );
package/api/libs/jwt.js CHANGED
@@ -30,6 +30,7 @@ const initJwt = (node, options) => {
30
30
  walletOS,
31
31
  emailVerified = false,
32
32
  phoneVerified = false,
33
+ elevated = false,
33
34
  }
34
35
  ) =>
35
36
  createAuthToken({
@@ -43,6 +44,7 @@ const initJwt = (node, options) => {
43
44
  provider,
44
45
  walletOS,
45
46
  kyc: encodeKycStatus(emailVerified, phoneVerified),
47
+ elevated,
46
48
  });
47
49
 
48
50
  const verifySessionToken = (token, secret, { checkFromDb, teamDid, checkToken } = {}) =>
@@ -61,7 +63,16 @@ const initJwt = (node, options) => {
61
63
  }
62
64
  }
63
65
 
64
- const { did, role, passport, fullName, provider = LOGIN_PROVIDER.WALLET, walletOS, kyc = 0 } = decoded;
66
+ const {
67
+ did,
68
+ role,
69
+ passport,
70
+ fullName,
71
+ provider = LOGIN_PROVIDER.WALLET,
72
+ walletOS,
73
+ kyc = 0,
74
+ elevated = false,
75
+ } = decoded;
65
76
  let user;
66
77
  if (!did) {
67
78
  return reject(new Error('Invalid jwt token: invalid did'));
@@ -95,8 +106,12 @@ const initJwt = (node, options) => {
95
106
  user.provider = provider;
96
107
  user.walletOS = walletOS;
97
108
  user.kyc = encodeKycStatus(user.emailVerified, user.phoneVerified);
109
+ user.elevated = elevated;
98
110
  } else {
99
- user = Object.assign({ did, role, passport, fullName, provider, walletOS, kyc }, decodeKycStatus(kyc));
111
+ user = Object.assign(
112
+ { did, role, passport, fullName, provider, walletOS, kyc, elevated },
113
+ decodeKycStatus(kyc)
114
+ );
100
115
  }
101
116
 
102
117
  return resolve(user);
@@ -1,21 +1,21 @@
1
1
  const jwt = require('jsonwebtoken');
2
- const LRU = require('lru-cache');
2
+ const { LRUCache } = require('lru-cache');
3
3
  const pick = require('lodash/pick');
4
4
 
5
5
  const md5 = require('@abtnode/util/lib/md5');
6
6
  const { AUTH_CERT_TYPE, WELLKNOWN_SERVICE_PATH_PREFIX } = require('@abtnode/constant');
7
7
  const { BLOCKLET_TENANT_MODES } = require('@blocklet/constant');
8
8
 
9
- const cacheKey = (userDid, appPid, tenantMode) => md5(`${userDid}:${appPid}:${tenantMode}`);
9
+ const cacheKey = (userDid, elevated, appPid, tenantMode) => md5(`${userDid}:${elevated}:${appPid}:${tenantMode}`);
10
10
 
11
- const proxyToDaemon = ({ proxy, sessionSecret }) => {
12
- const cache = new LRU({
13
- max: 50,
14
- maxAge: 86400 * 1000, // cache for 1 day
15
- });
11
+ const cache = new LRUCache({
12
+ max: 200,
13
+ ttl: 60 * 60 * 1000, // cache for 1 hour
14
+ });
16
15
 
17
- const getToken = (did, tenantMode, user) => {
18
- const key = cacheKey(user.did, did, tenantMode);
16
+ const proxyToDaemon = ({ proxy, node }) => {
17
+ const getToken = async (did, tenantMode, user) => {
18
+ const key = cacheKey(user.did, user.elevated ? 1 : 0, did, tenantMode);
19
19
  const cacheToken = cache.get(key);
20
20
  if (cacheToken) {
21
21
  return cacheToken;
@@ -28,9 +28,11 @@ const proxyToDaemon = ({ proxy, sessionSecret }) => {
28
28
  role: user.role,
29
29
  tenantMode,
30
30
  blockletDid: did,
31
+ elevated: user.elevated,
32
+ kyc: user.kyc,
31
33
  },
32
- sessionSecret,
33
- { expiresIn: '1d' }
34
+ await node.getSessionSecret(),
35
+ { expiresIn: '1h' }
34
36
  );
35
37
 
36
38
  cache.set(key, token);
@@ -38,12 +40,16 @@ const proxyToDaemon = ({ proxy, sessionSecret }) => {
38
40
  return token;
39
41
  };
40
42
 
41
- return (req, res) => {
43
+ return async (req, res) => {
42
44
  req.url = (req.originalUrl || '/').replace(WELLKNOWN_SERVICE_PATH_PREFIX, '');
43
45
  // did returned ty req.getBlockletDid() is blocklet.meta.did
44
46
  // the blocklet.meta.did is always the same as appPid in structV2 application
45
47
  const did = req.getBlockletDid();
46
- const token = getToken(did, req.tenantMode || BLOCKLET_TENANT_MODES.SINGLE, pick(req.user, ['did', 'role']));
48
+ const token = await getToken(
49
+ did,
50
+ req.tenantMode || BLOCKLET_TENANT_MODES.SINGLE,
51
+ pick(req.user, ['did', 'role', 'elevated', 'kyc'])
52
+ );
47
53
 
48
54
  req.headers.source = 'blocklet-service';
49
55
  req.headers.authorization = `Bearer ${token}`;
@@ -54,3 +60,4 @@ const proxyToDaemon = ({ proxy, sessionSecret }) => {
54
60
  };
55
61
 
56
62
  module.exports = proxyToDaemon;
63
+ module.exports.clearCache = () => cache.clear();
@@ -1,12 +1,12 @@
1
1
  const dns = require('dns');
2
- const LRU = require('lru-cache');
2
+ const { LRUCache } = require('lru-cache');
3
3
  const { WELLKNOWN_SERVICE_PATH_PREFIX } = require('@abtnode/constant');
4
4
 
5
5
  module.exports = {
6
6
  init(app) {
7
- const cache = new LRU({
7
+ const cache = new LRUCache({
8
8
  max: 50, // cache at most 50
9
- maxAge: 5 * 60 * 1000, // cache for 5 minute
9
+ ttl: 5 * 60 * 1000, // cache for 5 minute
10
10
  });
11
11
 
12
12
  app.get(`${WELLKNOWN_SERVICE_PATH_PREFIX}/api/dns-resolve/`, (req, res) => {
@@ -26,7 +26,7 @@ module.exports = {
26
26
 
27
27
  dns.lookup(hostname, (err, address) => {
28
28
  if (err) {
29
- cache.del(hostname);
29
+ cache.delete(hostname);
30
30
  res.json({ address: null, error: err.message });
31
31
  return;
32
32
  }
package/api/routes/env.js CHANGED
@@ -44,6 +44,7 @@ module.exports = {
44
44
  serverEndpoint: "${serverEndpoint}",
45
45
  serverVersion: "${info.version}",
46
46
  mode: "${info.mode}",
47
+ enableSessionHardening: ${info.enableSessionHardening || false},
47
48
  ownerNft: ${JSON.stringify(info.ownerNft || '')},
48
49
  launcher: ${JSON.stringify(info.launcher || '')}
49
50
  }`);
@@ -5,6 +5,7 @@ const {
5
5
  messages,
6
6
  checkWalletVersion,
7
7
  beforeInvitationRequest,
8
+ canSessionBeElevated,
8
9
  } = require('@abtnode/auth/lib/auth');
9
10
  const { getSourceAppPid } = require('@blocklet/sdk/lib/util/login');
10
11
  const { WELLKNOWN_SERVICE_PATH_PREFIX } = require('@abtnode/constant');
@@ -114,6 +115,7 @@ module.exports = function createRoutes(node, authenticator, createSessionToken)
114
115
  walletOS,
115
116
  emailVerified: !!user?.emailVerified,
116
117
  phoneVerified: !!user?.phoneVerified,
118
+ elevated: canSessionBeElevated(role, nodeInfo),
117
119
  },
118
120
  { ...sessionConfig, didConnectVersion: getDidConnectVersion(req) }
119
121
  );
@@ -4,6 +4,7 @@ const {
4
4
  handleIssuePassportResponse,
5
5
  checkWalletVersion,
6
6
  beforeIssuePassportRequest,
7
+ canSessionBeElevated,
7
8
  } = require('@abtnode/auth/lib/auth');
8
9
  const { getSourceAppPid } = require('@blocklet/sdk/lib/util/login');
9
10
  const { WELLKNOWN_SERVICE_PATH_PREFIX } = require('@abtnode/constant');
@@ -127,6 +128,7 @@ module.exports = function createRoutes(node, authenticator, createSessionToken)
127
128
  walletOS,
128
129
  emailVerified: !!user?.emailVerified,
129
130
  phoneVerified: !!user?.phoneVerified,
131
+ elevated: canSessionBeElevated(role, nodeInfo),
130
132
  },
131
133
  { ...sessionConfig, didConnectVersion: getDidConnectVersion(req) }
132
134
  );
@@ -389,6 +389,7 @@ module.exports = function createRoutes(node, _, createSessionToken) {
389
389
  walletOS,
390
390
  emailVerified: !!user?.emailVerified,
391
391
  phoneVerified: !!user?.phoneVerified,
392
+ elevated: true,
392
393
  },
393
394
  { ...sessionConfig, didConnectVersion: getDidConnectVersion(req) }
394
395
  );
@@ -0,0 +1,112 @@
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');
4
+ const { getSourceAppPid } = require('@blocklet/sdk/lib/util/login');
5
+ const { fromBase64 } = require('@ocap/util');
6
+ const { LOGIN_PROVIDER } = require('@blocklet/constant');
7
+
8
+ const logger = require('../../../libs/logger')();
9
+ const { createTokenFn, getDidConnectVersion } = require('../../../util');
10
+ const { PASSPORT_VC_TYPES } = require('../../../libs/auth/utils');
11
+ const { getTrustedIssuers } = require('../../../util/blocklet-utils');
12
+
13
+ const ALLOWED_ROLES = [ROLES.OWNER, ROLES.ADMIN, ROLES.MEMBER];
14
+
15
+ // eslint-disable-next-line no-unused-vars
16
+ module.exports = function createRoutes(node, authenticator, createSessionToken) {
17
+ return {
18
+ action: 'verify-destroy',
19
+ onConnect: async ({ request, userDid, extraParams: { locale, payload, roles } }) => {
20
+ const blocklet = await request.getBlocklet();
21
+ const user = await node.getUser({ teamDid: blocklet.appPid, user: { did: userDid } });
22
+ if (!user) {
23
+ throw new Error(messages.notAllowed[locale]);
24
+ }
25
+ if (!user.approved) {
26
+ throw new Error(messages.notAuthorized[locale]);
27
+ }
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
+ }
43
+
44
+ const sourceAppPid = getSourceAppPid(request);
45
+ return {
46
+ verifiableCredential: getVerifyAccessClaims({
47
+ node,
48
+ passports: user.passports,
49
+ roles: expected,
50
+ types: PASSPORT_VC_TYPES,
51
+ source: 'blocklet',
52
+ trustedIssuers: await getTrustedIssuers(blocklet, { sourceAppPid }),
53
+ }),
54
+ };
55
+ },
56
+
57
+ onAuth: async ({ request, claims, challenge, userDid, updateSession, extraParams }) => {
58
+ const { locale, payload } = extraParams;
59
+ const sourceAppPid = getSourceAppPid(request);
60
+ const [blocklet, blockletInfo, info] = await Promise.all([
61
+ request.getBlocklet(),
62
+ request.getBlockletInfo(),
63
+ node.getNodeInfo(),
64
+ ]);
65
+
66
+ const { role, user, passport } = await authenticateByVc({
67
+ node,
68
+ locale,
69
+ teamDid: blocklet.appPid,
70
+ userDid,
71
+ claims,
72
+ challenge,
73
+ types: PASSPORT_VC_TYPES,
74
+ trustedIssuers: await getTrustedIssuers(blocklet, { sourceAppPid }),
75
+ });
76
+ if (!ALLOWED_ROLES.includes(role)) {
77
+ throw new Error(messages.notAllowed[locale]);
78
+ }
79
+
80
+ const parsed = JSON.parse(fromBase64(payload).toString());
81
+ const session = await node.startSession({ data: { ...parsed, type: 'destroy', operator: userDid } });
82
+
83
+ logger.info('DestroySession.start', { sessionId: session.id, parsed, userDid, role });
84
+
85
+ const updates = { destroySessionId: session.id };
86
+ if (info.enableSessionHardening) {
87
+ const createToken = createTokenFn(createSessionToken);
88
+ const sessionConfig = blocklet.settings?.session || {};
89
+
90
+ const { sessionToken, refreshToken } = createToken(
91
+ userDid,
92
+ {
93
+ secret: blockletInfo.secret,
94
+ passport,
95
+ role,
96
+ fullName: user.fullName,
97
+ provider: LOGIN_PROVIDER.WALLET,
98
+ walletOS: request.context.didwallet.os,
99
+ emailVerified: user.emailVerified,
100
+ phoneVerified: user.phoneVerified,
101
+ elevated: true,
102
+ },
103
+ { ...sessionConfig, didConnectVersion: getDidConnectVersion(request) }
104
+ );
105
+ updates.sessionToken = sessionToken;
106
+ updates.refreshToken = refreshToken;
107
+ }
108
+
109
+ await updateSession(updates, true);
110
+ },
111
+ };
112
+ };
@@ -0,0 +1,96 @@
1
+ const { messages, canSessionBeElevated } = require('@abtnode/auth/lib/auth');
2
+ const { authenticateByVc, getVerifyAccessClaims } = require('@abtnode/auth/lib/server');
3
+ const { ROLES } = require('@abtnode/constant');
4
+ const { LOGIN_PROVIDER } = require('@blocklet/constant');
5
+ const { getSourceAppPid } = require('@blocklet/sdk/lib/util/login');
6
+
7
+ const { createTokenFn, getDidConnectVersion } = require('../../../util');
8
+ const { PASSPORT_VC_TYPES } = require('../../../libs/auth/utils');
9
+ const { getTrustedIssuers } = require('../../../util/blocklet-utils');
10
+
11
+ const allowedRoles = [ROLES.OWNER, ROLES.ADMIN, ROLES.MEMBER];
12
+
13
+ // eslint-disable-next-line no-unused-vars
14
+ module.exports = function createRoutes(node, authenticator, createSessionToken) {
15
+ return {
16
+ action: 'verify-elevated',
17
+ onConnect: async ({ request, userDid, extraParams: { locale, connectedDid } }) => {
18
+ if (userDid && connectedDid && userDid !== connectedDid) {
19
+ throw new Error(messages.userMismatch[locale]);
20
+ }
21
+
22
+ const [blocklet, info] = await Promise.all([request.getBlocklet(), node.getNodeInfo()]);
23
+ if (!info.enableSessionHardening) {
24
+ throw new Error(messages.notEnabled[locale]);
25
+ }
26
+
27
+ const user = await node.getUser({ teamDid: blocklet.appPid, user: { did: userDid } });
28
+ if (!user) {
29
+ throw new Error(messages.notAllowed[locale]);
30
+ }
31
+ if (!user.approved) {
32
+ throw new Error(messages.notAuthorized[locale]);
33
+ }
34
+
35
+ const sourceAppPid = getSourceAppPid(request);
36
+ return {
37
+ verifiableCredential: getVerifyAccessClaims({
38
+ node,
39
+ passports: user.passports,
40
+ roles: allowedRoles,
41
+ types: PASSPORT_VC_TYPES,
42
+ source: 'blocklet',
43
+ trustedIssuers: await getTrustedIssuers(blocklet, { sourceAppPid }),
44
+ }),
45
+ };
46
+ },
47
+
48
+ onAuth: async ({ request, claims, challenge, userDid, updateSession, extraParams }) => {
49
+ const { locale } = extraParams;
50
+ const sourceAppPid = getSourceAppPid(request);
51
+ const [blocklet, blockletInfo, info] = await Promise.all([
52
+ request.getBlocklet(),
53
+ request.getBlockletInfo(),
54
+ node.getNodeInfo(),
55
+ ]);
56
+ if (!info.enableSessionHardening) {
57
+ throw new Error(messages.notEnabled[locale]);
58
+ }
59
+
60
+ const { role, user, passport } = await authenticateByVc({
61
+ node,
62
+ locale,
63
+ teamDid: blocklet.appPid,
64
+ userDid,
65
+ claims,
66
+ challenge,
67
+ types: PASSPORT_VC_TYPES,
68
+ trustedIssuers: await getTrustedIssuers(blocklet, { sourceAppPid }),
69
+ });
70
+ if (!allowedRoles.includes(role)) {
71
+ throw new Error(messages.notAllowed[locale]);
72
+ }
73
+
74
+ const createToken = createTokenFn(createSessionToken);
75
+ const sessionConfig = blocklet.settings?.session || {};
76
+
77
+ const { sessionToken, refreshToken } = createToken(
78
+ userDid,
79
+ {
80
+ secret: blockletInfo.secret,
81
+ passport,
82
+ role,
83
+ fullName: user.fullName,
84
+ provider: LOGIN_PROVIDER.WALLET,
85
+ walletOS: request.context.didwallet.os,
86
+ emailVerified: user.emailVerified,
87
+ phoneVerified: user.phoneVerified,
88
+ elevated: canSessionBeElevated(role, info),
89
+ },
90
+ { ...sessionConfig, didConnectVersion: getDidConnectVersion(request) }
91
+ );
92
+
93
+ await updateSession({ sessionToken, refreshToken }, true);
94
+ },
95
+ };
96
+ };
@@ -32,6 +32,8 @@ const createMigrateToStructV2Routes = require('./connect/migrate-app-to-struct-v
32
32
  const createTransferAppOwnerRoutes = require('./connect/transfer-app-owner');
33
33
  const createIssueKycAuth = require('./connect/issue-kyc');
34
34
  const createUpdateKycAuth = require('./connect/update-kyc');
35
+ const createVerifyElevatedAuth = require('./connect/verify-elevated');
36
+ const createVerifyDestroyAuth = require('./connect/verify-destroy');
35
37
  const createReceiveTransferAppOwnerRoutes = require('./connect/receive-transfer-app-owner');
36
38
  const createSessionRoutes = require('./session');
37
39
  const createPassportRoutes = require('./passport');
@@ -240,6 +242,8 @@ const init = ({ node, options }) => {
240
242
  handler.attach(Object.assign({ app }, createCheckHasProjectIdAuth(node, options, createSessionToken)));
241
243
  handler.attach(Object.assign({ app }, createIssueKycAuth(node, authenticator, createSessionToken)));
242
244
  handler.attach(Object.assign({ app }, createUpdateKycAuth(node, authenticator, createSessionToken)));
245
+ handler.attach(Object.assign({ app }, createVerifyElevatedAuth(node, authenticator, createSessionToken)));
246
+ handler.attach(Object.assign({ app }, createVerifyDestroyAuth(node, authenticator, createSessionToken)));
243
247
  });
244
248
  };
245
249
 
@@ -182,7 +182,7 @@ module.exports = ({ node, req, options }) => {
182
182
  await req.ensureUser({ token });
183
183
 
184
184
  if (req.user) {
185
- res.cookie('login_token', token, { maxAge: 24 * 60 * 60 * 1000 });
185
+ res.cookie('login_token', token, { maxAge: 60 * 60 * 1000 });
186
186
  }
187
187
  };
188
188
 
@@ -1 +1 @@
1
- import{a2 as a,a3 as r,j as t}from"./index-dEKXkm4C.js";var e={},u=r;Object.defineProperty(e,"__esModule",{value:!0});var d=e.default=void 0,v=u(a()),o=t;d=e.default=(0,v.default)((0,o.jsx)("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6z"}),"Add");export{d};
1
+ import{a2 as a,a3 as r,j as t}from"./index-CqThjKMA.js";var e={},u=r;Object.defineProperty(e,"__esModule",{value:!0});var d=e.default=void 0,v=u(a()),o=t;d=e.default=(0,v.default)((0,o.jsx)("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6z"}),"Add");export{d};
@@ -1 +1 @@
1
- import{aK as w,aL as T,az as c,j as e,aM as d,ao as H,aN as g,cj as y,ck as I,aQ as n,r as _,aO as U,aP as F,aI as V,aS as Z,aT as D}from"./index-dEKXkm4C.js";import{u as M}from"./useSlot-2GhS7jdI.js";function K(o){return T("MuiAlert",o)}const S=w("MuiAlert",["root","action","icon","message","filled","colorSuccess","colorInfo","colorWarning","colorError","filledSuccess","filledInfo","filledWarning","filledError","outlined","outlinedSuccess","outlinedInfo","outlinedWarning","outlinedError","standard","standardSuccess","standardInfo","standardWarning","standardError"]),Q=c(e.jsx("path",{d:"M20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4C12.76,4 13.5,4.11 14.2, 4.31L15.77,2.74C14.61,2.26 13.34,2 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0, 0 22,12M7.91,10.08L6.5,11.5L11,16L21,6L19.59,4.58L11,13.17L7.91,10.08Z"}),"SuccessOutlined"),q=c(e.jsx("path",{d:"M12 5.99L19.53 19H4.47L12 5.99M12 2L1 21h22L12 2zm1 14h-2v2h2v-2zm0-6h-2v4h2v-4z"}),"ReportProblemOutlined"),G=c(e.jsx("path",{d:"M11 15h2v2h-2zm0-8h2v6h-2zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"}),"ErrorOutline"),J=c(e.jsx("path",{d:"M11,9H13V7H11M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20, 12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10, 10 0 0,0 12,2M11,17H13V11H11V17Z"}),"InfoOutlined"),X=c(e.jsx("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"}),"Close"),Y=["action","children","className","closeText","color","components","componentsProps","icon","iconMapping","onClose","role","severity","slotProps","slots","variant"],oo=o=>{const{variant:s,color:r,severity:t,classes:l}=o,u={root:["root",`color${g(r||t)}`,`${s}${g(r||t)}`,`${s}`],icon:["icon"],message:["message"],action:["action"]};return D(u,K,l)},to=d(H,{name:"MuiAlert",slot:"Root",overridesResolver:(o,s)=>{const{ownerState:r}=o;return[s.root,s[r.variant],s[`${r.variant}${g(r.color||r.severity)}`]]}})(({theme:o})=>{const s=o.palette.mode==="light"?y:I,r=o.palette.mode==="light"?I:y;return n({},o.typography.body2,{backgroundColor:"transparent",display:"flex",padding:"6px 16px",variants:[...Object.entries(o.palette).filter(([,t])=>t.main&&t.light).map(([t])=>({props:{colorSeverity:t,variant:"standard"},style:{color:o.vars?o.vars.palette.Alert[`${t}Color`]:s(o.palette[t].light,.6),backgroundColor:o.vars?o.vars.palette.Alert[`${t}StandardBg`]:r(o.palette[t].light,.9),[`& .${S.icon}`]:o.vars?{color:o.vars.palette.Alert[`${t}IconColor`]}:{color:o.palette[t].main}}})),...Object.entries(o.palette).filter(([,t])=>t.main&&t.light).map(([t])=>({props:{colorSeverity:t,variant:"outlined"},style:{color:o.vars?o.vars.palette.Alert[`${t}Color`]:s(o.palette[t].light,.6),border:`1px solid ${(o.vars||o).palette[t].light}`,[`& .${S.icon}`]:o.vars?{color:o.vars.palette.Alert[`${t}IconColor`]}:{color:o.palette[t].main}}})),...Object.entries(o.palette).filter(([,t])=>t.main&&t.dark).map(([t])=>({props:{colorSeverity:t,variant:"filled"},style:n({fontWeight:o.typography.fontWeightMedium},o.vars?{color:o.vars.palette.Alert[`${t}FilledColor`],backgroundColor:o.vars.palette.Alert[`${t}FilledBg`]}:{backgroundColor:o.palette.mode==="dark"?o.palette[t].dark:o.palette[t].main,color:o.palette.getContrastText(o.palette[t].main)})}))]})}),so=d("div",{name:"MuiAlert",slot:"Icon",overridesResolver:(o,s)=>s.icon})({marginRight:12,padding:"7px 0",display:"flex",fontSize:22,opacity:.9}),eo=d("div",{name:"MuiAlert",slot:"Message",overridesResolver:(o,s)=>s.message})({padding:"8px 0",minWidth:0,overflow:"auto"}),j=d("div",{name:"MuiAlert",slot:"Action",overridesResolver:(o,s)=>s.action})({display:"flex",alignItems:"flex-start",padding:"4px 0 0 16px",marginLeft:"auto",marginRight:-8}),z={success:e.jsx(Q,{fontSize:"inherit"}),warning:e.jsx(q,{fontSize:"inherit"}),error:e.jsx(G,{fontSize:"inherit"}),info:e.jsx(J,{fontSize:"inherit"})},no=_.forwardRef(function(s,r){const t=U({props:s,name:"MuiAlert"}),{action:l,children:u,className:$,closeText:v="Close",color:f,components:x={},componentsProps:L={},icon:C,iconMapping:P=z,onClose:A,role:b="alert",severity:p="success",slotProps:h={},slots:O={},variant:R="standard"}=t,k=F(t,Y),a=n({},t,{color:f,severity:p,variant:R,colorSeverity:f||p}),i=oo(a),m={slots:n({closeButton:x.CloseButton,closeIcon:x.CloseIcon},O),slotProps:n({},L,h)},[B,E]=M("closeButton",{elementType:V,externalForwardedProps:m,ownerState:a}),[N,W]=M("closeIcon",{elementType:X,externalForwardedProps:m,ownerState:a});return e.jsxs(to,n({role:b,elevation:0,ownerState:a,className:Z(i.root,$),ref:r},k,{children:[C!==!1?e.jsx(so,{ownerState:a,className:i.icon,children:C||P[p]||z[p]}):null,e.jsx(eo,{ownerState:a,className:i.message,children:u}),l!=null?e.jsx(j,{ownerState:a,className:i.action,children:l}):null,l==null&&A?e.jsx(j,{ownerState:a,className:i.action,children:e.jsx(B,n({size:"small","aria-label":v,title:v,color:"inherit",onClick:A},E,{children:e.jsx(N,n({fontSize:"small"},W))}))}):null]}))});export{no as A,X as C};
1
+ import{aK as w,aL as T,az as c,j as e,aM as d,ao as H,aN as g,cj as y,ck as I,aQ as n,r as _,aO as U,aP as F,aI as V,aS as Z,aT as D}from"./index-CqThjKMA.js";import{u as M}from"./useSlot-BcsOw05W.js";function K(o){return T("MuiAlert",o)}const S=w("MuiAlert",["root","action","icon","message","filled","colorSuccess","colorInfo","colorWarning","colorError","filledSuccess","filledInfo","filledWarning","filledError","outlined","outlinedSuccess","outlinedInfo","outlinedWarning","outlinedError","standard","standardSuccess","standardInfo","standardWarning","standardError"]),Q=c(e.jsx("path",{d:"M20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4C12.76,4 13.5,4.11 14.2, 4.31L15.77,2.74C14.61,2.26 13.34,2 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0, 0 22,12M7.91,10.08L6.5,11.5L11,16L21,6L19.59,4.58L11,13.17L7.91,10.08Z"}),"SuccessOutlined"),q=c(e.jsx("path",{d:"M12 5.99L19.53 19H4.47L12 5.99M12 2L1 21h22L12 2zm1 14h-2v2h2v-2zm0-6h-2v4h2v-4z"}),"ReportProblemOutlined"),G=c(e.jsx("path",{d:"M11 15h2v2h-2zm0-8h2v6h-2zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"}),"ErrorOutline"),J=c(e.jsx("path",{d:"M11,9H13V7H11M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20, 12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10, 10 0 0,0 12,2M11,17H13V11H11V17Z"}),"InfoOutlined"),X=c(e.jsx("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"}),"Close"),Y=["action","children","className","closeText","color","components","componentsProps","icon","iconMapping","onClose","role","severity","slotProps","slots","variant"],oo=o=>{const{variant:s,color:r,severity:t,classes:l}=o,u={root:["root",`color${g(r||t)}`,`${s}${g(r||t)}`,`${s}`],icon:["icon"],message:["message"],action:["action"]};return D(u,K,l)},to=d(H,{name:"MuiAlert",slot:"Root",overridesResolver:(o,s)=>{const{ownerState:r}=o;return[s.root,s[r.variant],s[`${r.variant}${g(r.color||r.severity)}`]]}})(({theme:o})=>{const s=o.palette.mode==="light"?y:I,r=o.palette.mode==="light"?I:y;return n({},o.typography.body2,{backgroundColor:"transparent",display:"flex",padding:"6px 16px",variants:[...Object.entries(o.palette).filter(([,t])=>t.main&&t.light).map(([t])=>({props:{colorSeverity:t,variant:"standard"},style:{color:o.vars?o.vars.palette.Alert[`${t}Color`]:s(o.palette[t].light,.6),backgroundColor:o.vars?o.vars.palette.Alert[`${t}StandardBg`]:r(o.palette[t].light,.9),[`& .${S.icon}`]:o.vars?{color:o.vars.palette.Alert[`${t}IconColor`]}:{color:o.palette[t].main}}})),...Object.entries(o.palette).filter(([,t])=>t.main&&t.light).map(([t])=>({props:{colorSeverity:t,variant:"outlined"},style:{color:o.vars?o.vars.palette.Alert[`${t}Color`]:s(o.palette[t].light,.6),border:`1px solid ${(o.vars||o).palette[t].light}`,[`& .${S.icon}`]:o.vars?{color:o.vars.palette.Alert[`${t}IconColor`]}:{color:o.palette[t].main}}})),...Object.entries(o.palette).filter(([,t])=>t.main&&t.dark).map(([t])=>({props:{colorSeverity:t,variant:"filled"},style:n({fontWeight:o.typography.fontWeightMedium},o.vars?{color:o.vars.palette.Alert[`${t}FilledColor`],backgroundColor:o.vars.palette.Alert[`${t}FilledBg`]}:{backgroundColor:o.palette.mode==="dark"?o.palette[t].dark:o.palette[t].main,color:o.palette.getContrastText(o.palette[t].main)})}))]})}),so=d("div",{name:"MuiAlert",slot:"Icon",overridesResolver:(o,s)=>s.icon})({marginRight:12,padding:"7px 0",display:"flex",fontSize:22,opacity:.9}),eo=d("div",{name:"MuiAlert",slot:"Message",overridesResolver:(o,s)=>s.message})({padding:"8px 0",minWidth:0,overflow:"auto"}),j=d("div",{name:"MuiAlert",slot:"Action",overridesResolver:(o,s)=>s.action})({display:"flex",alignItems:"flex-start",padding:"4px 0 0 16px",marginLeft:"auto",marginRight:-8}),z={success:e.jsx(Q,{fontSize:"inherit"}),warning:e.jsx(q,{fontSize:"inherit"}),error:e.jsx(G,{fontSize:"inherit"}),info:e.jsx(J,{fontSize:"inherit"})},no=_.forwardRef(function(s,r){const t=U({props:s,name:"MuiAlert"}),{action:l,children:u,className:$,closeText:v="Close",color:f,components:x={},componentsProps:L={},icon:C,iconMapping:P=z,onClose:A,role:b="alert",severity:p="success",slotProps:h={},slots:O={},variant:R="standard"}=t,k=F(t,Y),a=n({},t,{color:f,severity:p,variant:R,colorSeverity:f||p}),i=oo(a),m={slots:n({closeButton:x.CloseButton,closeIcon:x.CloseIcon},O),slotProps:n({},L,h)},[B,E]=M("closeButton",{elementType:V,externalForwardedProps:m,ownerState:a}),[N,W]=M("closeIcon",{elementType:X,externalForwardedProps:m,ownerState:a});return e.jsxs(to,n({role:b,elevation:0,ownerState:a,className:Z(i.root,$),ref:r},k,{children:[C!==!1?e.jsx(so,{ownerState:a,className:i.icon,children:C||P[p]||z[p]}):null,e.jsx(eo,{ownerState:a,className:i.message,children:u}),l!=null?e.jsx(j,{ownerState:a,className:i.action,children:l}):null,l==null&&A?e.jsx(j,{ownerState:a,className:i.action,children:e.jsx(B,n({size:"small","aria-label":v,title:v,color:"inherit",onClick:A},E,{children:e.jsx(N,n({fontSize:"small"},W))}))}):null]}))});export{no as A,X as C};
@@ -1 +1 @@
1
- import{a2 as r,a3 as a,j as t}from"./index-dEKXkm4C.js";var e={},o=a;Object.defineProperty(e,"__esModule",{value:!0});var u=e.default=void 0,i=o(r()),p=t;u=e.default=(0,i.default)((0,p.jsx)("path",{d:"m7 10 5 5 5-5z"}),"ArrowDropDown");export{u as d};
1
+ import{a2 as r,a3 as a,j as t}from"./index-CqThjKMA.js";var e={},o=a;Object.defineProperty(e,"__esModule",{value:!0});var u=e.default=void 0,i=o(r()),p=t;u=e.default=(0,i.default)((0,p.jsx)("path",{d:"m7 10 5 5 5-5z"}),"ArrowDropDown");export{u as d};