@abtnode/blocklet-services 1.16.6-beta-4ea1eb90 → 1.16.6-beta-7c9b42cc

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.
@@ -43,7 +43,7 @@ const logger = require('@abtnode/logger')(require('../../../package.json').name)
43
43
  const { isInvitedUserOnly } = require('../../util');
44
44
  const { transferPassport } = require('../auth/utils');
45
45
  const { generateTranslate } = require('../translate');
46
- const { getRawUser, mergeUserData, migrateAccount, normalizeUser } = require('../../services/oauth');
46
+ const { mergeUserData, migrateAccount } = require('../../services/oauth');
47
47
 
48
48
  const vcTypes = [VC_TYPE_GENERAL_PASSPORT, VC_TYPE_NODE_PASSPORT];
49
49
 
@@ -135,7 +135,7 @@ module.exports = {
135
135
  onConnect: async ({ node, request, userDid, locale, passportId = '', componentId, action }) => {
136
136
  const blocklet = await request.getBlocklet();
137
137
  const config = await request.getServiceConfig(NODE_SERVICES.AUTH, { componentId });
138
- const { did: teamDid } = await request.getBlockletInfo();
138
+ const { did: teamDid, wallet: blockletWallet } = await request.getBlockletInfo();
139
139
 
140
140
  const profileFields = get(config, 'profileFields');
141
141
 
@@ -172,13 +172,16 @@ module.exports = {
172
172
  };
173
173
  }
174
174
 
175
- let user = await getRawUser(blocklet.meta.did, userDid, {
176
- getUser: node.getUser,
177
- getUsers: node.getUsers,
178
- });
179
- user = await normalizeUser(teamDid, user, {
180
- updateUser: node.updateUser,
181
- getBlockletInfo: request.getBlockletInfo,
175
+ const user = await node.getUser({
176
+ teamDid: blocklet.meta.did,
177
+ user: {
178
+ did: userDid,
179
+ },
180
+ options: {
181
+ enableConnectedAccout: true,
182
+ enableNormalize: true,
183
+ blockletSk: blockletWallet.secretKey,
184
+ },
182
185
  });
183
186
  if (user) {
184
187
  delete claims.profile;
@@ -201,16 +204,19 @@ module.exports = {
201
204
  action,
202
205
  }) => {
203
206
  const blocklet = await request.getBlocklet();
204
- const { wallet, name, passportColor, did: teamDid } = await request.getBlockletInfo();
207
+ const { wallet, name, passportColor, did: teamDid, wallet: blockletWallet } = await request.getBlockletInfo();
205
208
 
206
209
  // Check user approved
207
- let user = await getRawUser(teamDid, userDid, {
208
- getUser: node.getUser,
209
- getUsers: node.getUsers,
210
- });
211
- user = await normalizeUser(teamDid, user, {
212
- updateUser: node.updateUser,
213
- getBlockletInfo: request.getBlockletInfo,
210
+ const user = await node.getUser({
211
+ teamDid,
212
+ user: {
213
+ did: userDid,
214
+ },
215
+ options: {
216
+ enableConnectedAccout: true,
217
+ enableNormalize: true,
218
+ blockletSk: blockletWallet.secretKey,
219
+ },
214
220
  });
215
221
  if (user && !user.approved) {
216
222
  throw new Error(messages.notAllowed[locale]);
@@ -303,14 +309,16 @@ module.exports = {
303
309
  const passportForLog = passport || { name: 'Guest', role: 'guest' };
304
310
  if (user) {
305
311
  // Update user
306
- const doc = await node.updateUser({
312
+ const doc = await node.loginUser({
307
313
  teamDid,
308
- user: mergeUserData(user, {
314
+ user: {
315
+ did: user.did,
316
+ pk: user.pk,
309
317
  locale,
310
- lastUsedPassport: passport,
318
+ passport,
311
319
  lastLoginIp: get(request, 'headers[x-real-ip]') || '',
312
- connectedAccount: [{ provider: 'wallet', did: realDid }, connectedNft].filter(Boolean),
313
- }),
320
+ connectedAccount: [{ provider: 'wallet', did: realDid }, connectedNft],
321
+ },
314
322
  });
315
323
  await node.createAuditLog(
316
324
  {
@@ -325,7 +333,7 @@ module.exports = {
325
333
  // Create user
326
334
  const profile = claims.find((x) => x.type === 'profile');
327
335
 
328
- const doc = await node.addUser({
336
+ const doc = await node.loginUser({
329
337
  teamDid,
330
338
  user: {
331
339
  ...profile,
@@ -334,25 +342,17 @@ module.exports = {
334
342
  }),
335
343
  did: realDid,
336
344
  pk: realPk,
337
- approved: true,
338
345
  locale,
339
- passports: [passport].filter(Boolean),
340
- firstLoginAt: now,
341
- lastLoginAt: now,
346
+ passport,
342
347
  lastLoginIp: get(request, 'headers[x-real-ip]') || '',
343
- extraConfigs: {
344
- sourceProvider: 'wallet',
345
- connectedAccounts: [
346
- {
347
- provider: 'wallet',
348
- did: realDid,
349
- pk: realPk,
350
- firstLoginAt: now,
351
- lastLoginAt: now,
352
- },
353
- connectedNft,
354
- ].filter(Boolean),
355
- },
348
+ connectedAccount: [
349
+ {
350
+ provider: 'wallet',
351
+ did: realDid,
352
+ pk: realPk,
353
+ },
354
+ connectedNft,
355
+ ],
356
356
  },
357
357
  });
358
358
  await node.createAuditLog(
@@ -413,14 +413,17 @@ module.exports = {
413
413
  throw new Error(messages.actionForbidden[locale]);
414
414
  }
415
415
 
416
- const { did: teamDid } = await request.getBlockletInfo();
417
- let user = await getRawUser(teamDid, userDid, {
418
- getUser: node.getUser,
419
- getUsers: node.getUsers,
420
- });
421
- user = await normalizeUser(teamDid, user, {
422
- updateUser: node.updateUser,
423
- getBlockletInfo: request.getBlockletInfo,
416
+ const { did: teamDid, wallet: blockletWallet } = await request.getBlockletInfo();
417
+ const user = await node.getUser({
418
+ teamDid,
419
+ user: {
420
+ did: userDid,
421
+ },
422
+ options: {
423
+ enableConnectedAccout: true,
424
+ enableNormalize: true,
425
+ blockletSk: blockletWallet.secretKey,
426
+ },
424
427
  });
425
428
 
426
429
  if (!user) {
@@ -440,16 +443,19 @@ module.exports = {
440
443
  },
441
444
  onApprove: async ({ node, request, locale, profile, userDid }) => {
442
445
  const blocklet = await request.getBlocklet();
443
- const teamDid = blocklet.meta.did;
446
+ const { did: teamDid, blocklet: blockletWallet } = await request.getBlockletInfo();
444
447
 
445
448
  // check user approved
446
- let user = await getRawUser(teamDid, userDid, {
447
- getUser: node.getUser,
448
- getUsers: node.getUsers,
449
- });
450
- user = await normalizeUser(teamDid, user, {
451
- updateUser: node.updateUser,
452
- getBlockletInfo: request.getBlockletInfo,
449
+ const user = await node.getUser({
450
+ teamDid,
451
+ user: {
452
+ did: userDid,
453
+ },
454
+ options: {
455
+ enableConnectedAccout: true,
456
+ enableNormalize: true,
457
+ blockletSk: blockletWallet.secretKey,
458
+ },
453
459
  });
454
460
  if (!user) {
455
461
  throw new Error(messages.userNotFound[locale]);
@@ -488,15 +494,18 @@ module.exports = {
488
494
  throw new Error(messages.userMismatch[locale]);
489
495
  }
490
496
 
491
- const { did: teamDid } = await request.getBlockletInfo();
497
+ const { did: teamDid, wallet: blockletWallet } = await request.getBlockletInfo();
492
498
 
493
- let user = await getRawUser(teamDid, userDid, {
494
- getUser: node.getUser,
495
- getUsers: node.getUsers,
496
- });
497
- user = await normalizeUser(teamDid, user, {
498
- updateUser: node.updateUser,
499
- getBlockletInfo: request.getBlockletInfo,
499
+ const user = await node.getUser({
500
+ teamDid,
501
+ user: {
502
+ did: userDid,
503
+ },
504
+ options: {
505
+ enableConnectedAccout: true,
506
+ enableNormalize: true,
507
+ blockletSk: blockletWallet.secretKey,
508
+ },
500
509
  });
501
510
 
502
511
  if (!user) {
@@ -534,16 +543,19 @@ module.exports = {
534
543
  componentId,
535
544
  }) => {
536
545
  const blocklet = await request.getBlocklet();
537
- const { name, did: teamDid } = await request.getBlockletInfo();
546
+ const { name, did: teamDid, wallet: blockletWallet } = await request.getBlockletInfo();
538
547
 
539
548
  // Validate user
540
- let user = await getRawUser(teamDid, userDid, {
541
- getUser: node.getUser,
542
- getUsers: node.getUsers,
543
- });
544
- user = await normalizeUser(teamDid, user, {
545
- updateUser: node.updateUser,
546
- getBlockletInfo: request.getBlockletInfo,
549
+ const user = await node.getUser({
550
+ teamDid,
551
+ user: {
552
+ did: userDid,
553
+ },
554
+ options: {
555
+ enableConnectedAccout: true,
556
+ enableNormalize: true,
557
+ blockletSk: blockletWallet.secretKey,
558
+ },
547
559
  });
548
560
  if (!user) {
549
561
  throw new Error(messages.userNotFound[locale]);
@@ -616,7 +628,17 @@ module.exports = {
616
628
 
617
629
  // 基本流程与 login 一致,但在创建更新用户信息的逻辑不一样
618
630
  bindWallet: {
619
- onConnect: async ({ node, request, userDid, locale, passportId = '', componentId, previousUserDid }) => {
631
+ authPrincipal: async ({ email, locale, previousUserDid }) => {
632
+ const user = email || previousUserDid;
633
+
634
+ const message = locale === 'zh' ? `将你的 DID 钱包与账号 ${user} 绑定` : `Connect your DID Wallet with ${user}`;
635
+
636
+ return {
637
+ description: message,
638
+ supervised: true,
639
+ };
640
+ },
641
+ onConnect: async ({ node, request, userDid, locale, componentId, previousUserDid }) => {
620
642
  const translations = {
621
643
  en: {
622
644
  notFound: "Can't get bind account information",
@@ -632,7 +654,7 @@ module.exports = {
632
654
  },
633
655
  };
634
656
  const t = generateTranslate({ translations });
635
- const { did: teamDid } = await request.getBlockletInfo();
657
+ const { did: teamDid, wallet: blockletWallet } = await request.getBlockletInfo();
636
658
 
637
659
  const walletUser = await node.getUser({ teamDid, user: { did: userDid } });
638
660
  if (walletUser) {
@@ -640,13 +662,16 @@ module.exports = {
640
662
  }
641
663
 
642
664
  const config = await request.getServiceConfig(NODE_SERVICES.AUTH, { componentId });
643
- let oauthUser = await getRawUser(teamDid, previousUserDid, {
644
- getUser: node.getUser,
645
- getUsers: node.getUsers,
646
- });
647
- oauthUser = await normalizeUser(teamDid, oauthUser, {
648
- updateUser: node.updateUser,
649
- getBlockletInfo: request.getBlockletInfo,
665
+ const oauthUser = await node.getUser({
666
+ teamDid,
667
+ user: {
668
+ did: previousUserDid,
669
+ },
670
+ options: {
671
+ enableConnectedAccout: true,
672
+ enableNormalize: true,
673
+ blockletSk: blockletWallet.secretKey,
674
+ },
650
675
  });
651
676
 
652
677
  if (!oauthUser) {
@@ -658,13 +683,16 @@ module.exports = {
658
683
  throw new Error(t('alreadyBindWallet', locale));
659
684
  }
660
685
 
661
- let bindUser = await getRawUser(teamDid, userDid, {
662
- getUser: node.getUser,
663
- getUsers: node.getUsers,
664
- });
665
- bindUser = await normalizeUser(teamDid, bindUser, {
666
- updateUser: node.updateUser,
667
- getBlockletInfo: request.getBlockletInfo,
686
+ const bindUser = await node.getUser({
687
+ teamDid,
688
+ user: {
689
+ did: userDid,
690
+ },
691
+ options: {
692
+ enableConnectedAccout: true,
693
+ enableNormalize: true,
694
+ blockletSk: blockletWallet.secretKey,
695
+ },
668
696
  });
669
697
 
670
698
  if (bindUser) {
@@ -684,15 +712,14 @@ module.exports = {
684
712
  };
685
713
 
686
714
  // 至少需要一个 claim
687
- // if (oauthUser.avatar) {
688
- // delete claims.profile;
689
- // }
690
-
691
- if (passportId) {
692
- claims.verifiableCredential.target = passportId;
715
+ if (oauthUser.avatar) {
716
+ delete claims.profile;
717
+ }
718
+ if (Object.keys(claims).length > 0) {
719
+ return claims;
693
720
  }
694
721
 
695
- return claims;
722
+ return [];
696
723
  },
697
724
  onApprove: async ({ node, request, locale, userDid, userPk, claims, previousUserDid }) => {
698
725
  const blocklet = await request.getBlocklet();
@@ -701,13 +728,16 @@ module.exports = {
701
728
  const oauthUser = await node.getUser({ teamDid, user: { did: previousUserDid } });
702
729
  const nodeInfo = await request.getNodeInfo();
703
730
  // Check user approved
704
- let bindUser = await getRawUser(teamDid, userDid, {
705
- getUser: node.getUser,
706
- getUsers: node.getUsers,
707
- });
708
- bindUser = await normalizeUser(teamDid, bindUser, {
709
- updateUser: node.updateUser,
710
- getBlockletInfo: request.getBlockletInfo,
731
+ let bindUser = await node.getUser({
732
+ teamDid,
733
+ user: {
734
+ did: userDid,
735
+ },
736
+ options: {
737
+ enableConnectedAccout: true,
738
+ enableNormalize: true,
739
+ blockletSk: blockletWallet.secretKey,
740
+ },
711
741
  });
712
742
  if (bindUser && !bindUser.approved) {
713
743
  throw new Error(messages.notAllowed[locale]);
@@ -18,7 +18,7 @@ const { getAvatarByEmail, transferPassport } = require('../libs/auth/utils');
18
18
  const initJwt = require('../libs/jwt');
19
19
  const { sendToUser } = require('../libs/notification');
20
20
  const { generateTranslate } = require('../libs/translate');
21
- const { getRawUser, mergeUserData, declareAccount, migrateAccount, normalizeUser } = require('../services/oauth');
21
+ const { mergeUserData, declareAccount, migrateAccount } = require('../services/oauth');
22
22
  const { isInvitedUserOnly } = require('../util');
23
23
 
24
24
  const PREFIX = WELLKNOWN_SERVICE_PATH_PREFIX;
@@ -28,11 +28,18 @@ const prefix = `${PREFIX}/oauth`;
28
28
  const translations = {
29
29
  zh: {
30
30
  needInviteToLogin: '你需要被邀请才可以登录此应用',
31
+ alreadyMainAccount: '已给该账户分配一个主账户',
32
+ oauthCantBeOwner: '第三方登录的账户不能成为应用的拥有者',
33
+ oauthCantBindOauth: '第三方登录的账户无法绑定另一个第三方登录的账户',
31
34
  },
32
35
  en: {
33
36
  needInviteToLogin: 'You need to be invited to sign in to this app',
37
+ alreadyMainAccount: 'Current account is already a main account',
38
+ oauthCantBeOwner: "Can't login oauth account as owner",
39
+ oauthCantBindOauth: "Current account can't bind a third party account",
34
40
  },
35
41
  };
42
+
36
43
  const t = generateTranslate({ translations });
37
44
 
38
45
  function getAuthClient(blocklet, provider) {
@@ -49,13 +56,13 @@ function getAuthClient(blocklet, provider) {
49
56
 
50
57
  async function login(req, node, options) {
51
58
  const blocklet = await req.getBlocklet();
59
+ const { token, locale = 'en', provider, componentId } = req.body;
60
+
52
61
  if (!blocklet.settings?.owner) {
53
- throw new Error('Cant login oauth account as owner');
62
+ throw new Error(t('oauthCantBeOwner', locale));
54
63
  }
55
- const { token, locale = 'en', provider, componentId } = req.body;
56
64
  const authClient = getAuthClient(blocklet, provider);
57
65
 
58
- const currentTime = new Date().toISOString();
59
66
  const { did: teamDid, wallet: blockletWallet } = await req.getBlockletInfo();
60
67
  const config = await req.getServiceConfig(NODE_SERVICES.AUTH, { componentId });
61
68
  const nodeInfo = await req.getNodeInfo();
@@ -67,10 +74,16 @@ async function login(req, node, options) {
67
74
  const userPk = userWallet.publicKey;
68
75
  const lastLoginIp = get(req, 'headers[x-real-ip]') || '';
69
76
  let passport = { name: 'Guest', role: 'guest' };
70
- let currentUser = await getRawUser(teamDid, userDid, { getUser: node.getUser, getUsers: node.getUsers });
71
- currentUser = await normalizeUser(teamDid, currentUser, {
72
- updateUser: node.updateUser,
73
- getBlockletInfo: req.getBlockletInfo,
77
+ let currentUser = await node.getUser({
78
+ teamDid,
79
+ user: {
80
+ did: userDid,
81
+ },
82
+ options: {
83
+ enableConnectedAccout: true,
84
+ enableNormalize: true,
85
+ blockletSk: blockletWallet.secretKey,
86
+ },
74
87
  });
75
88
  // 当前账户已存在,更新账户信息
76
89
  if (currentUser) {
@@ -80,14 +93,16 @@ async function login(req, node, options) {
80
93
  if (lastUsedPassport) {
81
94
  passport = pick(lastUsedPassport, ['id', 'name', 'role']);
82
95
  }
83
- await node.updateUser({
96
+ await node.loginUser({
84
97
  teamDid,
85
- user: mergeUserData(currentUser, {
98
+ user: {
99
+ did: currentUser.did,
100
+ pk: currentUser.pk,
86
101
  locale,
87
102
  lastLoginIp,
88
- lastUsedPassport,
103
+ passport: lastUsedPassport,
89
104
  connectedAccount: { provider, did: userDid },
90
- }),
105
+ },
91
106
  });
92
107
  } else {
93
108
  currentUser = {
@@ -100,21 +115,14 @@ async function login(req, node, options) {
100
115
  if (invitedUserOnly) {
101
116
  throw new Error(t('needInviteToLogin', locale));
102
117
  }
103
- await node.addUser({
118
+ await node.loginUser({
104
119
  teamDid,
105
120
  user: {
106
- extraConfigs: {
107
- sourceProvider: provider,
108
- connectedAccounts: [
109
- {
110
- provider,
111
- id: oauthInfo.sub,
112
- did: userDid,
113
- pk: userPk,
114
- lastLoginAt: currentTime,
115
- firstLoginAt: currentTime,
116
- },
117
- ],
121
+ connectedAccount: {
122
+ provider,
123
+ id: oauthInfo.sub,
124
+ did: userDid,
125
+ pk: userPk,
118
126
  },
119
127
  did: userDid,
120
128
  pk: userPk,
@@ -122,11 +130,6 @@ async function login(req, node, options) {
122
130
  email: oauthInfo.email,
123
131
  avatar,
124
132
  locale,
125
- type: 'profile',
126
- approved: true,
127
- passports: [],
128
- firstLoginAt: currentTime,
129
- lastLoginAt: currentTime,
130
133
  lastLoginIp,
131
134
  },
132
135
  });
@@ -155,13 +158,16 @@ async function invite(req, node, options) {
155
158
  let userPk = userWallet.publicKey;
156
159
 
157
160
  let profile;
158
- let currentUser = await getRawUser(teamDid, userDid, {
159
- getUser: node.getUser,
160
- getUsers: node.getUsers,
161
- });
162
- currentUser = await normalizeUser(teamDid, currentUser, {
163
- updateUser: node.updateUser,
164
- getBlockletInfo: req.getBlockletInfo,
161
+ const currentUser = await node.getUser({
162
+ teamDid,
163
+ user: {
164
+ did: userDid,
165
+ },
166
+ options: {
167
+ enableConnectedAccout: true,
168
+ enableNormalize: true,
169
+ blockletSk: blockletWallet.secretKey,
170
+ },
165
171
  });
166
172
  const { dataDir, name: applicationName } = await getApplicationInfo({ node, nodeInfo, teamDid });
167
173
  if (currentUser) {
@@ -199,6 +205,7 @@ async function invite(req, node, options) {
199
205
  userDid,
200
206
  userPk,
201
207
  locale,
208
+ provider,
202
209
  });
203
210
 
204
211
  if (currentUser) {
@@ -225,28 +232,18 @@ async function invite(req, node, options) {
225
232
  );
226
233
  }
227
234
  } else {
228
- await node.updateUser({
235
+ await node.loginUser({
229
236
  teamDid,
230
- user: mergeUserData(
231
- {
232
- did: userDid,
233
- pk: userPk,
234
- extraConfigs: {
235
- sourceProvider: provider,
236
- },
237
- },
238
- {
237
+ user: {
238
+ did: userDid,
239
+ pk: userPk,
240
+ connectedAccount: {
239
241
  provider,
240
- connectedAccount: {
241
- provider,
242
- id: oauthInfo.sub,
243
- did: userWallet.address,
244
- pk: userWallet.publicKey,
245
- firstLoginAt: new Date().toISOString(),
246
- lastLoginAt: new Date().toISOString(),
247
- },
248
- }
249
- ),
242
+ id: oauthInfo.sub,
243
+ did: userWallet.address,
244
+ pk: userWallet.publicKey,
245
+ },
246
+ },
250
247
  });
251
248
  await declareAccount({ wallet: userWallet, moniker: oauthInfo.nickname, blocklet });
252
249
  }
@@ -269,17 +266,14 @@ async function bind(req, node, options) {
269
266
  const userWallet = fromAppDid(userInfo.sub, blockletWallet.secretKey, types.RoleType.ROLE_ACCOUNT);
270
267
  let oauthUser = await node.getUser({ teamDid, user: { did: userWallet.address } });
271
268
  if (oauthUser) {
272
- if (oauthUser.extraConfigs?.bindDid) {
273
- throw new Error('OAuth account is already bind to another wallet account');
274
- }
275
- throw new Error('OAuth account is already a main account');
269
+ throw new Error(t('alreadyMainAccount', locale));
276
270
  }
277
271
 
278
- // NOTICE: 这里获得的 userDid 已经是登录返回的 rawUserDid 了,无需再 getRawUser
272
+ // NOTICE: 这里获得的 userDid 已经是登录返回的 userDid 了,无需再去查询 connectedAccount
279
273
  const bindUser = await node.getUser({ teamDid, user: { did: userDid } });
280
274
 
281
275
  if (bindUser.extraConfigs?.sourceProvider !== 'wallet') {
282
- throw new Error("OAuth account can't bind to a oauth account");
276
+ throw new Error('oauthCantBindOauth', locale);
283
277
  }
284
278
 
285
279
  const mergePassport = (oauthUser?.passports || []).reduce((sum, cur) => {
@@ -2,11 +2,17 @@ const logger = require('@abtnode/logger')(require('../../../../package.json').na
2
2
 
3
3
  const { bindWallet } = require('../../../libs/connect/session');
4
4
 
5
- const { onConnect, onApprove } = bindWallet;
5
+ const { onConnect, onApprove, authPrincipal } = bindWallet;
6
6
 
7
7
  module.exports = function createRoutes(node, authenticator, createSessionToken) {
8
8
  return {
9
9
  action: 'bind-wallet',
10
+ authPrincipal: false,
11
+ claims: {
12
+ authPrincipal: async ({ extraParams: { locale, previousUserDid, email } }) => {
13
+ return authPrincipal({ locale, previousUserDid, email });
14
+ },
15
+ },
10
16
  onConnect: async ({ req, userDid, extraParams: { locale, passportId = '', componentId, previousUserDid } }) => {
11
17
  return onConnect({
12
18
  node,
@@ -243,8 +243,6 @@ module.exports = function createRoutes(node, _, createSessionToken) {
243
243
  dataDir,
244
244
  });
245
245
 
246
- const now = new Date().toISOString();
247
-
248
246
  if (user) {
249
247
  const doc = await node.updateUser({
250
248
  teamDid: appPid,
@@ -270,30 +268,20 @@ module.exports = function createRoutes(node, _, createSessionToken) {
270
268
  node
271
269
  );
272
270
  } else {
273
- const doc = await node.addUser({
271
+ const doc = await node.loginUser({
274
272
  teamDid: appPid,
275
273
  user: {
276
274
  ...profile,
277
275
  avatar,
278
276
  did: userDid,
279
277
  pk: userPk,
280
- approved: true,
281
278
  locale,
282
- passports: [passport],
283
- firstLoginAt: now,
284
- lastLoginAt: now,
279
+ passport,
285
280
  lastLoginIp: get(req, 'headers[x-real-ip]') || '',
286
- extraConfigs: {
287
- sourceProvider: 'wallet',
288
- connectedAccounts: [
289
- {
290
- provider: 'wallet',
291
- did: userDid,
292
- pk: userPk,
293
- lastLoginAt: now,
294
- firstLoginAt: now,
295
- },
296
- ],
281
+ connectedAccount: {
282
+ provider: 'wallet',
283
+ did: userDid,
284
+ pk: userPk,
297
285
  },
298
286
  },
299
287
  });
@@ -75,7 +75,7 @@ module.exports = function createRoutes(node, _authenticator, createSessionToken)
75
75
  // Create user
76
76
  const profile = claims.find((x) => x.type === 'profile');
77
77
 
78
- const doc = await node.addUser({
78
+ const doc = await node.loginUser({
79
79
  teamDid,
80
80
  user: {
81
81
  ...profile,
@@ -84,15 +84,16 @@ module.exports = function createRoutes(node, _authenticator, createSessionToken)
84
84
  }),
85
85
  did: userDid,
86
86
  pk: userPk,
87
- approved: true,
88
87
  locale,
89
- passports: [],
90
- firstLoginAt: new Date().toISOString(),
91
- lastLoginAt: new Date().toISOString(),
92
88
  lastLoginIp: get(req, 'headers[x-real-ip]') || '',
93
89
  extra: {
94
90
  baseUrl,
95
91
  },
92
+ connectedAccount: {
93
+ provider: 'wallet',
94
+ did: userDid,
95
+ pk: userPk,
96
+ },
96
97
  },
97
98
  });
98
99
  await node.createAuditLog(