@abtnode/blocklet-services 1.16.6-beta-593a7a98 → 1.16.6-beta-e2082fec
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/libs/connect/session.js +11 -4
- package/api/libs/jwt.js +3 -8
- package/api/routes/oauth.js +6 -5
- package/api/services/auth/connect/invite.js +2 -1
- package/api/services/auth/connect/receive-transfer-app-owner.js +2 -1
- package/api/services/auth/connect/setup.js +2 -1
- package/api/services/auth/index.js +2 -1
- package/api/services/auth/session.js +2 -1
- package/api/util/attach-shared-utils.js +1 -1
- package/package.json +16 -16
|
@@ -204,7 +204,14 @@ module.exports = {
|
|
|
204
204
|
action,
|
|
205
205
|
}) => {
|
|
206
206
|
const blocklet = await request.getBlocklet();
|
|
207
|
-
const {
|
|
207
|
+
const {
|
|
208
|
+
wallet,
|
|
209
|
+
secret,
|
|
210
|
+
name,
|
|
211
|
+
passportColor,
|
|
212
|
+
did: teamDid,
|
|
213
|
+
wallet: blockletWallet,
|
|
214
|
+
} = await request.getBlockletInfo();
|
|
208
215
|
|
|
209
216
|
// Check user approved
|
|
210
217
|
const user = await node.getUser({
|
|
@@ -385,7 +392,7 @@ module.exports = {
|
|
|
385
392
|
}
|
|
386
393
|
|
|
387
394
|
// Generate new session token that client can save to localStorage
|
|
388
|
-
const sessionToken = await createSessionToken(realDid, { passport, role });
|
|
395
|
+
const sessionToken = await createSessionToken(realDid, { secret, passport, role });
|
|
389
396
|
logger.info(`${action}.success`, { userDid: realDid, role });
|
|
390
397
|
|
|
391
398
|
if (
|
|
@@ -561,7 +568,7 @@ module.exports = {
|
|
|
561
568
|
componentId,
|
|
562
569
|
}) => {
|
|
563
570
|
const blocklet = await request.getBlocklet();
|
|
564
|
-
const { name, did: teamDid, wallet: blockletWallet } = await request.getBlockletInfo();
|
|
571
|
+
const { name, did: teamDid, wallet: blockletWallet, secret } = await request.getBlockletInfo();
|
|
565
572
|
|
|
566
573
|
// Validate user
|
|
567
574
|
const user = await node.getUser({
|
|
@@ -639,7 +646,7 @@ module.exports = {
|
|
|
639
646
|
);
|
|
640
647
|
|
|
641
648
|
// Generate new session token that client can save to localStorage
|
|
642
|
-
const sessionToken = await createSessionToken(userDid, { passport, role });
|
|
649
|
+
const sessionToken = await createSessionToken(userDid, { secret, passport, role });
|
|
643
650
|
return sessionToken;
|
|
644
651
|
},
|
|
645
652
|
},
|
package/api/libs/jwt.js
CHANGED
|
@@ -14,14 +14,9 @@ const getUser = async (node, teamDid, userDid) => {
|
|
|
14
14
|
|
|
15
15
|
// eslint-disable-next-line no-unused-vars
|
|
16
16
|
const initJwt = (node, options) => {
|
|
17
|
-
const
|
|
18
|
-
const ttl = options.sessionTtl || '1d';
|
|
17
|
+
const ttl = options.sessionTtl || '7d';
|
|
19
18
|
|
|
20
|
-
|
|
21
|
-
throw new Error('Auth service require a non-empty session secret to start');
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
const createSessionToken = async (did, { role, passport }) =>
|
|
19
|
+
const createSessionToken = async (did, { role, secret, passport }) =>
|
|
25
20
|
createAuthToken({
|
|
26
21
|
did,
|
|
27
22
|
passport,
|
|
@@ -30,7 +25,7 @@ const initJwt = (node, options) => {
|
|
|
30
25
|
expiresIn: ttl,
|
|
31
26
|
});
|
|
32
27
|
|
|
33
|
-
const verifySessionToken = (token, teamDid) =>
|
|
28
|
+
const verifySessionToken = (token, secret, teamDid) =>
|
|
34
29
|
// eslint-disable-next-line implicit-arrow-linebreak
|
|
35
30
|
new Promise((resolve, reject) => {
|
|
36
31
|
jwt.verify(token, secret, async (err, decoded) => {
|
package/api/routes/oauth.js
CHANGED
|
@@ -65,7 +65,7 @@ async function login(req, node, options) {
|
|
|
65
65
|
}
|
|
66
66
|
const authClient = getAuthClient(blocklet, provider);
|
|
67
67
|
|
|
68
|
-
const { did: teamDid, wallet: blockletWallet } = await req.getBlockletInfo();
|
|
68
|
+
const { did: teamDid, wallet: blockletWallet, secret } = await req.getBlockletInfo();
|
|
69
69
|
const config = await req.getServiceConfig(NODE_SERVICES.AUTH, { componentId });
|
|
70
70
|
const nodeInfo = await req.getNodeInfo();
|
|
71
71
|
const { dataDir } = await getApplicationInfo({ node, nodeInfo, teamDid });
|
|
@@ -155,6 +155,7 @@ async function login(req, node, options) {
|
|
|
155
155
|
const { createSessionToken } = initJwt(node, options);
|
|
156
156
|
|
|
157
157
|
const sessionToken = await createSessionToken(currentUser.did, {
|
|
158
|
+
secret,
|
|
158
159
|
passport,
|
|
159
160
|
role: passport.role,
|
|
160
161
|
});
|
|
@@ -166,7 +167,7 @@ async function invite(req, node, options) {
|
|
|
166
167
|
const blocklet = await req.getBlocklet();
|
|
167
168
|
const authClient = getAuthClient(blocklet, provider);
|
|
168
169
|
|
|
169
|
-
const { did: teamDid, wallet: blockletWallet } = await req.getBlockletInfo();
|
|
170
|
+
const { did: teamDid, wallet: blockletWallet, secret } = await req.getBlockletInfo();
|
|
170
171
|
const nodeInfo = await req.getNodeInfo();
|
|
171
172
|
const oauthInfo = await authClient.getProfile(token);
|
|
172
173
|
const userWallet = fromAppDid(oauthInfo.sub, blockletWallet.secretKey, types.RoleType.ROLE_ACCOUNT);
|
|
@@ -265,7 +266,7 @@ async function invite(req, node, options) {
|
|
|
265
266
|
|
|
266
267
|
const { createSessionToken } = initJwt(node, options);
|
|
267
268
|
|
|
268
|
-
const sessionToken = await createSessionToken(userDid, { passport, role });
|
|
269
|
+
const sessionToken = await createSessionToken(userDid, { secret, passport, role });
|
|
269
270
|
return sessionToken;
|
|
270
271
|
}
|
|
271
272
|
|
|
@@ -434,7 +435,7 @@ module.exports = {
|
|
|
434
435
|
server.post(`${prefix}/switch`, async (req, res) => {
|
|
435
436
|
const userDid = req.user.did;
|
|
436
437
|
const { passportId } = req.body;
|
|
437
|
-
const { did: teamDid } = await req.getBlockletInfo();
|
|
438
|
+
const { did: teamDid, secret } = await req.getBlockletInfo();
|
|
438
439
|
// NOTICE: 这里获取的 did 是当前登录用户的永久 did,无需查询 connectedAccount
|
|
439
440
|
const user = await node.getUser({ teamDid, user: { did: userDid } });
|
|
440
441
|
const { passports = [] } = user || {};
|
|
@@ -449,7 +450,7 @@ module.exports = {
|
|
|
449
450
|
node
|
|
450
451
|
);
|
|
451
452
|
const { createSessionToken } = initJwt(node, options);
|
|
452
|
-
const sessionToken = await createSessionToken(userDid, { passport, role: passport.role });
|
|
453
|
+
const sessionToken = await createSessionToken(userDid, { secret, passport, role: passport.role });
|
|
453
454
|
res.status(200).send(sessionToken);
|
|
454
455
|
});
|
|
455
456
|
|
|
@@ -53,6 +53,7 @@ module.exports = function createRoutes(node, authenticator, createSessionToken)
|
|
|
53
53
|
onAuth: async ({ claims, userDid, userPk, updateSession, extraParams, req, baseUrl }) => {
|
|
54
54
|
const { locale, inviteId } = extraParams;
|
|
55
55
|
const nodeInfo = await req.getNodeInfo();
|
|
56
|
+
const { secret } = await req.getBlockletInfo();
|
|
56
57
|
const teamDid = req.headers['x-blocklet-did'];
|
|
57
58
|
const statusEndpointBaseUrl = joinUrl(baseUrl, WELLKNOWN_SERVICE_PATH_PREFIX);
|
|
58
59
|
const endpoint = baseUrl;
|
|
@@ -72,7 +73,7 @@ module.exports = function createRoutes(node, authenticator, createSessionToken)
|
|
|
72
73
|
});
|
|
73
74
|
|
|
74
75
|
// Generate new session token that client can save to localStorage
|
|
75
|
-
const sessionToken = await createSessionToken(userDid, { passport, role });
|
|
76
|
+
const sessionToken = await createSessionToken(userDid, { secret, passport, role });
|
|
76
77
|
await updateSession({ sessionToken }, true);
|
|
77
78
|
await updateSession({ passportId: response.data.id });
|
|
78
79
|
logger.info('invite.success', { userDid });
|
|
@@ -202,6 +202,7 @@ module.exports = function createRoutes(node, _, createSessionToken) {
|
|
|
202
202
|
wallet: issuerWallet,
|
|
203
203
|
passportColor,
|
|
204
204
|
dataDir,
|
|
205
|
+
secret,
|
|
205
206
|
} = await getApplicationInfo({ node, teamDid: appPid });
|
|
206
207
|
|
|
207
208
|
const statusEndpointBaseUrl = baseUrl;
|
|
@@ -367,7 +368,7 @@ module.exports = function createRoutes(node, _, createSessionToken) {
|
|
|
367
368
|
logger.info('transfer ownership success', { userDid });
|
|
368
369
|
|
|
369
370
|
// Generate new session token that client can save to localStorage
|
|
370
|
-
const sessionToken = await createSessionToken(userDid, { passport: vc, role });
|
|
371
|
+
const sessionToken = await createSessionToken(userDid, { secret, passport: vc, role });
|
|
371
372
|
await updateSession({ sessionToken }, true);
|
|
372
373
|
await updateSession({ passportId: vc?.id });
|
|
373
374
|
logger.info('invite.success', { userDid });
|
|
@@ -48,6 +48,7 @@ module.exports = function createRoutes(node, _authenticator, createSessionToken)
|
|
|
48
48
|
const blocklet = await req.getBlocklet();
|
|
49
49
|
const teamDid = blocklet.meta.did;
|
|
50
50
|
const user = await checkOwner({ node, userDid, blocklet });
|
|
51
|
+
const { secret } = await req.getBlockletInfo();
|
|
51
52
|
|
|
52
53
|
// ensure owner proof form previous workflow
|
|
53
54
|
if (!proof || !proof.claim || !proof.pk) {
|
|
@@ -109,7 +110,7 @@ module.exports = function createRoutes(node, _authenticator, createSessionToken)
|
|
|
109
110
|
}
|
|
110
111
|
|
|
111
112
|
// Generate new session token that client can save to localStorage
|
|
112
|
-
const sessionToken = await createSessionToken(userDid, { role: 'owner' });
|
|
113
|
+
const sessionToken = await createSessionToken(userDid, { secret, role: 'owner' });
|
|
113
114
|
await updateSession({ sessionToken }, true);
|
|
114
115
|
logger.info('setup.connect.success', { userDid });
|
|
115
116
|
} catch (err) {
|
|
@@ -69,7 +69,8 @@ const init = ({ node, options }) => {
|
|
|
69
69
|
try {
|
|
70
70
|
if (token) {
|
|
71
71
|
const teamDid = req.getBlockletDid();
|
|
72
|
-
const
|
|
72
|
+
const { secret } = await req.getBlockletInfo();
|
|
73
|
+
const result = await verifySessionToken(token, secret, teamDid);
|
|
73
74
|
if (result && result.avatar && result.avatar.startsWith(USER_AVATAR_URL_PREFIX)) {
|
|
74
75
|
result.avatar = `${WELLKNOWN_SERVICE_PATH_PREFIX}${USER_AVATAR_PATH_PREFIX}/${
|
|
75
76
|
result.avatar.split('/').slice(-1)[0]
|
|
@@ -27,9 +27,10 @@ module.exports = {
|
|
|
27
27
|
let nextToken = '';
|
|
28
28
|
if (req.query[encKey]) {
|
|
29
29
|
try {
|
|
30
|
+
const { secret } = await req.getBlockletInfo();
|
|
30
31
|
const encryptionKey = decodeEncryptionKey(req.query[encKey]);
|
|
31
32
|
nextToken = JSON.stringify(
|
|
32
|
-
await createSessionToken(user.did, { passport: user.passport, role: user.role })
|
|
33
|
+
await createSessionToken(user.did, { secret, passport: user.passport, role: user.role })
|
|
33
34
|
);
|
|
34
35
|
nextToken = Buffer.from(SealedBox.seal(Buffer.from(nextToken), encryptionKey)).toString('base64');
|
|
35
36
|
} catch {
|
|
@@ -88,7 +88,7 @@ module.exports = ({ node, req, options }) => {
|
|
|
88
88
|
const did = req.getBlockletDid();
|
|
89
89
|
const context = req.getServiceContext();
|
|
90
90
|
|
|
91
|
-
return cache.getBlocklet({ did, context, node, force: useCache });
|
|
91
|
+
return cache.getBlocklet({ did, context, node, force: !useCache });
|
|
92
92
|
};
|
|
93
93
|
|
|
94
94
|
req.getNodeInfo = () => cache.getNodeInfo({ node });
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"publishConfig": {
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
|
-
"version": "1.16.6-beta-
|
|
6
|
+
"version": "1.16.6-beta-e2082fec",
|
|
7
7
|
"description": "Provide unified services for every blocklet",
|
|
8
8
|
"main": "api/index.js",
|
|
9
9
|
"files": [
|
|
@@ -31,16 +31,16 @@
|
|
|
31
31
|
"author": "wangshijun <wangshijun2010@gmail.com> (http://github.com/wangshijun)",
|
|
32
32
|
"license": "MIT",
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@abtnode/auth": "1.16.6-beta-
|
|
35
|
-
"@abtnode/client": "1.16.6-beta-
|
|
36
|
-
"@abtnode/constant": "1.16.6-beta-
|
|
37
|
-
"@abtnode/core": "1.16.6-beta-
|
|
38
|
-
"@abtnode/cron": "1.16.6-beta-
|
|
39
|
-
"@abtnode/db": "1.16.6-beta-
|
|
40
|
-
"@abtnode/logger": "1.16.6-beta-
|
|
41
|
-
"@abtnode/router-adapter": "1.16.6-beta-
|
|
42
|
-
"@abtnode/router-templates": "1.16.6-beta-
|
|
43
|
-
"@abtnode/util": "1.16.6-beta-
|
|
34
|
+
"@abtnode/auth": "1.16.6-beta-e2082fec",
|
|
35
|
+
"@abtnode/client": "1.16.6-beta-e2082fec",
|
|
36
|
+
"@abtnode/constant": "1.16.6-beta-e2082fec",
|
|
37
|
+
"@abtnode/core": "1.16.6-beta-e2082fec",
|
|
38
|
+
"@abtnode/cron": "1.16.6-beta-e2082fec",
|
|
39
|
+
"@abtnode/db": "1.16.6-beta-e2082fec",
|
|
40
|
+
"@abtnode/logger": "1.16.6-beta-e2082fec",
|
|
41
|
+
"@abtnode/router-adapter": "1.16.6-beta-e2082fec",
|
|
42
|
+
"@abtnode/router-templates": "1.16.6-beta-e2082fec",
|
|
43
|
+
"@abtnode/util": "1.16.6-beta-e2082fec",
|
|
44
44
|
"@arcblock/did": "^1.18.77",
|
|
45
45
|
"@arcblock/did-auth": "1.18.77",
|
|
46
46
|
"@arcblock/did-auth-storage-nedb": "^1.7.1",
|
|
@@ -48,11 +48,11 @@
|
|
|
48
48
|
"@arcblock/event-hub": "1.18.77",
|
|
49
49
|
"@arcblock/jwt": "1.18.77",
|
|
50
50
|
"@arcblock/ws": "1.18.77",
|
|
51
|
-
"@blocklet/constant": "1.16.6-beta-
|
|
51
|
+
"@blocklet/constant": "1.16.6-beta-e2082fec",
|
|
52
52
|
"@blocklet/form-builder": "^0.1.11",
|
|
53
53
|
"@blocklet/form-collector": "^0.1.6",
|
|
54
|
-
"@blocklet/meta": "1.16.6-beta-
|
|
55
|
-
"@blocklet/sdk": "1.16.6-beta-
|
|
54
|
+
"@blocklet/meta": "1.16.6-beta-e2082fec",
|
|
55
|
+
"@blocklet/sdk": "1.16.6-beta-e2082fec",
|
|
56
56
|
"@did-connect/authenticator": "^2.1.54",
|
|
57
57
|
"@did-connect/relay-adapter-express": "^2.1.54",
|
|
58
58
|
"@did-connect/storage-nedb": "^2.1.54",
|
|
@@ -89,7 +89,7 @@
|
|
|
89
89
|
"@nedb/multi": "^2.0.5"
|
|
90
90
|
},
|
|
91
91
|
"devDependencies": {
|
|
92
|
-
"@abtnode/ux": "1.16.6-beta-
|
|
92
|
+
"@abtnode/ux": "1.16.6-beta-e2082fec",
|
|
93
93
|
"@arcblock/did-connect": "^2.5.36",
|
|
94
94
|
"@arcblock/icons": "^2.5.36",
|
|
95
95
|
"@arcblock/ux": "^2.5.36",
|
|
@@ -155,5 +155,5 @@
|
|
|
155
155
|
"url": "https://github.com/ArcBlock/blocklet-server/issues",
|
|
156
156
|
"email": "shijun@arcblock.io"
|
|
157
157
|
},
|
|
158
|
-
"gitHead": "
|
|
158
|
+
"gitHead": "851e0ab17f1c6e160aedc47fcdbf7dd54dfa7237"
|
|
159
159
|
}
|