@abtnode/auth 1.17.3-beta-20251125-042047-1bcefd39 → 1.17.3-beta-20251127-063055-94957209

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/lib/auth.js CHANGED
@@ -15,7 +15,6 @@ const { fromBase58, toAddress } = require('@ocap/util');
15
15
  const { toTypeInfo, isFromPublicKey } = require('@arcblock/did');
16
16
  const { getRandomBytes } = require('@ocap/mcrypto');
17
17
  const { getBlockletInfo } = require('@blocklet/meta/lib/info');
18
- const { getApplicationWallet } = require('@blocklet/meta/lib/wallet');
19
18
  const {
20
19
  PASSPORT_STATUS,
21
20
  VC_TYPE_NODE_PASSPORT,
@@ -36,6 +35,7 @@ const { LOGIN_PROVIDER } = require('@blocklet/constant');
36
35
  const dayjs = require('@abtnode/util/lib/dayjs');
37
36
 
38
37
  const { omit } = require('lodash');
38
+ const { getAccessWallet } = require('@abtnode/util/lib/blocklet');
39
39
  const logger = require('./logger');
40
40
  const verifySignature = require('./util/verify-signature');
41
41
  const { getEmailServiceProvider } = require('./email');
@@ -292,7 +292,10 @@ const getApplicationInfo = async ({ node, nodeInfo = {}, teamDid, baseUrl = '' }
292
292
  secret = blockletInfo.secret;
293
293
  logo = getAppAvatarUrl(baseUrl || blockletInfo.appUrl);
294
294
  appUrl = blockletInfo.appUrl;
295
- accessWallet = getApplicationWallet(blocklet.appDid || blocklet.meta.did, nodeInfo.sk, undefined, 2);
295
+ accessWallet = getAccessWallet({
296
+ serverSecretKey: nodeInfo.sk,
297
+ blockletAppDid: blocklet.appDid || blocklet.meta.did,
298
+ });
296
299
  }
297
300
 
298
301
  return {
package/lib/passkey.js CHANGED
@@ -19,6 +19,8 @@ const {
19
19
  const { updateConnectedAccount, getAvatarByEmail, extractUserAvatar } = require('@abtnode/util/lib/user');
20
20
  const getOrigin = require('@abtnode/util/lib/get-origin');
21
21
 
22
+ const { getAccessWallet } = require('@abtnode/util/lib/blocklet');
23
+ const { sign } = require('@blocklet/sdk/lib/util/csrf');
22
24
  const { getApplicationInfo, handleInvitationReceive, canSessionBeElevated } = require('./auth');
23
25
  const { validateVerifyDestroyRequest } = require('./server');
24
26
  const { getLastUsedPassport } = require('./passport');
@@ -534,7 +536,7 @@ function createPasskeyHandlers(node, mode, createToken) {
534
536
  };
535
537
 
536
538
  const handleAuthResponse = async (req, res) => {
537
- const { body, passkeySession } = req;
539
+ const { body, passkeySession, blocklet } = req;
538
540
 
539
541
  // ensure the passkey is registered someway
540
542
  const info = await node.getNodeInfo({ useCache: true });
@@ -671,6 +673,10 @@ function createPasskeyHandlers(node, mode, createToken) {
671
673
 
672
674
  // Generate new session token that client can save to localStorage
673
675
  logger.info('passkey.auth.generateNewSessionToken', { teamDid, action: passkeySession.data.action });
676
+ const { targetAppPid } = req.query;
677
+ // FIXME: @zhanghan 这里目前只是一个 hack 的方式,passkey 和 federated 结合的流程需要重新梳理优化
678
+ const isFederatedHack = targetAppPid && targetAppPid !== teamDid;
679
+ const findMemberSite = findFederatedSite(blocklet, targetAppPid);
674
680
  if (
675
681
  [
676
682
  PASSKEY_ACTIONS.login,
@@ -678,11 +684,7 @@ function createPasskeyHandlers(node, mode, createToken) {
678
684
  PASSKEY_ACTIONS['connect-to-did-domain'],
679
685
  ].includes(passkeySession.data.action)
680
686
  ) {
681
- const { targetAppPid } = req.query;
682
- // FIXME: @zhanghan 这里目前只是一个 hack 的方式,passkey 和 federated 结合的流程需要重新梳理优化
683
- const isFederatedHack = targetAppPid && targetAppPid !== teamDid;
684
687
  if (mode === 'service' && isFederatedHack) {
685
- const findMemberSite = findFederatedSite(req.blocklet, targetAppPid);
686
688
  if (findMemberSite) {
687
689
  const postUser = pick(user, ['did', 'pk', 'fullName', 'locale', 'inviter', 'generation']);
688
690
  postUser.lastLoginAt = getRequestIP(req);
@@ -861,6 +863,13 @@ function createPasskeyHandlers(node, mode, createToken) {
861
863
  }
862
864
 
863
865
  logger.info('passkey.auth.result', { action: passkeySession.data.action, teamDid, userDid: user.did });
866
+
867
+ const accessWallet = getAccessWallet({
868
+ blockletAppDid: findMemberSite?.appId || blocklet.appDid || blocklet.meta.did,
869
+ serverSecretKey: info.sk,
870
+ });
871
+ result.csrfToken = await sign(accessWallet.secretKey, result.sessionToken);
872
+
864
873
  return res.send(result);
865
874
  } catch (error) {
866
875
  logger.error('passkey.auth.handleAuthResponse.error', { error });
package/lib/server.js CHANGED
@@ -197,11 +197,13 @@ const authenticateByVc = async ({
197
197
  role = getRoleFromLocalPassport(get(vc, 'credentialSubject.passport'));
198
198
  } else {
199
199
  // map external passport to local role
200
- const { mappings = [] } = (info.trustedPassports || []).find((x) => x.issuerDid === issuerId) || {};
200
+ const trustedPassports =
201
+ blocklet?.trustedPassports?.length > 0 ? blocklet?.trustedPassports : info.trustedPassports || [];
202
+ const { mappings = [] } = trustedPassports.find((x) => x.issuerDid === issuerId) || {};
201
203
  role = await getRoleFromExternalPassport({
202
204
  passport: get(vc, 'credentialSubject.passport'),
203
205
  node,
204
- teamDid,
206
+ teamDid: issuerId,
205
207
  locale,
206
208
  mappings,
207
209
  });
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "1.17.3-beta-20251125-042047-1bcefd39",
6
+ "version": "1.17.3-beta-20251127-063055-94957209",
7
7
  "description": "Simple lib to manage auth in ABT Node",
8
8
  "main": "lib/index.js",
9
9
  "files": [
@@ -18,25 +18,25 @@
18
18
  "author": "linchen <linchen1987@foxmail.com> (http://github.com/linchen1987)",
19
19
  "license": "Apache-2.0",
20
20
  "dependencies": {
21
- "@abtnode/constant": "1.17.3-beta-20251125-042047-1bcefd39",
22
- "@abtnode/logger": "1.17.3-beta-20251125-042047-1bcefd39",
23
- "@abtnode/util": "1.17.3-beta-20251125-042047-1bcefd39",
24
- "@arcblock/did": "^1.27.7",
25
- "@arcblock/did-connect-js": "^1.27.7",
26
- "@arcblock/did-ext": "^1.27.7",
27
- "@arcblock/did-util": "^1.27.7",
28
- "@arcblock/jwt": "^1.27.7",
29
- "@arcblock/nft-display": "^3.2.6",
30
- "@arcblock/validator": "^1.27.7",
31
- "@arcblock/vc": "^1.27.7",
32
- "@blocklet/constant": "1.17.3-beta-20251125-042047-1bcefd39",
21
+ "@abtnode/constant": "1.17.3-beta-20251127-063055-94957209",
22
+ "@abtnode/logger": "1.17.3-beta-20251127-063055-94957209",
23
+ "@abtnode/util": "1.17.3-beta-20251127-063055-94957209",
24
+ "@arcblock/did": "^1.27.12",
25
+ "@arcblock/did-connect-js": "^1.27.12",
26
+ "@arcblock/did-ext": "^1.27.12",
27
+ "@arcblock/did-util": "^1.27.12",
28
+ "@arcblock/jwt": "^1.27.12",
29
+ "@arcblock/nft-display": "^3.2.10",
30
+ "@arcblock/validator": "^1.27.12",
31
+ "@arcblock/vc": "^1.27.12",
32
+ "@blocklet/constant": "1.17.3-beta-20251127-063055-94957209",
33
33
  "@blocklet/error": "^0.3.3",
34
- "@blocklet/meta": "1.17.3-beta-20251125-042047-1bcefd39",
35
- "@blocklet/sdk": "1.17.3-beta-20251125-042047-1bcefd39",
36
- "@ocap/client": "^1.27.7",
37
- "@ocap/mcrypto": "^1.27.7",
38
- "@ocap/util": "^1.27.7",
39
- "@ocap/wallet": "^1.27.7",
34
+ "@blocklet/meta": "1.17.3-beta-20251127-063055-94957209",
35
+ "@blocklet/sdk": "1.17.3-beta-20251127-063055-94957209",
36
+ "@ocap/client": "^1.27.12",
37
+ "@ocap/mcrypto": "^1.27.12",
38
+ "@ocap/util": "^1.27.12",
39
+ "@ocap/wallet": "^1.27.12",
40
40
  "@simplewebauthn/server": "^13.1.1",
41
41
  "axios": "^1.7.9",
42
42
  "flat": "^5.0.2",
@@ -55,5 +55,5 @@
55
55
  "devDependencies": {
56
56
  "axios-mock-adapter": "^2.1.0"
57
57
  },
58
- "gitHead": "aa12c79fd75c9e7e06c3f3255bb73e278eec02d4"
58
+ "gitHead": "80dac020e9642b7e51c6a142c526cdecb75217a9"
59
59
  }