@abtnode/blocklet-services 1.16.42-beta-20250416-010627-a89e72e0 → 1.16.43-beta-20250419-231352-c78ac93d
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.
- package/api/emails/_components/compose.js +1 -1
- package/api/emails/_templates/new-user-session.js +67 -0
- package/api/index.js +12 -9
- package/api/libs/connect/session.js +3 -0
- package/api/libs/connect/v1.js +4 -3
- package/api/routes/federated.js +9 -1
- package/api/routes/user-session.js +3 -0
- package/api/routes/user.js +19 -12
- package/api/services/auth/connect/invite.js +3 -0
- package/api/services/auth/connect/issue-passport.js +3 -0
- package/api/services/auth/passkey.js +7 -6
- package/api/services/auth/session.js +30 -7
- package/api/services/static.js +0 -6
- package/api/util/user-util.js +3 -0
- package/dist/assets/{AdapterDayjs-B7fWFwN5.js → AdapterDayjs-DBd25Gc9.js} +1 -1
- package/dist/assets/{ArrowDropDown-DO9H_COV.js → ArrowDropDown-CplPoZk0.js} +1 -1
- package/dist/assets/{CheckCircle-B_wWOO2P.js → CheckCircle-DKW0gPt9.js} +1 -1
- package/dist/assets/{ChevronLeft-BdrBCIFt.js → ChevronLeft-f4mXxiqC.js} +1 -1
- package/dist/assets/{ChevronRight-CO9My6tF.js → ChevronRight-I8lL2o6m.js} +1 -1
- package/dist/assets/{Community-B_YqAP9P.js → Community-eISlOOkV.js} +1 -1
- package/dist/assets/{DeleteOutline-7AloJjcV.js → DeleteOutline-gXV6-Yj1.js} +1 -1
- package/dist/assets/{Done-BXISjL2g.js → Done-D7ovxqe0.js} +1 -1
- package/dist/assets/{Download-B0rKRcTB.js → Download-DnSJYUu9.js} +1 -1
- package/dist/assets/{Edit-C1mcIe4c.js → Edit-K6PObbWp.js} +1 -1
- package/dist/assets/{EditIcon-5ixNT5sW.js → EditIcon-CQgpOLLT.js} +1 -1
- package/dist/assets/{Email-RGD-rKFl.js → Email-BWTg6iJI.js} +1 -1
- package/dist/assets/{Error-BnWmSZ5k.js → Error-Cpr3WuZf.js} +1 -1
- package/dist/assets/{ExpandLess-DRlih5VO.js → ExpandLess-CfCbhFiC.js} +1 -1
- package/dist/assets/{Google-1eG1YH-u.js → Google-BPbeA72O.js} +1 -1
- package/dist/assets/{Holiday-C_1hMIGZ.js → Holiday-C3bRTVlx.js} +1 -1
- package/dist/assets/{InfoOutlined-DO0_Vjz-.js → InfoOutlined-Cxodw3Dd.js} +1 -1
- package/dist/assets/{Launch-CIC8rZgo.js → Launch-BtCtZYws.js} +1 -1
- package/dist/assets/{LaunchOutlined-CkYWJcA9.js → LaunchOutlined--YSktZgX.js} +1 -1
- package/dist/assets/{Location-B6FoL795.js → Location-C_mUMqZP.js} +1 -1
- package/dist/assets/{LockIcon-D3vSMIOk.js → LockIcon-G8zLxYzV.js} +1 -1
- package/dist/assets/{Meeting-BfKca-xn.js → Meeting-vvmUKHs1.js} +1 -1
- package/dist/assets/{MoreHoriz-B8cBSV22.js → MoreHoriz-ChU2hdzJ.js} +1 -1
- package/dist/assets/{OffSick-QPPyYyU6.js → OffSick-BTxtVws3.js} +1 -1
- package/dist/assets/{Phone-_lRBpoVi.js → Phone-Cz_yY8ed.js} +1 -1
- package/dist/assets/{PlayArrow-NjIpSDwJ.js → PlayArrow-sN_fSbsI.js} +1 -1
- package/dist/assets/{QuestionMarkCircle-B4EnwYju.js → QuestionMarkCircle-DeAbZuzW.js} +1 -1
- package/dist/assets/{ServerLogo-BW4PKwV0.js → ServerLogo-UZVUmHWK.js} +1 -1
- package/dist/assets/{Timezone-bYzGwn3x.js → Timezone-5RxC7sK-.js} +1 -1
- package/dist/assets/{TuneOutlined-Bry0vSC0.js → TuneOutlined-CiDODSgi.js} +1 -1
- package/dist/assets/{ViewList-BzGRahvc.js → ViewList-BgK0KBCz.js} +1 -1
- package/dist/assets/{WorkingRemotely-BK9_vlZ-.js → WorkingRemotely-_QD8QN72.js} +1 -1
- package/dist/assets/{access-control-7Ih10vY9.js → access-control-Py8YI7Sg.js} +1 -1
- package/dist/assets/{actions-BOikuUJD.js → actions-C-bMrlCM.js} +1 -1
- package/dist/assets/add-component-core-Qy10hfGq.js +762 -0
- package/dist/assets/{add-resource-VgacdokL.js → add-resource--JfwloZn.js} +1 -1
- package/dist/assets/{addon-F4fsk4Yi.js → addon-BF7ni3fn.js} +1 -1
- package/dist/assets/advanced--o9qksiV.js +14 -0
- package/dist/assets/api-DwjKcjK8.js +1 -0
- package/dist/assets/{appearance-BWtF9DZd.js → appearance-DQ7WvKeM.js} +1 -1
- package/dist/assets/ar-DRtGxecv.js +7 -0
- package/dist/assets/audit-logs-CXRUUhqH.js +35 -0
- package/dist/assets/{authorize-BKpxW7YW.js → authorize-DUug1C68.js} +1 -1
- package/dist/assets/{base32-CQfYcymN.js → base32-CWI-u9nV.js} +1 -1
- package/dist/assets/{branding-DoPxX3nU.js → branding-BS99MP-h.js} +2 -2
- package/dist/assets/branding-D9uh0isl.js +54 -0
- package/dist/assets/bundle-avatar-nPtHnMPN.js +1 -0
- package/dist/assets/button-BxdaIS5g.js +1 -0
- package/dist/assets/{click-to-copy-Cygm8U3_.js → click-to-copy-CTfzGpml.js} +1 -1
- package/dist/assets/{cloneDeep-kMVNpUap.js → cloneDeep-DUYD8ZBI.js} +1 -1
- package/dist/assets/{complete-Cnzbqj4O.js → complete-DVY-bJt4.js} +1 -1
- package/dist/assets/{component-BBRNk4Tr.js → component-DvDJBvwl.js} +1 -1
- package/dist/assets/{config-Dko9yBri.js → config-BQCgx2fR.js} +1 -1
- package/dist/assets/{config-navigation-CDw3CW3J.js → config-navigation-gxUAyoWT.js} +6 -6
- package/dist/assets/{config-Ba-WdcGO.js → config-ogNfLnBw.js} +1 -1
- package/dist/assets/{config-space-CSSDG-WO.js → config-space-BVobvnPL.js} +1 -1
- package/dist/assets/{confirm-BX8_-j-l.js → confirm-DVW7YBsC.js} +1 -1
- package/dist/assets/connect-C1ax2q5c.js +5 -0
- package/dist/assets/{connect-ByA6PdRd.js → connect-CZiBZEfi.js} +1 -1
- package/dist/assets/{connect-to-yIsMDJbM.js → connect-to-CzcgHUZG.js} +1 -1
- package/dist/assets/{content-layout-BM34AwsG.js → content-layout-Cg5RRv1R.js} +1 -1
- package/dist/assets/dashboard-CP2P7oxj.js +279 -0
- package/dist/assets/de-BZDWXY3K.js +7 -0
- package/dist/assets/{delete-confirm-C0cAQSXq.js → delete-confirm-XK8jSuf8.js} +1 -1
- package/dist/assets/{did-address-GAxLGeWB.js → did-address-CQl19Nvh.js} +1 -1
- package/dist/assets/domain-Gbwc_7wY.js +9 -0
- package/dist/assets/domain-action-card-kpBwugfc.js +25 -0
- package/dist/assets/domains-PNVO5nNw.js +1 -0
- package/dist/assets/dot-BBxUn__M.js +7 -0
- package/dist/assets/{email-B9kMynU0.js → email-C_xHssUU.js} +2 -2
- package/dist/assets/{empty-spinner-Ict2ItjU.js → empty-spinner-yzHJfTIe.js} +1 -1
- package/dist/assets/es-kQ6jQG-H.js +7 -0
- package/dist/assets/{exchange-passport-CgO3iLVh.js → exchange-passport-hQXgq3GD.js} +1 -1
- package/dist/assets/fr-Bf3jz4q5.js +7 -0
- package/dist/assets/{fuel-C6fpJHcg.js → fuel-DVf4_c57.js} +1 -1
- package/dist/assets/{gen-access-key-jNw5st5h.js → gen-access-key-DpUd0FlR.js} +1 -1
- package/dist/assets/{get-safe-url-CRmmLBFf.js → get-safe-url-B-sc0A-n.js} +1 -1
- package/dist/assets/{get-safe-url-ZRaKUVld.js → get-safe-url-B_RF0YU0.js} +1 -1
- package/dist/assets/{hi-DCG5QxbH.js → hi-DPdbGXyy.js} +2 -8
- package/dist/assets/{home-AJ00GuT0.js → home-DMgMCymt.js} +1 -1
- package/dist/assets/id-BqmT-cL5.js +7 -0
- package/dist/assets/{iframe-C4N_8Wwh.js → iframe-4UgdZZC1.js} +1 -1
- package/dist/assets/{index-D1fVmwHN.js → index-B0Z8409R.js} +1 -1
- package/dist/assets/{index-DkPKxdcu.js → index-BjmnM2sd.js} +1 -1
- package/dist/assets/index-BkddeMo4.js +346 -0
- package/dist/assets/index-BwaE3jmF.js +10 -0
- package/dist/assets/index-C0Iiqot3.css +1 -0
- package/dist/assets/index-C7N2sf_h.js +138 -0
- package/dist/assets/{index-O2l0NSUF.js → index-CEMXycV7.js} +1 -1
- package/dist/assets/{index-BP62CTBB.js → index-CHnniEyF.js} +1 -1
- package/dist/assets/index-CagPo5v-.js +113 -0
- package/dist/assets/{index-DzDfEcNp.js → index-CgtY16Wm.js} +1 -1
- package/dist/assets/{index-PfRsNX8F.js → index-CsgM0f6J.js} +1 -1
- package/dist/assets/{index-DyO7bYXp.js → index-CtXa7h2w.js} +9 -9
- package/dist/assets/index-Cy-N-WWk.js +92 -0
- package/dist/assets/index-D0RC10aR.js +55 -0
- package/dist/assets/{index-EBUaBME3.js → index-DDQJBjEj.js} +2 -2
- package/dist/assets/{index-CyBxUW5e.js → index-DLKBGmpX.js} +1 -1
- package/dist/assets/index-DPgbycNO.js +1 -0
- package/dist/assets/index-DZj02tPf.js +113 -0
- package/dist/assets/{index-BRz2myBK.js → index-DpPN2Hn-.js} +1 -1
- package/dist/assets/{index-CNl-IhR2.js → index-GjE02L4C.js} +2 -2
- package/dist/assets/index-Gm2-_e3j.js +1 -0
- package/dist/assets/{index-B64a4BbE.js → index-I8x_0gIy.js} +18 -18
- package/dist/assets/index-Pg83GFwT.js +4 -0
- package/dist/assets/{index-8Co4tmLR.js → index-WrR7FOJW.js} +8 -8
- package/dist/assets/{index-CX4jvZnM.js → index-haYY8BAk.js} +1 -1
- package/dist/assets/{index-C-7MyHbp.js → index-kqlC8JFQ.js} +1 -1
- package/dist/assets/{invitation-DVbBeS8B.js → invitation-BHGagSLV.js} +1 -1
- package/dist/assets/{invite-t8rB5ZWZ.js → invite-CvX-43Qc.js} +1 -1
- package/dist/assets/{issue-passport-CSlA5ioP.js → issue-passport-BW6yzKx3.js} +1 -1
- package/dist/assets/{item--dgEgBvz.js → item-BF4KPkcQ.js} +1 -1
- package/dist/assets/ja-CyUU4_H1.js +7 -0
- package/dist/assets/ko-DWTxutv1.js +7 -0
- package/dist/assets/landing-page-D5MYBFUa.js +1 -0
- package/dist/assets/{launch-result-message-Bvdtucih.js → launch-result-message-Ckk5lRW7.js} +1 -1
- package/dist/assets/{layout-B4YOjaNK.js → layout-aojLTImI.js} +1 -1
- package/dist/assets/list-Dc8Jfe8L.js +234 -0
- package/dist/assets/{list-header-Bm8u_Z_p.js → list-header-BYlc5SI1.js} +1 -1
- package/dist/assets/localization-Bd0hX08w.js +1 -0
- package/dist/assets/{log-CP1_Zl5R.js → log-DOIIPe_H.js} +1 -1
- package/dist/assets/{logger-B9-TWjbH.js → logger-BWFrucDF.js} +1 -1
- package/dist/assets/{login-C8k7kmim.js → login-CWe2jVnz.js} +1 -1
- package/dist/assets/{login-oauth-callback-DqejBHsA.js → login-oauth-callback-DX0RUZbI.js} +1 -1
- package/dist/assets/logo-uploader-DrmXtKUh.js +133 -0
- package/dist/assets/{lost-passport-Croi_0xR.js → lost-passport-3IUMBdMK.js} +2 -2
- package/dist/assets/{omit-MMUW2k9W.js → omit-B1LDXfkq.js} +1 -1
- package/dist/assets/{open-window-plauGxNl.js → open-window-C9M0sLPo.js} +1 -1
- package/dist/assets/{overview-C8MR_9r7.js → overview-DXBkrcK9.js} +1 -1
- package/dist/assets/{page-header-Cu9lHawO.js → page-header-CtJV2gil.js} +1 -1
- package/dist/assets/passport-item-Eb0O4plM.js +1 -0
- package/dist/assets/{permission-C5Df-sxb.js → permission-Bua36Doc.js} +1 -1
- package/dist/assets/preferences-D4p_dB62.js +1 -0
- package/dist/assets/profile-embed-CBcCbRqv.js +1 -0
- package/dist/assets/pt-BcsDG9H6.js +5 -0
- package/dist/assets/publish-resource-DZIl2SXf.js +1 -0
- package/dist/assets/{react-beautiful-dnd.esm-BQ3hEDNY.js → react-beautiful-dnd.esm-QRb5iprr.js} +1 -1
- package/dist/assets/{relative-time-DESntOZH.js → relative-time-BTIpMkPf.js} +1 -1
- package/dist/assets/ru-BwH1q1F1.js +5 -0
- package/dist/assets/runtime-DZIYyJfe.js +1 -0
- package/dist/assets/sdk-Bt5s8-As.js +1 -0
- package/dist/assets/{security-CRd92J54.js → security-fEJBFCBy.js} +1 -1
- package/dist/assets/{session-DaQ4KCFD.js → session-CW6CHHdW.js} +1 -1
- package/dist/assets/setup-D3w4xkpj.js +19 -0
- package/dist/assets/{shorten-label-CwDvu4_S.js → shorten-label-8jfEkawx.js} +1 -1
- package/dist/assets/{simple-select-DgqUhMvQ.js → simple-select-CNZc1N7Q.js} +1 -1
- package/dist/assets/{slicedToArray-B8PdYes9.js → slicedToArray-gyBkcGHe.js} +1 -1
- package/dist/assets/{spaces-D1rqZVaX.js → spaces-970nXC4W.js} +1 -1
- package/dist/assets/{start-Df0wvo1-.js → start-2a5gIZRp.js} +1 -1
- package/dist/assets/{status-D7e11K9q.js → status-DBrvkky_.js} +1 -1
- package/dist/assets/{step-actions-BAf7tRyq.js → step-actions-6TYxd1MB.js} +1 -1
- package/dist/assets/{studio-CJpRZ6Af.js → studio-DbIZ4lHD.js} +1 -1
- package/dist/assets/{switch-control-DPANzJ8H.js → switch-control-Bw3ohhMA.js} +1 -1
- package/dist/assets/th-CNztcQMJ.js +5 -0
- package/dist/assets/traffic-DBgXOCbQ.js +35 -0
- package/dist/assets/{transfer-CBAuvpGA.js → transfer-B0de7VRU.js} +1 -1
- package/dist/assets/{unsubscribe-Cyuj6w2n.js → unsubscribe-CUEA_4Ow.js} +1 -1
- package/dist/assets/use-app-logo-DoDXvoIT.js +1 -0
- package/dist/assets/{use-mobile-BHPd3bDQ.js → use-mobile-BbxjRR_q.js} +1 -1
- package/dist/assets/{use-mobile-CHMVa8_W.js → use-mobile-T-9_nK_m.js} +1 -1
- package/dist/assets/useAsync-B_98ShEr.js +1 -0
- package/dist/assets/{useLocalStorage-BXnF_60k.js → useLocalStorage-CkST2tLi.js} +1 -1
- package/dist/assets/user-center-B2qCZ2yX.js +77 -0
- package/dist/assets/{util-Csa0tyHO.js → util-BUnBptcm.js} +1 -1
- package/dist/assets/{util-C9b90o5T.js → util-Bt5DR42K.js} +1 -1
- package/dist/assets/{vendor-arcblock-BtlDhznp.js → vendor-arcblock-CBc_0mJh.js} +78 -78
- package/dist/assets/{vendor-hooks-BwVH-TAd.js → vendor-hooks-jg6xPUPF.js} +1 -1
- package/dist/assets/{vendor-mui-core-DxD1UA4o.js → vendor-mui-core-DiDsSLd-.js} +30 -30
- package/dist/assets/{vendor-mui-x-Bit8yv3W.js → vendor-mui-x-mVhD3N7n.js} +1 -1
- package/dist/assets/vendor-utils-DMClavLd.js +11 -0
- package/dist/assets/vendor-ux-did-connect-BKeZkgZt.js +1832 -0
- package/dist/assets/{vendor-ux-did-connect-2GapMFC4.css → vendor-ux-did-connect-DpSGLE7B.css} +1 -1
- package/dist/assets/vi-Bpl5HEj4.js +5 -0
- package/dist/assets/wrap-locale-CJY3ql5f.js +1 -0
- package/dist/assets/{zh-BYP8UvRZ.js → zh-CY9wasmC.js} +2 -9
- package/dist/assets/{zh-tw-Dcs2VpLv.js → zh-tw-D6qZTlL3.js} +2 -9
- package/dist/index.html +7 -7
- package/dist/service-worker.js +1 -1
- package/package.json +47 -45
- package/dist/assets/add-component-core-DRJSzr-6.js +0 -763
- package/dist/assets/advanced-a-1InjKG.js +0 -14
- package/dist/assets/api-3sG9at7i.js +0 -1
- package/dist/assets/ar-CMzth4YC.js +0 -13
- package/dist/assets/audit-logs-DqFf6jS-.js +0 -35
- package/dist/assets/branding--Qk4aIi4.js +0 -55
- package/dist/assets/bundle-avatar-DNxC8z4b.js +0 -1
- package/dist/assets/button-leITu2bm.js +0 -1
- package/dist/assets/connect-DBfZH_8M.js +0 -5
- package/dist/assets/dashboard-oxsbu66O.js +0 -275
- package/dist/assets/de-BkBUnf4o.js +0 -13
- package/dist/assets/domain-BB7h2xMD.js +0 -9
- package/dist/assets/domain-action-card-BKzC5bbv.js +0 -29
- package/dist/assets/domains-CQPZJx98.js +0 -1
- package/dist/assets/es-C47yMWlQ.js +0 -14
- package/dist/assets/fr-CXUB715N.js +0 -13
- package/dist/assets/id-BjbrrkXh.js +0 -14
- package/dist/assets/index-B5bNvBjf.js +0 -138
- package/dist/assets/index-BS5tohCn.js +0 -4
- package/dist/assets/index-BSlpaPEE.js +0 -346
- package/dist/assets/index-C1H5SEVx.js +0 -113
- package/dist/assets/index-Cv9H4C1K.js +0 -55
- package/dist/assets/index-D4PP6P2d.css +0 -1
- package/dist/assets/index-D6v3bOtJ.js +0 -14
- package/dist/assets/index-DIckhHU5.js +0 -1
- package/dist/assets/index-DKLLCs8G.js +0 -93
- package/dist/assets/index-Dc-Oeqo9.js +0 -1
- package/dist/assets/index-tjRN_EVx.js +0 -119
- package/dist/assets/ja-DmNZQIta.js +0 -14
- package/dist/assets/ko-CfYwMwZz.js +0 -14
- package/dist/assets/landing-page-aHOyrHWC.js +0 -1
- package/dist/assets/list-Bny5F0T2.js +0 -234
- package/dist/assets/localization-DS_PbFVL.js +0 -1
- package/dist/assets/logo-uploader-zhddoC5p.js +0 -133
- package/dist/assets/passport-item-DDktLU4q.js +0 -1
- package/dist/assets/preferences-BUVHMy7R.js +0 -1
- package/dist/assets/profile-embed-BKX2YBaX.js +0 -1
- package/dist/assets/pt-DD_rP5GH.js +0 -12
- package/dist/assets/publish-resource-tDbEc2CN.js +0 -1
- package/dist/assets/ru-CwgUUzV8.js +0 -11
- package/dist/assets/runtime-8Gq50HDL.js +0 -1
- package/dist/assets/sdk-DRKovxXZ.js +0 -1
- package/dist/assets/setup-DXwqTfxV.js +0 -19
- package/dist/assets/th-KqE3tuDR.js +0 -12
- package/dist/assets/traffic-Brsh4OZD.js +0 -35
- package/dist/assets/useAsync-BmW5cnbx.js +0 -1
- package/dist/assets/useAsync-DkPaceIy.js +0 -1
- package/dist/assets/useAsyncRetry-k063P8TB.js +0 -7
- package/dist/assets/user-center-DOyIfHWq.js +0 -77
- package/dist/assets/vendor-utils-CTIzdAFg.js +0 -11
- package/dist/assets/vendor-ux-did-connect-CiLSrCOH.js +0 -1832
- package/dist/assets/vi-BSkiIyr-.js +0 -12
- package/dist/assets/wrap-locale--aKPMOdK.js +0 -1
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
4
4
|
const components_1 = require("@react-email/components");
|
|
5
5
|
function ComposeItem({ data, style = {}, }) {
|
|
6
|
-
return ((0, jsx_runtime_1.jsx)(components_1.Text, { style: Object.assign({ color: data.color || 'initial', margin: 0, whiteSpace: 'pre-line!important' }, style), children: data.text }));
|
|
6
|
+
return ((0, jsx_runtime_1.jsx)(components_1.Text, { style: Object.assign({ color: data.color || 'initial', margin: 0, whiteSpace: 'pre-line !important' }, style), children: data.text }));
|
|
7
7
|
}
|
|
8
8
|
function Compose({ data }) {
|
|
9
9
|
let i = 0;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.NewUserSessionEmail = void 0;
|
|
7
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
+
const components_1 = require("@react-email/components");
|
|
9
|
+
const footer_1 = __importDefault(require("../_components/footer"));
|
|
10
|
+
const content_1 = __importDefault(require("../_components/content"));
|
|
11
|
+
const layout_1 = __importDefault(require("../_components/layout"));
|
|
12
|
+
const header_1 = __importDefault(require("../_components/header"));
|
|
13
|
+
const fontFamily = 'HelveticaNeue,Helvetica,Arial,sans-serif';
|
|
14
|
+
const main = {
|
|
15
|
+
fontFamily,
|
|
16
|
+
};
|
|
17
|
+
const container = {
|
|
18
|
+
margin: '20px auto',
|
|
19
|
+
backgroundColor: '#ffffff',
|
|
20
|
+
padding: '5px 50px 30px 60px',
|
|
21
|
+
};
|
|
22
|
+
const NewUserSessionEmail = ({ userSession, appInfo, locale = 'en', userInfo, poweredBy, }) => {
|
|
23
|
+
const translations = {
|
|
24
|
+
en: {
|
|
25
|
+
title: 'Your are logged in a new device',
|
|
26
|
+
loginIp: 'Login IP',
|
|
27
|
+
loginAt: 'Login At',
|
|
28
|
+
},
|
|
29
|
+
zh: {
|
|
30
|
+
title: '你在一个新的设备上登录了',
|
|
31
|
+
loginIp: '登录 IP',
|
|
32
|
+
loginAt: '登录时间',
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
const translation = translations[locale] || translations.en;
|
|
36
|
+
const subject = `[${appInfo.title}] ${translation.title}`;
|
|
37
|
+
const localeMap = {
|
|
38
|
+
en: 'en-US',
|
|
39
|
+
zh: 'zh-CN',
|
|
40
|
+
};
|
|
41
|
+
const targetLocale = localeMap[locale] || localeMap.en;
|
|
42
|
+
return ((0, jsx_runtime_1.jsxs)(layout_1.default, { mainStyle: main, subject: subject, children: [(0, jsx_runtime_1.jsx)(components_1.Preview, { children: subject }), (0, jsx_runtime_1.jsx)(header_1.default, { appInfo: appInfo }), (0, jsx_runtime_1.jsx)(content_1.default, { style: container, locale: locale, title: translation.title, body: (0, jsx_runtime_1.jsxs)(components_1.Text, { children: ["You are logged in a new device: ", userSession.ua] }), attachments: [
|
|
43
|
+
{
|
|
44
|
+
type: 'section',
|
|
45
|
+
fields: [
|
|
46
|
+
{
|
|
47
|
+
type: 'text',
|
|
48
|
+
data: { type: 'plain', color: '#9397A1', text: translation.loginIp },
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
type: 'text',
|
|
52
|
+
data: { type: 'plain', text: userSession.lastLoginIp },
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
type: 'text',
|
|
56
|
+
data: { type: 'plain', color: '#9397A1', text: translation.loginAt },
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
type: 'text',
|
|
60
|
+
data: { type: 'plain', text: userSession.updatedAt.toLocaleString(targetLocale) },
|
|
61
|
+
},
|
|
62
|
+
],
|
|
63
|
+
},
|
|
64
|
+
] }), (0, jsx_runtime_1.jsx)(footer_1.default, { showCopyright: false, poweredBy: poweredBy, showBlocklet: true, appInfo: appInfo, locale: locale, userInfo: userInfo })] }));
|
|
65
|
+
};
|
|
66
|
+
exports.NewUserSessionEmail = NewUserSessionEmail;
|
|
67
|
+
exports.default = exports.NewUserSessionEmail;
|
package/api/index.js
CHANGED
|
@@ -45,7 +45,7 @@ const { getAccessLogStream, setupAccessLogger } = require('./libs/logger');
|
|
|
45
45
|
require('./libs/fetch');
|
|
46
46
|
const cache = require('./cache');
|
|
47
47
|
const { ensureProxyUrl } = require('./util');
|
|
48
|
-
const { isProduction, isE2E, isFeDev
|
|
48
|
+
const { isProduction, isE2E, isFeDev } = require('./libs/env');
|
|
49
49
|
const states = require('./state/index');
|
|
50
50
|
|
|
51
51
|
const { init: initNotification } = require('./services/notification');
|
|
@@ -393,18 +393,21 @@ module.exports = function createServer(node, serverOptions = {}) {
|
|
|
393
393
|
...iconifyDomains,
|
|
394
394
|
].filter(Boolean),
|
|
395
395
|
fontSrc: ["'self'", 'data:', 'https://fonts.gstatic.com'],
|
|
396
|
+
// 修复 did names 被添加时被限制的问题
|
|
397
|
+
// https://github.com/ArcBlock/blocklet-server/issues/10984#issuecomment-2809600216
|
|
396
398
|
connectSrc: uniq(
|
|
397
399
|
[
|
|
398
400
|
"'self'",
|
|
399
401
|
'blob:',
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
...whitelist.
|
|
403
|
-
...whitelist.
|
|
404
|
-
...whitelist.
|
|
405
|
-
...whitelist.
|
|
406
|
-
...whitelist.
|
|
407
|
-
...whitelist.
|
|
402
|
+
'*',
|
|
403
|
+
// isDev ? 'ws://localhost:3040' : '',
|
|
404
|
+
// ...whitelist.spaces,
|
|
405
|
+
// ...whitelist.official,
|
|
406
|
+
// ...whitelist.login,
|
|
407
|
+
// ...whitelist.thirdParty,
|
|
408
|
+
// ...whitelist.system,
|
|
409
|
+
// ...whitelist.store,
|
|
410
|
+
// ...whitelist.aliases,
|
|
408
411
|
].filter(Boolean)
|
|
409
412
|
),
|
|
410
413
|
objectSrc: ["'self'", ...whitelist.official].filter(Boolean),
|
|
@@ -49,6 +49,7 @@ const getRequestIP = require('@abtnode/util/lib/get-request-ip');
|
|
|
49
49
|
const { PASSPORT_LOG_ACTION, PASSPORT_SOURCE, PASSPORT_STATUS } = require('@abtnode/constant');
|
|
50
50
|
const { getDeviceData } = require('@abtnode/util/lib/device');
|
|
51
51
|
const { getVerifyAccessClaims } = require('@abtnode/auth/lib/server');
|
|
52
|
+
const getOrigin = require('@abtnode/util/lib/get-origin');
|
|
52
53
|
|
|
53
54
|
const logger = require('../logger')('connect');
|
|
54
55
|
const { createTokenFn, getDidConnectVersion } = require('../../util');
|
|
@@ -639,6 +640,8 @@ module.exports = {
|
|
|
639
640
|
walletOS,
|
|
640
641
|
device: deviceData,
|
|
641
642
|
},
|
|
643
|
+
locale,
|
|
644
|
+
origin: await getOrigin({ req: request }),
|
|
642
645
|
});
|
|
643
646
|
|
|
644
647
|
if (shouldSyncFederated(sourceAppPid, blocklet)) {
|
package/api/libs/connect/v1.js
CHANGED
|
@@ -12,6 +12,7 @@ const { WELLKNOWN_SERVICE_PATH_PREFIX } = require('@abtnode/constant');
|
|
|
12
12
|
const DynamicStorage = require('@abtnode/connect-storage');
|
|
13
13
|
const { fromPublicKey } = require('@ocap/wallet');
|
|
14
14
|
const { getSourceAppPid } = require('@blocklet/sdk/lib/util/login');
|
|
15
|
+
const { getFederatedMaster } = require('@abtnode/auth/lib/util/federated');
|
|
15
16
|
|
|
16
17
|
const cache = require('../../cache');
|
|
17
18
|
const { appInfo, memberAppInfo, chainInfo } = require('./shared');
|
|
@@ -33,8 +34,8 @@ module.exports = (node, opts) => {
|
|
|
33
34
|
}
|
|
34
35
|
|
|
35
36
|
if (sourceAppPid) {
|
|
36
|
-
const
|
|
37
|
-
if (pk) {
|
|
37
|
+
const masterSite = getFederatedMaster(blocklet);
|
|
38
|
+
if (masterSite?.pk) {
|
|
38
39
|
// NOTE: 这里的 type 参数必须保持跟生成 blocklet 时使用的是一致的
|
|
39
40
|
const type = {
|
|
40
41
|
role: types.RoleType.ROLE_APPLICATION,
|
|
@@ -42,7 +43,7 @@ module.exports = (node, opts) => {
|
|
|
42
43
|
hash: types.HashType.SHA3,
|
|
43
44
|
address: types.EncodingType.BASE58,
|
|
44
45
|
};
|
|
45
|
-
const delegator = fromPublicKey(pk, type);
|
|
46
|
+
const delegator = fromPublicKey(masterSite.pk, type);
|
|
46
47
|
return delegator;
|
|
47
48
|
}
|
|
48
49
|
}
|
package/api/routes/federated.js
CHANGED
|
@@ -766,7 +766,15 @@ module.exports = {
|
|
|
766
766
|
limitSync(async () => {
|
|
767
767
|
try {
|
|
768
768
|
if (action === 'login') {
|
|
769
|
-
const result = await node.upsertUserSession(
|
|
769
|
+
const result = await node.upsertUserSession(
|
|
770
|
+
{
|
|
771
|
+
...userSessionItem,
|
|
772
|
+
teamDid,
|
|
773
|
+
status: 'online',
|
|
774
|
+
},
|
|
775
|
+
// 统一登录站点接收的会话变更,不发送通知
|
|
776
|
+
{ skipNotification: true }
|
|
777
|
+
);
|
|
770
778
|
return result;
|
|
771
779
|
}
|
|
772
780
|
if (action === 'logout') {
|
|
@@ -18,6 +18,7 @@ const { messages } = require('@abtnode/auth/lib/auth');
|
|
|
18
18
|
const { Joi } = require('@arcblock/validator');
|
|
19
19
|
const { getDeviceData } = require('@abtnode/util/lib/device');
|
|
20
20
|
const cors = require('cors');
|
|
21
|
+
const getOrigin = require('@abtnode/util/lib/get-origin');
|
|
21
22
|
|
|
22
23
|
const logger = require('../libs/logger')('blocklet-services:user-session');
|
|
23
24
|
const ensureBlocklet = require('../middlewares/ensure-blocklet');
|
|
@@ -296,6 +297,8 @@ module.exports = {
|
|
|
296
297
|
walletOS,
|
|
297
298
|
device: deviceData,
|
|
298
299
|
},
|
|
300
|
+
locale: req.blockletLocale,
|
|
301
|
+
origin: await getOrigin({ req }),
|
|
299
302
|
});
|
|
300
303
|
|
|
301
304
|
if (isFederatedLogin) {
|
package/api/routes/user.js
CHANGED
|
@@ -26,6 +26,7 @@ const cors = require('cors');
|
|
|
26
26
|
const createTranslator = require('@abtnode/util/lib/translate');
|
|
27
27
|
const { getDeviceData } = require('@abtnode/util/lib/device');
|
|
28
28
|
const { Op } = require('sequelize');
|
|
29
|
+
const getOrigin = require('@abtnode/util/lib/get-origin');
|
|
29
30
|
|
|
30
31
|
const { createTokenFn, getDidConnectVersion } = require('../util');
|
|
31
32
|
const initJwt = require('../libs/jwt');
|
|
@@ -359,6 +360,8 @@ async function loginSDK(req, node, options) {
|
|
|
359
360
|
walletOS: 'api',
|
|
360
361
|
device: deviceData,
|
|
361
362
|
},
|
|
363
|
+
locale,
|
|
364
|
+
origin: await getOrigin({ req }),
|
|
362
365
|
});
|
|
363
366
|
node.syncUserSession({
|
|
364
367
|
teamDid,
|
|
@@ -860,6 +863,8 @@ module.exports = {
|
|
|
860
863
|
walletOS,
|
|
861
864
|
device: deviceData,
|
|
862
865
|
},
|
|
866
|
+
locale,
|
|
867
|
+
origin: await getOrigin({ req }),
|
|
863
868
|
});
|
|
864
869
|
node.syncUserSession({
|
|
865
870
|
teamDid,
|
|
@@ -923,7 +928,7 @@ module.exports = {
|
|
|
923
928
|
const teamDid = blocklet.appPid;
|
|
924
929
|
// NOTICE: 此处需要保留从 body 携带 visitorId 的功能,用于已登录用户注销自己指定的登录会话
|
|
925
930
|
// eslint-disable-next-line prefer-const
|
|
926
|
-
let { status, visitorId } = req.body;
|
|
931
|
+
let { status, visitorId, includeFederated } = req.body;
|
|
927
932
|
const params = {};
|
|
928
933
|
if (!visitorId) {
|
|
929
934
|
visitorId = req.get('x-blocklet-visitor-id');
|
|
@@ -945,7 +950,7 @@ module.exports = {
|
|
|
945
950
|
await node.logoutUser({
|
|
946
951
|
...params,
|
|
947
952
|
userDid: req.user.did,
|
|
948
|
-
appPid: teamDid,
|
|
953
|
+
appPid: includeFederated ? undefined : teamDid,
|
|
949
954
|
teamDid,
|
|
950
955
|
});
|
|
951
956
|
}
|
|
@@ -1261,6 +1266,14 @@ module.exports = {
|
|
|
1261
1266
|
...omitBy(value, (x) => !x),
|
|
1262
1267
|
};
|
|
1263
1268
|
|
|
1269
|
+
// 只有当 address 存在时才添加到更新对象中
|
|
1270
|
+
if (address) {
|
|
1271
|
+
updateData.address = address;
|
|
1272
|
+
if (metadata.location) {
|
|
1273
|
+
metadata.location = address.city;
|
|
1274
|
+
}
|
|
1275
|
+
}
|
|
1276
|
+
|
|
1264
1277
|
// 只有当 metadata 存在时才添加到更新对象中
|
|
1265
1278
|
if (metadata) {
|
|
1266
1279
|
const _metadata = omit(metadata, ['email']);
|
|
@@ -1276,11 +1289,6 @@ module.exports = {
|
|
|
1276
1289
|
}
|
|
1277
1290
|
}
|
|
1278
1291
|
|
|
1279
|
-
// 只有当 address 存在时才添加到更新对象中
|
|
1280
|
-
if (address) {
|
|
1281
|
-
updateData.address = address;
|
|
1282
|
-
}
|
|
1283
|
-
|
|
1284
1292
|
const user = await node.updateUserInfoAndSync({
|
|
1285
1293
|
teamDid,
|
|
1286
1294
|
user: updateData,
|
|
@@ -1443,11 +1451,10 @@ module.exports = {
|
|
|
1443
1451
|
}
|
|
1444
1452
|
let returnFields = ['avatar', 'did', 'fullName', 'sourceAppPid', 'createdAt', 'metadata'];
|
|
1445
1453
|
|
|
1446
|
-
//
|
|
1447
|
-
const
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
}
|
|
1454
|
+
// 默认隐藏 phone,请求者是本人时显示完整信息
|
|
1455
|
+
const isOwner = req.user?.did === user.did;
|
|
1456
|
+
returnFields = isOwner ? [...returnFields, 'email', 'phone', 'address'] : returnFields;
|
|
1457
|
+
user.metadata = isOwner ? user.metadata : omit(user.metadata, ['phone']);
|
|
1451
1458
|
res.json(pick(user, returnFields));
|
|
1452
1459
|
});
|
|
1453
1460
|
|
|
@@ -12,6 +12,7 @@ const { WELLKNOWN_SERVICE_PATH_PREFIX } = require('@abtnode/constant');
|
|
|
12
12
|
const { LOGIN_PROVIDER } = require('@blocklet/constant');
|
|
13
13
|
const getRequestIP = require('@abtnode/util/lib/get-request-ip');
|
|
14
14
|
const { getDeviceData } = require('@abtnode/util/lib/device');
|
|
15
|
+
const getOrigin = require('@abtnode/util/lib/get-origin');
|
|
15
16
|
|
|
16
17
|
const { createTokenFn, getDidConnectVersion } = require('../../../util');
|
|
17
18
|
const { getUserWithinFederated } = require('../../../util/federated');
|
|
@@ -137,6 +138,8 @@ module.exports = function createRoutes(node, authenticator, createSessionToken)
|
|
|
137
138
|
walletOS,
|
|
138
139
|
device: deviceData,
|
|
139
140
|
},
|
|
141
|
+
locale,
|
|
142
|
+
origin: await getOrigin({ req }),
|
|
140
143
|
});
|
|
141
144
|
node.syncUserSession({
|
|
142
145
|
teamDid,
|
|
@@ -11,6 +11,7 @@ const { WELLKNOWN_SERVICE_PATH_PREFIX } = require('@abtnode/constant');
|
|
|
11
11
|
const { LOGIN_PROVIDER } = require('@blocklet/constant');
|
|
12
12
|
const getRequestIP = require('@abtnode/util/lib/get-request-ip');
|
|
13
13
|
const { getDeviceData } = require('@abtnode/util/lib/device');
|
|
14
|
+
const getOrigin = require('@abtnode/util/lib/get-origin');
|
|
14
15
|
|
|
15
16
|
const { createTokenFn, getDidConnectVersion } = require('../../../util');
|
|
16
17
|
|
|
@@ -98,6 +99,8 @@ module.exports = function createRoutes(node, authenticator, createSessionToken)
|
|
|
98
99
|
walletOS,
|
|
99
100
|
device: deviceData,
|
|
100
101
|
},
|
|
102
|
+
locale,
|
|
103
|
+
origin: await getOrigin({ req }),
|
|
101
104
|
});
|
|
102
105
|
node.syncUserSession({
|
|
103
106
|
teamDid,
|
|
@@ -3,6 +3,7 @@ const { WELLKNOWN_SERVICE_PATH_PREFIX } = require('@abtnode/constant');
|
|
|
3
3
|
const { createPassportList, createPassportSwitcher } = require('@abtnode/auth/lib/oauth');
|
|
4
4
|
const { createTokenFn } = require('../../util');
|
|
5
5
|
const { checkUser } = require('../../routes/oauth/client');
|
|
6
|
+
const ensureBlocklet = require('../../middlewares/ensure-blocklet');
|
|
6
7
|
|
|
7
8
|
module.exports = {
|
|
8
9
|
init(router, node, options, createSessionToken) {
|
|
@@ -19,13 +20,13 @@ module.exports = {
|
|
|
19
20
|
|
|
20
21
|
const prefix = `${WELLKNOWN_SERVICE_PATH_PREFIX}/api/passkey`;
|
|
21
22
|
|
|
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);
|
|
23
|
+
router.get(`${prefix}/register`, ensureBlocklet(), handleRegisterRequest);
|
|
24
|
+
router.post(`${prefix}/register`, ensureBlocklet(), ensurePasskeySession, handleRegisterResponse);
|
|
25
|
+
router.get(`${prefix}/auth`, ensureBlocklet(), ensureUser, handleAuthRequest);
|
|
26
|
+
router.post(`${prefix}/auth`, ensureBlocklet(), ensurePasskeySession, handleAuthResponse);
|
|
26
27
|
|
|
27
28
|
// 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'));
|
|
29
|
+
router.get(`${prefix}/passports`, ensureBlocklet(), checkUser, createPassportList(node, 'service'));
|
|
30
|
+
router.post(`${prefix}/switch`, ensureBlocklet(), checkUser, createPassportSwitcher(node, createToken, 'service'));
|
|
30
31
|
},
|
|
31
32
|
};
|
|
@@ -4,6 +4,7 @@ const { getBlockletLanguages } = require('@blocklet/env/lib/util');
|
|
|
4
4
|
const pick = require('lodash/pick');
|
|
5
5
|
const omit = require('lodash/omit');
|
|
6
6
|
const merge = require('lodash/merge');
|
|
7
|
+
const isEqual = require('lodash/isEqual');
|
|
7
8
|
const { verify, decode } = require('@arcblock/jwt');
|
|
8
9
|
const {
|
|
9
10
|
WELLKNOWN_SERVICE_PATH_PREFIX,
|
|
@@ -18,6 +19,7 @@ const { getDeviceData } = require('@abtnode/util/lib/device');
|
|
|
18
19
|
const isUrl = require('is-url');
|
|
19
20
|
const { LRUCache } = require('lru-cache');
|
|
20
21
|
const createTranslator = require('@abtnode/util/lib/translate');
|
|
22
|
+
const getOrigin = require('@abtnode/util/lib/get-origin');
|
|
21
23
|
|
|
22
24
|
const { createTokenFn, getDidConnectVersion } = require('../../util');
|
|
23
25
|
const checkUser = require('../../middlewares/check-user');
|
|
@@ -65,6 +67,26 @@ const getUnreadNotificationCount = async ({ teamDid, receiver }, node) => {
|
|
|
65
67
|
return result;
|
|
66
68
|
};
|
|
67
69
|
|
|
70
|
+
const getUpdateUserSessionData = ({ req }) => {
|
|
71
|
+
const result = {};
|
|
72
|
+
if (req.userSession) {
|
|
73
|
+
// 更新用户会话中的 ua 信息,仅当 ua 为空时
|
|
74
|
+
// 这种情况对应的是这个会话刚刚登录过,还未记录 ua 信息
|
|
75
|
+
// FIXME: @zhanghan loginIp 是否应该做一样的处理?
|
|
76
|
+
if (!req.userSession.ua) {
|
|
77
|
+
result.ua = req.get('user-agent');
|
|
78
|
+
}
|
|
79
|
+
const deviceData = getDeviceData({ req });
|
|
80
|
+
if (Object.keys(deviceData).length > 0 && !isEqual(req.userSession?.extra?.device, deviceData)) {
|
|
81
|
+
result.extra = {
|
|
82
|
+
...req.userSession?.extra,
|
|
83
|
+
device: deviceData,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return result;
|
|
88
|
+
};
|
|
89
|
+
|
|
68
90
|
module.exports = {
|
|
69
91
|
init(router, node, createSessionToken, options) {
|
|
70
92
|
const {
|
|
@@ -123,20 +145,19 @@ module.exports = {
|
|
|
123
145
|
.filter((x) => x.status === PASSPORT_STATUS.VALID)
|
|
124
146
|
.map((x) => pick(x, ['id', 'name', 'title', 'role', 'scope', 'role', 'issuer', 'display']));
|
|
125
147
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
// 这种情况对应的是这个会话刚刚登录过,还未记录 ua 信息
|
|
129
|
-
// FIXME: @zhanghan loginIp 是否应该做一样的处理?
|
|
130
|
-
const ua = req.get('user-agent');
|
|
148
|
+
const updateUserSessionData = getUpdateUserSessionData({ req });
|
|
149
|
+
if (Object.keys(updateUserSessionData).length > 0) {
|
|
131
150
|
const userSession = await node.upsertUserSession({
|
|
132
151
|
visitorId,
|
|
133
152
|
teamDid,
|
|
134
153
|
userDid: user.did,
|
|
135
154
|
appPid: teamDid,
|
|
136
155
|
status: req.userSession.status,
|
|
137
|
-
ua,
|
|
138
156
|
lastLoginIp: req.userSession.lastLoginIp,
|
|
139
157
|
extra: req.userSession.extra,
|
|
158
|
+
...updateUserSessionData,
|
|
159
|
+
locale: req.blockletLocale,
|
|
160
|
+
origin: await getOrigin({ req }),
|
|
140
161
|
});
|
|
141
162
|
if (user?.sourceAppPid) {
|
|
142
163
|
node.syncUserSession({
|
|
@@ -144,9 +165,10 @@ module.exports = {
|
|
|
144
165
|
userDid: userSession.userDid,
|
|
145
166
|
visitorId: userSession.visitorId,
|
|
146
167
|
targetAppPid: user.sourceAppPid,
|
|
147
|
-
ua,
|
|
148
168
|
lastLoginIp: req.userSession.lastLoginIp,
|
|
149
169
|
extra: req.userSession.extra,
|
|
170
|
+
...updateUserSessionData,
|
|
171
|
+
locale: req.blockletLocale,
|
|
150
172
|
});
|
|
151
173
|
}
|
|
152
174
|
}
|
|
@@ -362,6 +384,7 @@ module.exports = {
|
|
|
362
384
|
walletOS,
|
|
363
385
|
device: deviceData,
|
|
364
386
|
},
|
|
387
|
+
origin: await getOrigin({ req }),
|
|
365
388
|
});
|
|
366
389
|
if (user?.sourceAppPid) {
|
|
367
390
|
node.syncUserSession({
|
package/api/services/static.js
CHANGED
|
@@ -60,12 +60,6 @@ const attachStaticResources = ({ app, proxy, extraResources = [] }) => {
|
|
|
60
60
|
res.sendFile(path.join(distDir, 'service-worker.js'));
|
|
61
61
|
});
|
|
62
62
|
app.use(`${WELLKNOWN_SERVICE_PATH_PREFIX}/static`, serveStatic(distDir, { maxAge: '365d', index: false }));
|
|
63
|
-
app.use(`${WELLKNOWN_SERVICE_PATH_PREFIX}/500`, (req, res) => {
|
|
64
|
-
res.status(500).send({ message: 'Fake server error' });
|
|
65
|
-
});
|
|
66
|
-
app.use(`${WELLKNOWN_SERVICE_PATH_PREFIX}/400`, (req, res) => {
|
|
67
|
-
res.status(400).send({ message: 'Fake client error' });
|
|
68
|
-
});
|
|
69
63
|
}
|
|
70
64
|
};
|
|
71
65
|
|
package/api/util/user-util.js
CHANGED
|
@@ -10,6 +10,7 @@ const getRequestIP = require('@abtnode/util/lib/get-request-ip');
|
|
|
10
10
|
const formatContext = require('@abtnode/util/lib/format-context');
|
|
11
11
|
const { checkInvitedUserOnly } = require('@abtnode/auth/lib/oauth');
|
|
12
12
|
const { getDeviceData } = require('@abtnode/util/lib/device');
|
|
13
|
+
const getOrigin = require('@abtnode/util/lib/get-origin');
|
|
13
14
|
|
|
14
15
|
const federatedUtil = require('./federated');
|
|
15
16
|
const initJwt = require('../libs/jwt');
|
|
@@ -190,6 +191,8 @@ const loginUserSession = async (
|
|
|
190
191
|
walletOS: 'web',
|
|
191
192
|
device: deviceData,
|
|
192
193
|
},
|
|
194
|
+
locale,
|
|
195
|
+
origin: await getOrigin({ req }),
|
|
193
196
|
});
|
|
194
197
|
|
|
195
198
|
if (federatedUtil.shouldSyncFederated(sourceAppPid, blocklet)) {
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{_ as dt}from"./vendor-mui-core-
|
|
1
|
+
import{_ as dt}from"./vendor-mui-core-DiDsSLd-.js";import{a as f}from"./vendor-utils-DMClavLd.js";import{e as Q,g as R}from"./vendor-react-DoD83n6N.js";import{P as ft}from"./vendor-ux-did-connect-BKeZkgZt.js";import{b as ct}from"./vendor-mui-x-mVhD3N7n.js";var tt={exports:{}};(function(T,L){(function(l,c){T.exports=c()})(Q,function(){var l="week",c="year";return function(g,t,e){var s=t.prototype;s.week=function(i){if(i===void 0&&(i=null),i!==null)return this.add(7*(i-this.week()),"day");var o=this.$locale().yearStart||1;if(this.month()===11&&this.date()>25){var n=e(this).startOf(c).add(1,c).date(o),d=e(this).endOf(l);if(n.isBefore(d))return 1}var m=e(this).startOf(c).date(o).startOf(l).subtract(1,"millisecond"),U=this.diff(m,l,!0);return U<0?e(this).startOf("week").week():Math.ceil(U)},s.weeks=function(i){return i===void 0&&(i=null),this.week(i)}}})})(tt);var lt=tt.exports;const mt=R(lt);var et={exports:{}};(function(T,L){(function(l,c){T.exports=c()})(Q,function(){var l={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},c=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,g=/\d/,t=/\d\d/,e=/\d\d?/,s=/\d*[^-_:/,()\s\d]+/,i={},o=function(r){return(r=+r)+(r>68?1900:2e3)},n=function(r){return function(a){this[r]=+a}},d=[/[+-]\d\d:?(\d\d)?|Z/,function(r){(this.zone||(this.zone={})).offset=function(a){if(!a||a==="Z")return 0;var h=a.match(/([+-]|\d\d)/g),u=60*h[1]+(+h[2]||0);return u===0?0:h[0]==="+"?-u:u}(r)}],m=function(r){var a=i[r];return a&&(a.indexOf?a:a.s.concat(a.f))},U=function(r,a){var h,u=i.meridiem;if(u){for(var D=1;D<=24;D+=1)if(r.indexOf(u(D,0,a))>-1){h=D>12;break}}else h=r===(a?"pm":"PM");return h},rt={A:[s,function(r){this.afternoon=U(r,!1)}],a:[s,function(r){this.afternoon=U(r,!0)}],Q:[g,function(r){this.month=3*(r-1)+1}],S:[g,function(r){this.milliseconds=100*+r}],SS:[t,function(r){this.milliseconds=10*+r}],SSS:[/\d{3}/,function(r){this.milliseconds=+r}],s:[e,n("seconds")],ss:[e,n("seconds")],m:[e,n("minutes")],mm:[e,n("minutes")],H:[e,n("hours")],h:[e,n("hours")],HH:[e,n("hours")],hh:[e,n("hours")],D:[e,n("day")],DD:[t,n("day")],Do:[s,function(r){var a=i.ordinal,h=r.match(/\d+/);if(this.day=h[0],a)for(var u=1;u<=31;u+=1)a(u).replace(/\[|\]/g,"")===r&&(this.day=u)}],w:[e,n("week")],ww:[t,n("week")],M:[e,n("month")],MM:[t,n("month")],MMM:[s,function(r){var a=m("months"),h=(m("monthsShort")||a.map(function(u){return u.slice(0,3)})).indexOf(r)+1;if(h<1)throw new Error;this.month=h%12||h}],MMMM:[s,function(r){var a=m("months").indexOf(r)+1;if(a<1)throw new Error;this.month=a%12||a}],Y:[/[+-]?\d+/,n("year")],YY:[t,function(r){this.year=o(r)}],YYYY:[/\d{4}/,n("year")],Z:d,ZZ:d};function nt(r){var a,h;a=r,h=i&&i.formats;for(var u=(r=a.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(b,k,p){var M=p&&p.toUpperCase();return k||h[p]||l[p]||h[M].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(x,j,z){return j||z.slice(1)})})).match(c),D=u.length,w=0;w<D;w+=1){var P=u[w],S=rt[P],Y=S&&S[0],O=S&&S[1];u[w]=O?{regex:Y,parser:O}:P.replace(/^\[|\]$/g,"")}return function(b){for(var k={},p=0,M=0;p<D;p+=1){var x=u[p];if(typeof x=="string")M+=x.length;else{var j=x.regex,z=x.parser,H=b.slice(M),A=j.exec(H)[0];z.call(k,A),b=b.replace(A,"")}}return function(C){var I=C.afternoon;if(I!==void 0){var y=C.hours;I?y<12&&(C.hours+=12):y===12&&(C.hours=0),delete C.afternoon}}(k),k}}return function(r,a,h){h.p.customParseFormat=!0,r&&r.parseTwoDigitYear&&(o=r.parseTwoDigitYear);var u=a.prototype,D=u.parse;u.parse=function(w){var P=w.date,S=w.utc,Y=w.args;this.$u=S;var O=Y[1];if(typeof O=="string"){var b=Y[2]===!0,k=Y[3]===!0,p=b||k,M=Y[2];k&&(M=Y[2]),i=this.$locale(),!b&&M&&(i=h.Ls[M]),this.$d=function(H,A,C,I){try{if(["x","X"].indexOf(A)>-1)return new Date((A==="X"?1e3:1)*H);var y=nt(A)(H),W=y.year,B=y.month,it=y.day,at=y.hours,ot=y.minutes,ht=y.seconds,ut=y.milliseconds,X=y.zone,q=y.week,$=new Date,N=it||(W||B?1:$.getDate()),Z=W||$.getFullYear(),F=0;W&&!B||(F=B>0?B-1:$.getMonth());var E,v=at||0,V=ot||0,J=ht||0,_=ut||0;return X?new Date(Date.UTC(Z,F,N,v,V,J,_+60*X.offset*1e3)):C?new Date(Date.UTC(Z,F,N,v,V,J,_)):(E=new Date(Z,F,N,v,V,J,_),q&&(E=I(E).week(q).toDate()),E)}catch{return new Date("")}}(P,O,S,h),this.init(),M&&M!==!0&&(this.$L=this.locale(M).$L),p&&P!=this.format(O)&&(this.$d=new Date("")),i={}}else if(O instanceof Array)for(var x=O.length,j=1;j<=x;j+=1){Y[1]=O[j-1];var z=h.apply(this,Y);if(z.isValid()){this.$d=z.$d,this.$L=z.$L,this.init();break}j===x&&(this.$d=new Date(""))}else D.call(this,w)}}})})(et);var yt=et.exports;const Mt=R(yt);var st={exports:{}};(function(T,L){(function(l,c){T.exports=c()})(Q,function(){return function(l,c,g){c.prototype.isBetween=function(t,e,s,i){var o=g(t),n=g(e),d=(i=i||"()")[0]==="(",m=i[1]===")";return(d?this.isAfter(o,s):!this.isBefore(o,s))&&(m?this.isBefore(n,s):!this.isAfter(n,s))||(d?this.isBefore(o,s):!this.isAfter(o,s))&&(m?this.isAfter(n,s):!this.isBefore(n,s))}}})})(st);var pt=st.exports;const Tt=R(pt);f.extend(Mt);f.extend(ft);f.extend(Tt);const gt=ct(["Your locale has not been found.","Either the locale key is not a supported one. Locales supported by dayjs are available here: https://github.com/iamkun/dayjs/tree/dev/src/locale","Or you forget to import the locale from 'dayjs/locale/{localeUsed}'","fallback on English locale"]),Dt={YY:"year",YYYY:{sectionType:"year",contentType:"digit",maxLength:4},M:{sectionType:"month",contentType:"digit",maxLength:2},MM:"month",MMM:{sectionType:"month",contentType:"letter"},MMMM:{sectionType:"month",contentType:"letter"},D:{sectionType:"day",contentType:"digit",maxLength:2},DD:"day",Do:{sectionType:"day",contentType:"digit-with-letter"},d:{sectionType:"weekDay",contentType:"digit",maxLength:2},dd:{sectionType:"weekDay",contentType:"letter"},ddd:{sectionType:"weekDay",contentType:"letter"},dddd:{sectionType:"weekDay",contentType:"letter"},A:"meridiem",a:"meridiem",H:{sectionType:"hours",contentType:"digit",maxLength:2},HH:"hours",h:{sectionType:"hours",contentType:"digit",maxLength:2},hh:"hours",m:{sectionType:"minutes",contentType:"digit",maxLength:2},mm:"minutes",s:{sectionType:"seconds",contentType:"digit",maxLength:2},ss:"seconds"},wt={year:"YYYY",month:"MMMM",monthShort:"MMM",dayOfMonth:"D",weekday:"dddd",weekdayShort:"dd",hours24h:"HH",hours12h:"hh",meridiem:"A",minutes:"mm",seconds:"ss",fullDate:"ll",fullDateWithWeekday:"dddd, LL",keyboardDate:"L",shortDate:"MMM D",normalDate:"D MMMM",normalDateWithWeekday:"ddd, MMM D",monthAndYear:"MMMM YYYY",monthAndDate:"MMMM D",fullTime:"LT",fullTime12h:"hh:mm A",fullTime24h:"HH:mm",fullDateTime:"lll",fullDateTime12h:"ll hh:mm A",fullDateTime24h:"ll HH:mm",keyboardDateTime:"L LT",keyboardDateTime12h:"L hh:mm A",keyboardDateTime24h:"L HH:mm"},G=["Missing UTC plugin","To be able to use UTC or timezones, you have to enable the `utc` plugin","Find more information on https://mui.com/x/react-date-pickers/timezone/#day-js-and-utc"].join(`
|
|
2
2
|
`),K=["Missing timezone plugin","To be able to use timezones, you have to enable both the `utc` and the `timezone` plugin","Find more information on https://mui.com/x/react-date-pickers/timezone/#day-js-and-timezone"].join(`
|
|
3
3
|
`),Yt=(T,L)=>L?(...l)=>T(...l).locale(L):T;class bt{constructor({locale:L,formats:l,instance:c}={}){var g;this.isMUIAdapter=!0,this.isTimezoneCompatible=!0,this.lib="dayjs",this.rawDayJsInstance=void 0,this.dayjs=void 0,this.locale=void 0,this.formats=void 0,this.escapedCharacters={start:"[",end:"]"},this.formatTokenMap=Dt,this.setLocaleToValue=t=>{const e=this.getCurrentLocaleCode();return e===t.locale()?t:t.locale(e)},this.hasUTCPlugin=()=>typeof f.utc<"u",this.hasTimezonePlugin=()=>typeof f.tz<"u",this.isSame=(t,e,s)=>{const i=this.setTimezone(e,this.getTimezone(t));return t.format(s)===i.format(s)},this.cleanTimezone=t=>{switch(t){case"default":return;case"system":return f.tz.guess();default:return t}},this.createSystemDate=t=>{if(this.rawDayJsInstance)return this.rawDayJsInstance(t);if(this.hasUTCPlugin()&&this.hasTimezonePlugin()){const e=f.tz.guess();return e!=="UTC"?f.tz(t,e):f(t)}return f(t)},this.createUTCDate=t=>{if(!this.hasUTCPlugin())throw new Error(G);return f.utc(t)},this.createTZDate=(t,e)=>{if(!this.hasUTCPlugin())throw new Error(G);if(!this.hasTimezonePlugin())throw new Error(K);const s=t!==void 0&&!t.endsWith("Z");return f(t).tz(this.cleanTimezone(e),s)},this.getLocaleFormats=()=>{const t=f.Ls,e=this.locale||"en";let s=t[e];return s===void 0&&(gt(),s=t.en),s.formats},this.adjustOffset=t=>{if(!this.hasTimezonePlugin())return t;const e=this.getTimezone(t);if(e!=="UTC"){var s,i;const o=t.tz(this.cleanTimezone(e),!0);if(((s=o.$offset)!=null?s:0)===((i=t.$offset)!=null?i:0))return t;t.$offset=o.$offset}return t},this.date=t=>t===null?null:this.dayjs(t),this.dateWithTimezone=(t,e)=>{if(t===null)return null;let s;return e==="UTC"?s=this.createUTCDate(t):e==="system"||e==="default"&&!this.hasTimezonePlugin()?s=this.createSystemDate(t):s=this.createTZDate(t,e),this.locale===void 0?s:s.locale(this.locale)},this.getTimezone=t=>{if(this.hasTimezonePlugin()){var e;const s=(e=t.$x)==null?void 0:e.$timezone;if(s)return s}return this.hasUTCPlugin()&&t.isUTC()?"UTC":"system"},this.setTimezone=(t,e)=>{if(this.getTimezone(t)===e)return t;if(e==="UTC"){if(!this.hasUTCPlugin())throw new Error(G);return t.utc()}if(e==="system")return t.local();if(!this.hasTimezonePlugin()){if(e==="default")return t;throw new Error(K)}return f.tz(t,this.cleanTimezone(e))},this.toJsDate=t=>t.toDate(),this.parseISO=t=>this.dayjs(t),this.toISO=t=>t.toISOString(),this.parse=(t,e)=>t===""?null:this.dayjs(t,e,this.locale,!0),this.getCurrentLocaleCode=()=>this.locale||"en",this.is12HourCycleInCurrentLocale=()=>/A|a/.test(this.getLocaleFormats().LT||""),this.expandFormat=t=>{const e=this.getLocaleFormats(),s=i=>i.replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(o,n,d)=>n||d.slice(1));return t.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(i,o,n)=>{const d=n&&n.toUpperCase();return o||e[n]||s(e[d])})},this.getFormatHelperText=t=>this.expandFormat(t).replace(/a/gi,"(a|p)m").toLocaleLowerCase(),this.isNull=t=>t===null,this.isValid=t=>this.dayjs(t).isValid(),this.format=(t,e)=>this.formatByString(t,this.formats[e]),this.formatByString=(t,e)=>this.dayjs(t).format(e),this.formatNumber=t=>t,this.getDiff=(t,e,s)=>t.diff(e,s),this.isEqual=(t,e)=>t===null&&e===null?!0:this.dayjs(t).toDate().getTime()===this.dayjs(e).toDate().getTime(),this.isSameYear=(t,e)=>this.isSame(t,e,"YYYY"),this.isSameMonth=(t,e)=>this.isSame(t,e,"YYYY-MM"),this.isSameDay=(t,e)=>this.isSame(t,e,"YYYY-MM-DD"),this.isSameHour=(t,e)=>t.isSame(e,"hour"),this.isAfter=(t,e)=>t>e,this.isAfterYear=(t,e)=>this.hasUTCPlugin()?!this.isSameYear(t,e)&&t.utc()>e.utc():t.isAfter(e,"year"),this.isAfterDay=(t,e)=>this.hasUTCPlugin()?!this.isSameDay(t,e)&&t.utc()>e.utc():t.isAfter(e,"day"),this.isBefore=(t,e)=>t<e,this.isBeforeYear=(t,e)=>this.hasUTCPlugin()?!this.isSameYear(t,e)&&t.utc()<e.utc():t.isBefore(e,"year"),this.isBeforeDay=(t,e)=>this.hasUTCPlugin()?!this.isSameDay(t,e)&&t.utc()<e.utc():t.isBefore(e,"day"),this.isWithinRange=(t,[e,s])=>t>=e&&t<=s,this.startOfYear=t=>this.adjustOffset(t.startOf("year")),this.startOfMonth=t=>this.adjustOffset(t.startOf("month")),this.startOfWeek=t=>this.adjustOffset(t.startOf("week")),this.startOfDay=t=>this.adjustOffset(t.startOf("day")),this.endOfYear=t=>this.adjustOffset(t.endOf("year")),this.endOfMonth=t=>this.adjustOffset(t.endOf("month")),this.endOfWeek=t=>this.adjustOffset(t.endOf("week")),this.endOfDay=t=>this.adjustOffset(t.endOf("day")),this.addYears=(t,e)=>this.adjustOffset(e<0?t.subtract(Math.abs(e),"year"):t.add(e,"year")),this.addMonths=(t,e)=>this.adjustOffset(e<0?t.subtract(Math.abs(e),"month"):t.add(e,"month")),this.addWeeks=(t,e)=>this.adjustOffset(e<0?t.subtract(Math.abs(e),"week"):t.add(e,"week")),this.addDays=(t,e)=>this.adjustOffset(e<0?t.subtract(Math.abs(e),"day"):t.add(e,"day")),this.addHours=(t,e)=>this.adjustOffset(e<0?t.subtract(Math.abs(e),"hour"):t.add(e,"hour")),this.addMinutes=(t,e)=>this.adjustOffset(e<0?t.subtract(Math.abs(e),"minute"):t.add(e,"minute")),this.addSeconds=(t,e)=>this.adjustOffset(e<0?t.subtract(Math.abs(e),"second"):t.add(e,"second")),this.getYear=t=>t.year(),this.getMonth=t=>t.month(),this.getDate=t=>t.date(),this.getHours=t=>t.hour(),this.getMinutes=t=>t.minute(),this.getSeconds=t=>t.second(),this.getMilliseconds=t=>t.millisecond(),this.setYear=(t,e)=>this.adjustOffset(t.set("year",e)),this.setMonth=(t,e)=>this.adjustOffset(t.set("month",e)),this.setDate=(t,e)=>this.adjustOffset(t.set("date",e)),this.setHours=(t,e)=>this.adjustOffset(t.set("hour",e)),this.setMinutes=(t,e)=>this.adjustOffset(t.set("minute",e)),this.setSeconds=(t,e)=>this.adjustOffset(t.set("second",e)),this.setMilliseconds=(t,e)=>this.adjustOffset(t.set("millisecond",e)),this.getDaysInMonth=t=>t.daysInMonth(),this.getNextMonth=t=>this.addMonths(t,1),this.getPreviousMonth=t=>this.addMonths(t,-1),this.getMonthArray=t=>{const s=[t.startOf("year")];for(;s.length<12;){const i=s[s.length-1];s.push(this.addMonths(i,1))}return s},this.mergeDateAndTime=(t,e)=>t.hour(e.hour()).minute(e.minute()).second(e.second()),this.getWeekdays=()=>{const t=this.dayjs().startOf("week");return[0,1,2,3,4,5,6].map(e=>this.formatByString(this.addDays(t,e),"dd"))},this.getWeekArray=t=>{const e=this.setLocaleToValue(t),s=e.startOf("month").startOf("week"),i=e.endOf("month").endOf("week");let o=0,n=s;const d=[];for(;n<i;){const m=Math.floor(o/7);d[m]=d[m]||[],d[m].push(n),n=this.addDays(n,1),o+=1}return d},this.getWeekNumber=t=>t.week(),this.getYearRange=(t,e)=>{const s=t.startOf("year"),i=e.endOf("year"),o=[];let n=s;for(;n<i;)o.push(n),n=this.addYears(n,1);return o},this.getMeridiemText=t=>t==="am"?"AM":"PM",this.rawDayJsInstance=c,this.dayjs=Yt((g=this.rawDayJsInstance)!=null?g:f,L),this.locale=L,this.formats=dt({},wt,l),f.extend(mt)}}export{bt as A};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a8 as e,j as t}from"./vendor-mui-core-
|
|
1
|
+
import{a8 as e,j as t}from"./vendor-mui-core-DiDsSLd-.js";import{r as a}from"./vendor-ux-did-connect-BKeZkgZt.js";var r={},o=e;Object.defineProperty(r,"__esModule",{value:!0});var u=r.default=void 0,i=o(a()),p=t;u=r.default=(0,i.default)((0,p.jsx)("path",{d:"m7 10 5 5 5-5z"}),"ArrowDropDown");export{u as d};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a8 as r,j as t}from"./vendor-mui-core-
|
|
1
|
+
import{a8 as r,j as t}from"./vendor-mui-core-DiDsSLd-.js";import{r as a}from"./vendor-ux-did-connect-BKeZkgZt.js";var e={},o=r;Object.defineProperty(e,"__esModule",{value:!0});var u=e.default=void 0,i=o(a()),l=t;u=e.default=(0,i.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{u as d};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a8 as r,j as t}from"./vendor-mui-core-
|
|
1
|
+
import{a8 as r,j as t}from"./vendor-mui-core-DiDsSLd-.js";import{r as a}from"./vendor-ux-did-connect-BKeZkgZt.js";var e={},o=r;Object.defineProperty(e,"__esModule",{value:!0});var u=e.default=void 0,f=o(a()),i=t;u=e.default=(0,f.default)((0,i.jsx)("path",{d:"M15.41 7.41 14 6l-6 6 6 6 1.41-1.41L10.83 12z"}),"ChevronLeft");export{u as d};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a8 as r,j as t}from"./vendor-mui-core-
|
|
1
|
+
import{a8 as r,j as t}from"./vendor-mui-core-DiDsSLd-.js";import{r as a}from"./vendor-ux-did-connect-BKeZkgZt.js";var e={},o=r;Object.defineProperty(e,"__esModule",{value:!0});var u=e.default=void 0,i=o(a()),v=t;u=e.default=(0,i.default)((0,v.jsx)("path",{d:"M10 6 8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"}),"ChevronRight");export{u as d};
|