@abtnode/blocklet-services 1.16.19-beta-340de95d → 1.16.19-beta-7b2db880

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 (32) hide show
  1. package/api/libs/connect/session.js +17 -19
  2. package/api/libs/connect/v2.js +2 -5
  3. package/api/libs/image.js +64 -64
  4. package/api/libs/open-graph/emoji.js +2 -2
  5. package/api/libs/open-graph/index.js +1 -0
  6. package/api/routes/federated.js +108 -19
  7. package/api/routes/oauth.js +24 -27
  8. package/api/routes/user-session.js +5 -1
  9. package/api/routes/user.js +1 -0
  10. package/api/services/auth/connect/invite.js +8 -5
  11. package/api/util/federated.js +45 -0
  12. package/api/validators/login.js +1 -1
  13. package/build/asset-manifest.json +17 -17
  14. package/build/index.html +1 -1
  15. package/build/service-worker.js +1 -1
  16. package/build/static/js/4076.8055ce74.chunk.js +2 -0
  17. package/build/static/js/4461.f9a883d3.chunk.js +2 -0
  18. package/build/static/js/5468.21a861b9.chunk.js +2 -0
  19. package/build/static/js/5547.42b98889.chunk.js +3 -0
  20. package/build/static/js/{8181.6c2a7dcb.chunk.js → 8181.bc510ea3.chunk.js} +2 -2
  21. package/build/static/js/8622.6aa0a4d4.chunk.js +2 -0
  22. package/build/static/js/{8944.939de854.chunk.js → 8944.5b8c231c.chunk.js} +2 -2
  23. package/build/static/js/main.09227d84.js +3 -0
  24. package/package.json +24 -27
  25. package/build/static/js/4076.f5369a1d.chunk.js +0 -2
  26. package/build/static/js/4461.3cd698bf.chunk.js +0 -2
  27. package/build/static/js/5468.b54ce65b.chunk.js +0 -2
  28. package/build/static/js/5547.570ded36.chunk.js +0 -3
  29. package/build/static/js/8622.ebd44812.chunk.js +0 -2
  30. package/build/static/js/main.581a3a26.js +0 -3
  31. /package/build/static/js/{5547.570ded36.chunk.js.LICENSE.txt → 5547.42b98889.chunk.js.LICENSE.txt} +0 -0
  32. /package/build/static/js/{main.581a3a26.js.LICENSE.txt → main.09227d84.js.LICENSE.txt} +0 -0
@@ -7,6 +7,7 @@ const defaults = require('lodash/defaults');
7
7
  const cloneDeep = require('lodash/cloneDeep');
8
8
  const pLimit = require('p-limit');
9
9
  const logger = require('@abtnode/logger')('blocklet-services:user-session');
10
+ const { getSourceProvider } = require('@blocklet/meta/lib/did-utils');
10
11
 
11
12
  const ensureBlocklet = require('../middlewares/ensure-blocklet');
12
13
  const { getUserAvatarUrl } = require('../util/federated');
@@ -103,6 +104,9 @@ module.exports = {
103
104
  },
104
105
  sites: [],
105
106
  });
107
+ const sourceProvider = getSourceProvider(user);
108
+
109
+ const provider = sourceProvider || LOGIN_PROVIDER.WALLET;
106
110
 
107
111
  const memberSite = federated.sites.find((item) => item.appPid === appPid);
108
112
  const postUser = pick(user, ['did', 'pk', 'fullName', 'locale']);
@@ -121,7 +125,7 @@ module.exports = {
121
125
  user: postUser,
122
126
  passport: passportId ? { id: passportId } : undefined,
123
127
  walletOS: 'web',
124
- provider: LOGIN_PROVIDER.WALLET,
128
+ provider,
125
129
  },
126
130
  site: memberSite,
127
131
  });
@@ -175,6 +175,7 @@ async function loginOAuth(
175
175
  throw new ApiError(400, error.message);
176
176
  }
177
177
 
178
+ // FIXME: @zhanghan 如果有 sourceAppPid,则这里拿到的 userWallet 是不对的?
178
179
  const userWallet = fromAppDid(id, blockletWallet.secretKey);
179
180
  const userDid = userWallet.address;
180
181
  const userPk = userWallet.publicKey;
@@ -13,6 +13,7 @@ const { LOGIN_PROVIDER } = require('@blocklet/constant');
13
13
  const logger = require('@abtnode/logger')(require('../../../../package.json').name);
14
14
 
15
15
  const { createTokenFn, getDidConnectVersion } = require('../../../util');
16
+ const { getUserWithinFederated } = require('../../../util/federated');
16
17
 
17
18
  module.exports = function createRoutes(node, authenticator, createSessionToken) {
18
19
  return {
@@ -65,7 +66,9 @@ module.exports = function createRoutes(node, authenticator, createSessionToken)
65
66
  const statusEndpointBaseUrl = joinUrl(baseUrl, WELLKNOWN_SERVICE_PATH_PREFIX);
66
67
  const endpoint = baseUrl;
67
68
 
68
- const { passport, response, role, profile } = await handleInvitationResponse({
69
+ await getUserWithinFederated({ sourceAppPid, teamDid, userDid, userPk }, { node, blocklet });
70
+
71
+ const { passport, response, role, profile, user } = await handleInvitationResponse({
69
72
  req,
70
73
  node,
71
74
  nodeInfo,
@@ -85,7 +88,7 @@ module.exports = function createRoutes(node, authenticator, createSessionToken)
85
88
  const createToken = createTokenFn(createSessionToken);
86
89
  const sessionConfig = blocklet.settings?.session || {};
87
90
  const { sessionToken, refreshToken } = createToken(
88
- userDid,
91
+ user.did,
89
92
  {
90
93
  secret,
91
94
  passport,
@@ -102,7 +105,7 @@ module.exports = function createRoutes(node, authenticator, createSessionToken)
102
105
  const userSessionDoc = await node.upsertUserSession({
103
106
  teamDid,
104
107
  visitorId,
105
- userDid,
108
+ userDid: user.did,
106
109
  appPid: teamDid,
107
110
  passportId: response.data.id,
108
111
  status: 'online',
@@ -111,7 +114,7 @@ module.exports = function createRoutes(node, authenticator, createSessionToken)
111
114
  });
112
115
  node.syncUserSession({
113
116
  teamDid,
114
- userDid,
117
+ userDid: user.did,
115
118
  visitorId: userSessionDoc.visitorId,
116
119
  passportId: passport?.id,
117
120
  targetAppPid: sourceAppPid,
@@ -127,7 +130,7 @@ module.exports = function createRoutes(node, authenticator, createSessionToken)
127
130
  true
128
131
  );
129
132
  await updateSession({ passportId: response.data.id });
130
- logger.info('invite.success', { userDid });
133
+ logger.info('invite.success', { userDid: user.did });
131
134
 
132
135
  return response;
133
136
  },
@@ -115,6 +115,50 @@ function shouldSyncFederated(sourceAppPid, blocklet) {
115
115
  return false;
116
116
  }
117
117
 
118
+ async function getUserWithinFederated({ userDid, userPk, teamDid, sourceAppPid }, { node, blocklet }) {
119
+ let currentUser = await node.getUser({
120
+ teamDid,
121
+ user: {
122
+ did: userDid,
123
+ },
124
+ options: {
125
+ enableConnectedAccount: true,
126
+ },
127
+ });
128
+ if (!currentUser && shouldSyncFederated(sourceAppPid, blocklet)) {
129
+ const masterSite = getFederatedMaster(blocklet);
130
+ const syncResults = await node.syncFederated({
131
+ did: teamDid,
132
+ data: {
133
+ users: [
134
+ {
135
+ did: userDid,
136
+ pk: userPk,
137
+ action: 'pullAccount',
138
+ },
139
+ ],
140
+ },
141
+ syncSites: [masterSite],
142
+ });
143
+ const resultItem = syncResults.find((x) => x.site.appPid === masterSite.appPid);
144
+ if (resultItem) {
145
+ const { result } = resultItem;
146
+ const [pullUser] = result?.users || [];
147
+ if (pullUser) {
148
+ pullUser.sourceAppPid = masterSite.appPid;
149
+ pullUser.connectedAccount = pullUser.connectedAccounts;
150
+ delete pullUser.connectedAccounts;
151
+ currentUser = await node.loginUser({
152
+ teamDid,
153
+ user: pullUser,
154
+ });
155
+ }
156
+ }
157
+ }
158
+
159
+ return currentUser;
160
+ }
161
+
118
162
  module.exports = {
119
163
  isMaster,
120
164
  shouldSyncFederated,
@@ -124,4 +168,5 @@ module.exports = {
124
168
  migrateAuth0,
125
169
  getOAuthUserInfo,
126
170
  loginByMember,
171
+ getUserWithinFederated,
127
172
  };
@@ -25,7 +25,7 @@ const loginUserWalletSchema = Joi.object({
25
25
  nonce: Joi.string().required(),
26
26
  visitorId: Joi.string().optional(),
27
27
  passportId: Joi.string().optional(),
28
- sourceAppPid: Joi.DID().trim().optional(),
28
+ sourceAppPid: Joi.DID().trim().empty(null),
29
29
  locale: Joi.string().optional(),
30
30
  }).empty(null);
31
31
 
@@ -1,19 +1,19 @@
1
1
  {
2
2
  "files": {
3
3
  "main.css": "/.well-known/service/static/static/css/main.7ea79dc8.css",
4
- "main.js": "/.well-known/service/static/static/js/main.581a3a26.js",
4
+ "main.js": "/.well-known/service/static/static/js/main.09227d84.js",
5
5
  "static/js/9314.f0add972.chunk.js": "/.well-known/service/static/static/js/9314.f0add972.chunk.js",
6
6
  "static/js/6218.4f3036a7.chunk.js": "/.well-known/service/static/static/js/6218.4f3036a7.chunk.js",
7
- "static/js/4076.f5369a1d.chunk.js": "/.well-known/service/static/static/js/4076.f5369a1d.chunk.js",
7
+ "static/js/4076.8055ce74.chunk.js": "/.well-known/service/static/static/js/4076.8055ce74.chunk.js",
8
8
  "static/js/6658.98f9956d.chunk.js": "/.well-known/service/static/static/js/6658.98f9956d.chunk.js",
9
9
  "static/js/3025.7c99c058.chunk.js": "/.well-known/service/static/static/js/3025.7c99c058.chunk.js",
10
10
  "static/js/7858.52930f63.chunk.js": "/.well-known/service/static/static/js/7858.52930f63.chunk.js",
11
11
  "static/js/4587.9a042d46.chunk.js": "/.well-known/service/static/static/js/4587.9a042d46.chunk.js",
12
12
  "static/js/779.73350f02.chunk.js": "/.well-known/service/static/static/js/779.73350f02.chunk.js",
13
- "static/js/8622.ebd44812.chunk.js": "/.well-known/service/static/static/js/8622.ebd44812.chunk.js",
13
+ "static/js/8622.6aa0a4d4.chunk.js": "/.well-known/service/static/static/js/8622.6aa0a4d4.chunk.js",
14
14
  "static/js/1148.5ccba08e.chunk.js": "/.well-known/service/static/static/js/1148.5ccba08e.chunk.js",
15
- "static/js/8944.939de854.chunk.js": "/.well-known/service/static/static/js/8944.939de854.chunk.js",
16
- "static/js/5468.b54ce65b.chunk.js": "/.well-known/service/static/static/js/5468.b54ce65b.chunk.js",
15
+ "static/js/8944.5b8c231c.chunk.js": "/.well-known/service/static/static/js/8944.5b8c231c.chunk.js",
16
+ "static/js/5468.21a861b9.chunk.js": "/.well-known/service/static/static/js/5468.21a861b9.chunk.js",
17
17
  "static/js/9982.4f1ebb7f.chunk.js": "/.well-known/service/static/static/js/9982.4f1ebb7f.chunk.js",
18
18
  "static/js/1359.add26d23.chunk.js": "/.well-known/service/static/static/js/1359.add26d23.chunk.js",
19
19
  "static/js/6637.b2e35031.chunk.js": "/.well-known/service/static/static/js/6637.b2e35031.chunk.js",
@@ -21,7 +21,7 @@
21
21
  "static/js/4882.0435e418.chunk.js": "/.well-known/service/static/static/js/4882.0435e418.chunk.js",
22
22
  "static/js/5434.523d071d.chunk.js": "/.well-known/service/static/static/js/5434.523d071d.chunk.js",
23
23
  "static/css/5547.e016de4c.chunk.css": "/.well-known/service/static/static/css/5547.e016de4c.chunk.css",
24
- "static/js/5547.570ded36.chunk.js": "/.well-known/service/static/static/js/5547.570ded36.chunk.js",
24
+ "static/js/5547.42b98889.chunk.js": "/.well-known/service/static/static/js/5547.42b98889.chunk.js",
25
25
  "static/js/3033.9fe46d7f.chunk.js": "/.well-known/service/static/static/js/3033.9fe46d7f.chunk.js",
26
26
  "static/js/3842.e1bb702b.chunk.js": "/.well-known/service/static/static/js/3842.e1bb702b.chunk.js",
27
27
  "static/js/3131.99541aca.chunk.js": "/.well-known/service/static/static/js/3131.99541aca.chunk.js",
@@ -43,7 +43,7 @@
43
43
  "static/js/3076.28658ffc.chunk.js": "/.well-known/service/static/static/js/3076.28658ffc.chunk.js",
44
44
  "static/js/5569.e4bfe697.chunk.js": "/.well-known/service/static/static/js/5569.e4bfe697.chunk.js",
45
45
  "static/js/2801.33d2f238.chunk.js": "/.well-known/service/static/static/js/2801.33d2f238.chunk.js",
46
- "static/js/4461.3cd698bf.chunk.js": "/.well-known/service/static/static/js/4461.3cd698bf.chunk.js",
46
+ "static/js/4461.f9a883d3.chunk.js": "/.well-known/service/static/static/js/4461.f9a883d3.chunk.js",
47
47
  "static/js/5509.a196d497.chunk.js": "/.well-known/service/static/static/js/5509.a196d497.chunk.js",
48
48
  "static/js/5683.051a03c1.chunk.js": "/.well-known/service/static/static/js/5683.051a03c1.chunk.js",
49
49
  "static/js/7006.bb90b167.chunk.js": "/.well-known/service/static/static/js/7006.bb90b167.chunk.js",
@@ -92,7 +92,7 @@
92
92
  "static/js/9107.7f32925d.chunk.js": "/.well-known/service/static/static/js/9107.7f32925d.chunk.js",
93
93
  "static/css/3154.e954fcda.chunk.css": "/.well-known/service/static/static/css/3154.e954fcda.chunk.css",
94
94
  "static/js/8016.3ef64a2c.chunk.js": "/.well-known/service/static/static/js/8016.3ef64a2c.chunk.js",
95
- "static/js/8181.6c2a7dcb.chunk.js": "/.well-known/service/static/static/js/8181.6c2a7dcb.chunk.js",
95
+ "static/js/8181.bc510ea3.chunk.js": "/.well-known/service/static/static/js/8181.bc510ea3.chunk.js",
96
96
  "static/js/9657.b03b88e5.chunk.js": "/.well-known/service/static/static/js/9657.b03b88e5.chunk.js",
97
97
  "static/js/468.bbc69bbf.chunk.js": "/.well-known/service/static/static/js/468.bbc69bbf.chunk.js",
98
98
  "static/media/ubuntu-mono-all-400-normal.woff": "/.well-known/service/static/static/media/ubuntu-mono-all-400-normal.c879328bc62e9c68268f.woff",
@@ -119,19 +119,19 @@
119
119
  "index.html": "/.well-known/service/static/index.html",
120
120
  "static/media/space-connected.svg": "/.well-known/service/static/static/media/space-connected.9a4e18fd2bc7d065191b0d241a131c28.svg",
121
121
  "main.7ea79dc8.css.map": "/.well-known/service/static/static/css/main.7ea79dc8.css.map",
122
- "main.581a3a26.js.map": "/.well-known/service/static/static/js/main.581a3a26.js.map",
122
+ "main.09227d84.js.map": "/.well-known/service/static/static/js/main.09227d84.js.map",
123
123
  "9314.f0add972.chunk.js.map": "/.well-known/service/static/static/js/9314.f0add972.chunk.js.map",
124
124
  "6218.4f3036a7.chunk.js.map": "/.well-known/service/static/static/js/6218.4f3036a7.chunk.js.map",
125
- "4076.f5369a1d.chunk.js.map": "/.well-known/service/static/static/js/4076.f5369a1d.chunk.js.map",
125
+ "4076.8055ce74.chunk.js.map": "/.well-known/service/static/static/js/4076.8055ce74.chunk.js.map",
126
126
  "6658.98f9956d.chunk.js.map": "/.well-known/service/static/static/js/6658.98f9956d.chunk.js.map",
127
127
  "3025.7c99c058.chunk.js.map": "/.well-known/service/static/static/js/3025.7c99c058.chunk.js.map",
128
128
  "7858.52930f63.chunk.js.map": "/.well-known/service/static/static/js/7858.52930f63.chunk.js.map",
129
129
  "4587.9a042d46.chunk.js.map": "/.well-known/service/static/static/js/4587.9a042d46.chunk.js.map",
130
130
  "779.73350f02.chunk.js.map": "/.well-known/service/static/static/js/779.73350f02.chunk.js.map",
131
- "8622.ebd44812.chunk.js.map": "/.well-known/service/static/static/js/8622.ebd44812.chunk.js.map",
131
+ "8622.6aa0a4d4.chunk.js.map": "/.well-known/service/static/static/js/8622.6aa0a4d4.chunk.js.map",
132
132
  "1148.5ccba08e.chunk.js.map": "/.well-known/service/static/static/js/1148.5ccba08e.chunk.js.map",
133
- "8944.939de854.chunk.js.map": "/.well-known/service/static/static/js/8944.939de854.chunk.js.map",
134
- "5468.b54ce65b.chunk.js.map": "/.well-known/service/static/static/js/5468.b54ce65b.chunk.js.map",
133
+ "8944.5b8c231c.chunk.js.map": "/.well-known/service/static/static/js/8944.5b8c231c.chunk.js.map",
134
+ "5468.21a861b9.chunk.js.map": "/.well-known/service/static/static/js/5468.21a861b9.chunk.js.map",
135
135
  "9982.4f1ebb7f.chunk.js.map": "/.well-known/service/static/static/js/9982.4f1ebb7f.chunk.js.map",
136
136
  "1359.add26d23.chunk.js.map": "/.well-known/service/static/static/js/1359.add26d23.chunk.js.map",
137
137
  "6637.b2e35031.chunk.js.map": "/.well-known/service/static/static/js/6637.b2e35031.chunk.js.map",
@@ -139,7 +139,7 @@
139
139
  "4882.0435e418.chunk.js.map": "/.well-known/service/static/static/js/4882.0435e418.chunk.js.map",
140
140
  "5434.523d071d.chunk.js.map": "/.well-known/service/static/static/js/5434.523d071d.chunk.js.map",
141
141
  "5547.e016de4c.chunk.css.map": "/.well-known/service/static/static/css/5547.e016de4c.chunk.css.map",
142
- "5547.570ded36.chunk.js.map": "/.well-known/service/static/static/js/5547.570ded36.chunk.js.map",
142
+ "5547.42b98889.chunk.js.map": "/.well-known/service/static/static/js/5547.42b98889.chunk.js.map",
143
143
  "3033.9fe46d7f.chunk.js.map": "/.well-known/service/static/static/js/3033.9fe46d7f.chunk.js.map",
144
144
  "3842.e1bb702b.chunk.js.map": "/.well-known/service/static/static/js/3842.e1bb702b.chunk.js.map",
145
145
  "3131.99541aca.chunk.js.map": "/.well-known/service/static/static/js/3131.99541aca.chunk.js.map",
@@ -161,7 +161,7 @@
161
161
  "3076.28658ffc.chunk.js.map": "/.well-known/service/static/static/js/3076.28658ffc.chunk.js.map",
162
162
  "5569.e4bfe697.chunk.js.map": "/.well-known/service/static/static/js/5569.e4bfe697.chunk.js.map",
163
163
  "2801.33d2f238.chunk.js.map": "/.well-known/service/static/static/js/2801.33d2f238.chunk.js.map",
164
- "4461.3cd698bf.chunk.js.map": "/.well-known/service/static/static/js/4461.3cd698bf.chunk.js.map",
164
+ "4461.f9a883d3.chunk.js.map": "/.well-known/service/static/static/js/4461.f9a883d3.chunk.js.map",
165
165
  "5509.a196d497.chunk.js.map": "/.well-known/service/static/static/js/5509.a196d497.chunk.js.map",
166
166
  "5683.051a03c1.chunk.js.map": "/.well-known/service/static/static/js/5683.051a03c1.chunk.js.map",
167
167
  "7006.bb90b167.chunk.js.map": "/.well-known/service/static/static/js/7006.bb90b167.chunk.js.map",
@@ -210,12 +210,12 @@
210
210
  "9107.7f32925d.chunk.js.map": "/.well-known/service/static/static/js/9107.7f32925d.chunk.js.map",
211
211
  "3154.e954fcda.chunk.css.map": "/.well-known/service/static/static/css/3154.e954fcda.chunk.css.map",
212
212
  "8016.3ef64a2c.chunk.js.map": "/.well-known/service/static/static/js/8016.3ef64a2c.chunk.js.map",
213
- "8181.6c2a7dcb.chunk.js.map": "/.well-known/service/static/static/js/8181.6c2a7dcb.chunk.js.map",
213
+ "8181.bc510ea3.chunk.js.map": "/.well-known/service/static/static/js/8181.bc510ea3.chunk.js.map",
214
214
  "9657.b03b88e5.chunk.js.map": "/.well-known/service/static/static/js/9657.b03b88e5.chunk.js.map",
215
215
  "468.bbc69bbf.chunk.js.map": "/.well-known/service/static/static/js/468.bbc69bbf.chunk.js.map"
216
216
  },
217
217
  "entrypoints": [
218
218
  "static/css/main.7ea79dc8.css",
219
- "static/js/main.581a3a26.js"
219
+ "static/js/main.09227d84.js"
220
220
  ]
221
221
  }
package/build/index.html CHANGED
@@ -1 +1 @@
1
- <!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="/favicon.ico?imageFilter=resize&w=32"/><meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=0"/><meta name="theme-color" content="#000000"/><title>Blocklet Service</title><link rel="manifest" href="/.well-known/service/manifest.json"/><script src="/.well-known/service/api/env"></script><script src="/__blocklet__.js"></script><script defer="defer" src="/.well-known/service/static/static/js/main.581a3a26.js"></script><link href="/.well-known/service/static/static/css/main.7ea79dc8.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
1
+ <!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="/favicon.ico?imageFilter=resize&w=32"/><meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=0"/><meta name="theme-color" content="#000000"/><title>Blocklet Service</title><link rel="manifest" href="/.well-known/service/manifest.json"/><script src="/.well-known/service/api/env"></script><script src="/__blocklet__.js"></script><script defer="defer" src="/.well-known/service/static/static/js/main.09227d84.js"></script><link href="/.well-known/service/static/static/css/main.7ea79dc8.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>