vona-module-a-user 5.1.27 → 5.1.29

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.
@@ -1,6 +1,7 @@
1
- import type { IJwtClientRecord, IJwtSignOptions, IJwtToken, IJwtVerifyOptions, IPayloadData } from 'vona-module-a-jwt';
1
+ import type { IJwtClientRecord, IJwtSignOptions, IJwtToken, IPayloadData } from 'vona-module-a-jwt';
2
2
  import { BeanBase } from 'vona';
3
3
  import type { IAuth, IAuthIdRecord, ISigninOptions, TypeAuthTokenMode } from '../types/auth.ts';
4
+ import type { IAuthTokenCheckOptions } from '../types/authToken.ts';
4
5
  import type { IPassport } from '../types/passport.ts';
5
6
  import type { IRole, IRoleNameRecord } from '../types/role.ts';
6
7
  import type { IUser, IUserNameRecord } from '../types/user.ts';
@@ -22,16 +23,20 @@ export declare class BeanPassport extends BeanBase {
22
23
  get currentAuth(): IAuth | undefined;
23
24
  get currentRoles(): IRole[] | undefined;
24
25
  signin(passport: IPassport, options?: ISigninOptions): Promise<IJwtToken>;
26
+ createAuthToken(passport: IPassport, payloadData: IPayloadData, clientName?: keyof IJwtClientRecord, input?: unknown): Promise<IJwtToken>;
27
+ private _createAuthToken;
28
+ private _issueAuthToken;
29
+ private _attachAuthToken;
25
30
  signout(): Promise<void>;
26
31
  signinSystem<K extends keyof IAuthIdRecord>(authName: IAuthIdRecord[K], authId: K, name?: string, options?: ISigninOptions): Promise<IJwtToken>;
27
32
  signinMock(name?: keyof IUserNameRecord, options?: ISigninOptions): Promise<IJwtToken>;
28
33
  signinWithAnonymous(): Promise<void>;
29
34
  kickOut(user?: IUser): Promise<void>;
30
- checkAuthToken(accessToken?: string, clientName?: keyof IJwtClientRecord, options?: IJwtVerifyOptions): Promise<{
35
+ checkAuthToken(accessToken?: string, clientName?: keyof IJwtClientRecord, options?: IAuthTokenCheckOptions): Promise<{
31
36
  payloadData: IPayloadData;
32
37
  passport: IPassport;
33
38
  } | undefined>;
34
- refreshAuthToken(refreshToken: string): Promise<IJwtToken>;
39
+ refreshAuthToken(refreshToken: string, clientName?: keyof IJwtClientRecord, input?: unknown): Promise<IJwtToken>;
35
40
  createTempAuthToken(options?: IJwtSignOptions): Promise<string>;
36
41
  createOauthAuthToken(options?: IJwtSignOptions): Promise<string>;
37
42
  createOauthCode(options?: IJwtSignOptions): Promise<string>;
@@ -39,6 +44,8 @@ export declare class BeanPassport extends BeanBase {
39
44
  createAuthTokenFromOauthCode(code: string): Promise<IJwtToken>;
40
45
  checkRoleName(name: keyof IRoleNameRecord | (keyof IRoleNameRecord)[]): boolean;
41
46
  checkUserName(name: keyof IUserNameRecord | (keyof IUserNameRecord)[]): boolean;
47
+ private _getAuthTokenAdapter;
48
+ private _ensureAuthTokenPassport;
42
49
  private _getCurrentPayloadData;
43
50
  private _passportSerialize;
44
51
  private _handlePayloadData;
@@ -1 +1 @@
1
- {"version":3,"file":"bean.passport.d.ts","sourceRoot":"","sources":["../../src/bean/bean.passport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,SAAS,EACT,iBAAiB,EACjB,YAAY,EACb,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,QAAQ,EAA6B,MAAM,MAAM,CAAC;AAG3D,OAAO,KAAK,EACV,KAAK,EACL,aAAa,EAEb,cAAc,EACd,iBAAiB,EAClB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,SAAS,EAAoB,MAAM,sBAAsB,CAAC;AACxE,OAAO,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAI/D,qBACa,YAAa,SAAQ,QAAQ;IACxC,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,YAAY,CAAa;IAEjC,OAAO,KAAK,gBAAgB,GAS3B;IAED,OAAO,KAAK,eAAe,GAM1B;IAED,IAAW,aAAa,IAAI,iBAAiB,CAE5C;IAED,IAAW,eAAe,IAAI,OAAO,CAGpC;IAED,IAAW,WAAW,IAAI,OAAO,CAGhC;IAED,IAAW,eAAe,IAAI,OAAO,CAGpC;IAEM,mBAAmB,CAAC,QAAQ,CAAC,EAAE,SAAS,GAAG,IAAI;IAOzC,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC;IAKjC,UAAU,CAAC,QAAQ,EAAE,SAAS,GAAG,SAAS;IAKvD,IAAW,OAAO,IAAI,SAAS,GAAG,SAAS,CAE1C;IAED,IAAW,WAAW,IAAI,KAAK,GAAG,SAAS,CAE1C;IAED,IAAW,WAAW,IAAI,KAAK,GAAG,SAAS,CAE1C;IAED,IAAW,YAAY,IAAI,KAAK,EAAE,GAAG,SAAS,CAE7C;IAEY,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC;IA0BzE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBxB,YAAY,CAAC,CAAC,SAAS,MAAM,aAAa,EACrD,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,EAC1B,MAAM,EAAE,CAAC,EACT,IAAI,CAAC,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,SAAS,CAAC;IAUR,UAAU,CACrB,IAAI,CAAC,EAAE,MAAM,eAAe,EAC5B,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,SAAS,CAAC;IAIR,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAMpC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK;IAKpB,cAAc,CACzB,WAAW,CAAC,EAAE,MAAM,EACpB,UAAU,CAAC,EAAE,MAAM,gBAAgB,EACnC,OAAO,CAAC,EAAE,iBAAiB;;;;IAkChB,gBAAgB,CAAC,YAAY,EAAE,MAAM;IAuBrC,mBAAmB,CAAC,OAAO,CAAC,EAAE,eAAe;IAU7C,oBAAoB,CAAC,OAAO,CAAC,EAAE,eAAe;IAU9C,eAAe,CAAC,OAAO,CAAC,EAAE,eAAe;IAUzC,iCAAiC,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe;IAWhF,4BAA4B,CAAC,IAAI,EAAE,MAAM;IAS/C,aAAa,CAAC,IAAI,EAAE,MAAM,eAAe,GAAG,CAAC,MAAM,eAAe,CAAC,EAAE;IAWrE,aAAa,CAAC,IAAI,EAAE,MAAM,eAAe,GAAG,CAAC,MAAM,eAAe,CAAC,EAAE;IAS5E,OAAO,CAAC,sBAAsB;YAMhB,kBAAkB;YAiBlB,kBAAkB;YAuClB,wBAAwB;CA2BvC"}
1
+ {"version":3,"file":"bean.passport.d.ts","sourceRoot":"","sources":["../../src/bean/bean.passport.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -139,6 +139,7 @@ let BeanPassport = class BeanPassport extends BeanBase {
139
139
  }
140
140
  async setCurrent(passport) {
141
141
  this.ctx.state.passportPayloadData = undefined;
142
+ this.ctx.state.passportAuthTokenClient = undefined;
142
143
  this.ctx.state.passport = await this.passportAdapter.setCurrent(passport);
143
144
  }
144
145
  get current() {
@@ -154,33 +155,59 @@ let BeanPassport = class BeanPassport extends BeanBase {
154
155
  return this.ctx.state.passport?.roles;
155
156
  }
156
157
  async signin(passport, options) {
158
+ this._getAuthTokenAdapter('access', true);
157
159
  if (isNil(this.ctx.instanceName)) throw new Error('should specify instance');
158
160
  this.ensureAccountActive(passport);
159
161
  // current
160
162
  await this.setCurrent(passport);
161
163
  // event
162
164
  await this.scope.event.signin.emit(passport);
163
- // serialize: payloadData for client certificate
164
- const authTokenOptions = await this._combineAuthTokenOptions(passport.auth.authProviderId, options?.authToken, {
165
+ return await this._createAuthToken(passport, {}, 'access', undefined, options?.authToken);
166
+ }
167
+ async createAuthToken(passport, payloadData, clientName = 'access', input) {
168
+ this._ensureAuthTokenPassport(passport);
169
+ return await this._createAuthToken(passport, payloadData, clientName, input);
170
+ }
171
+ async _createAuthToken(passport, seed, clientName, input, options) {
172
+ if (isNil(this.ctx.instanceName)) throw new Error('should specify instance');
173
+ this.ensureAccountActive(passport);
174
+ const adapter = this._getAuthTokenAdapter(clientName, true);
175
+ const authTokenOptions = await this._combineAuthTokenOptions(passport.auth.authProviderId, options, {
165
176
  stateless: this.scope.config.authToken.stateless,
166
177
  strategy: this.scope.config.authToken.strategy.signin,
167
178
  ttl: this.scope.config.authToken.ttl
168
- });
169
- const payloadData = await this._passportSerialize(passport, authTokenOptions, true);
170
- // jwt token
179
+ }, adapter);
180
+ const payloadData = await this._passportSerialize(passport, authTokenOptions, true, clientName, seed, input);
181
+ return await this._issueAuthToken(passport, payloadData, clientName, adapter === this.authTokenAdapter && passport.auth?.id.toString() === '-1');
182
+ }
183
+ async _issueAuthToken(passport, payloadData, clientName, dev = false) {
184
+ const adapter = this._getAuthTokenAdapter(clientName, true);
185
+ const options = adapter.getJwtOptions?.(payloadData);
186
+ const accessClient = options?.accessClient ?? 'access';
187
+ const refreshClient = options?.refreshClient ?? 'refresh';
188
+ if (this._getAuthTokenAdapter(accessClient, true) !== adapter || this._getAuthTokenAdapter(refreshClient, true) !== adapter) {
189
+ return this.app.throw(403);
190
+ }
171
191
  const jwt = await this.bean.jwt.create(payloadData, {
172
- dev: passport.auth?.id.toString() === '-1'
192
+ dev,
193
+ ...options
173
194
  });
174
- this.ctx.state.passportPayloadData = payloadData;
195
+ await this._attachAuthToken(passport, payloadData, accessClient);
175
196
  return jwt;
176
197
  }
198
+ async _attachAuthToken(passport, payloadData, clientName) {
199
+ if (this.current !== passport) await this.setCurrent(passport);
200
+ this.ctx.state.passportPayloadData = payloadData;
201
+ this.ctx.state.passportAuthTokenClient = clientName;
202
+ }
177
203
  async signout() {
178
204
  // current
179
205
  const passport = this.current;
180
206
  if (!passport) return;
207
+ const adapter = this._getAuthTokenAdapter(this.ctx.state.passportAuthTokenClient ?? 'access');
181
208
  // removeAuthToken
182
- const payloadData = this.authTokenMode === 'session' ? this._getCurrentPayloadData() : await this.passportAdapter.serialize(passport);
183
- await this.authTokenAdapter.remove(payloadData);
209
+ const payloadData = adapter === this.authTokenAdapter && this.authTokenMode === 'auth' ? await this.passportAdapter.serialize(passport) : this._getCurrentPayloadData();
210
+ await adapter.remove(payloadData);
184
211
  // event
185
212
  await this.scope.event.signout.emit(passport);
186
213
  // ok
@@ -216,56 +243,56 @@ let BeanPassport = class BeanPassport extends BeanBase {
216
243
  if (!user) return;
217
244
  await this.authTokenAdapter.removeAll(user);
218
245
  }
219
- async checkAuthToken(accessToken, clientName, options) {
220
- clientName = clientName ?? 'access';
246
+ async checkAuthToken(accessToken, clientName = 'access', options) {
221
247
  const [payloadData, err] = await catchError(() => {
222
248
  return this.bean.jwt.get(clientName).verify(accessToken, options);
223
249
  });
224
250
  if (err) {
225
- if (['access', 'refresh'].includes(clientName)) {
251
+ if (this.$scope.jwt.config.clients[clientName]?.authTokenAdapter || ['access', 'refresh'].includes(clientName)) {
226
252
  err.code = 401;
227
253
  }
228
254
  throw err;
229
255
  }
230
256
  if (!payloadData) return; // no jwt token
231
- const passport = await this.passportAdapter.deserialize(payloadData);
257
+ const adapter = this._getAuthTokenAdapter(clientName);
258
+ const passport = adapter.deserialize ? await adapter.deserialize(payloadData) : await this.passportAdapter.deserialize(payloadData);
232
259
  if (!passport) return this.app.throw(401);
233
260
  this.ensureAccountActive(passport);
234
- // verified
235
261
  const authTokenOptions = await this._combineAuthTokenOptions(passport.auth.authProviderId, undefined, {
236
262
  stateless: this.scope.config.authToken.stateless
237
- });
263
+ }, adapter);
264
+ const operation = options?.operation ?? 'check';
238
265
  if (!authTokenOptions.stateless) {
239
- const verified = await this.authTokenAdapter.verify(payloadData);
266
+ const verified = await adapter.verify(payloadData, {
267
+ operation,
268
+ clientName,
269
+ input: options?.input
270
+ });
240
271
  if (!verified) return this.app.throw(401);
241
272
  }
242
- // setCurrent
243
- await this.setCurrent(passport);
244
- this.ctx.state.passportPayloadData = payloadData;
273
+ if (operation !== 'refresh') await this._attachAuthToken(passport, payloadData, clientName);
245
274
  return {
246
275
  payloadData,
247
276
  passport
248
277
  };
249
278
  }
250
- async refreshAuthToken(refreshToken) {
251
- // checkAuthToken by code
252
- const checkRes = await this.checkAuthToken(refreshToken, 'refresh');
279
+ async refreshAuthToken(refreshToken, clientName = 'refresh', input) {
280
+ const adapter = this._getAuthTokenAdapter(clientName, true);
281
+ const checkRes = await this.checkAuthToken(refreshToken, clientName, {
282
+ operation: 'refresh',
283
+ input
284
+ });
253
285
  if (!checkRes) return this.app.throw(401);
254
- let {
255
- payloadData,
286
+ const {
256
287
  passport
257
288
  } = checkRes;
258
- // refreshAuthToken
259
289
  const authTokenOptions = await this._combineAuthTokenOptions(passport.auth.authProviderId, undefined, {
260
290
  stateless: this.scope.config.authToken.stateless,
261
291
  strategy: this.scope.config.authToken.strategy.refreshAuthToken,
262
292
  ttl: this.scope.config.authToken.ttl
263
- });
264
- payloadData = await this._handlePayloadData(payloadData, authTokenOptions);
265
- // jwt token
266
- const jwt = await this.bean.jwt.create(payloadData);
267
- this.ctx.state.passportPayloadData = payloadData;
268
- return jwt;
293
+ }, adapter);
294
+ const payloadData = await this._handlePayloadData(checkRes.payloadData, authTokenOptions, adapter, input);
295
+ return await this._issueAuthToken(passport, payloadData, clientName);
269
296
  }
270
297
  // only created by accessToken
271
298
  async createTempAuthToken(options) {
@@ -286,7 +313,7 @@ let BeanPassport = class BeanPassport extends BeanBase {
286
313
  // payloadData
287
314
  const payloadData = await this._passportSerialize(passport, {
288
315
  strategy: 'reuse'
289
- });
316
+ }, false, 'oauth');
290
317
  // jwt token
291
318
  return await this.bean.jwt.createOauthAuthToken(payloadData, options);
292
319
  }
@@ -297,11 +324,12 @@ let BeanPassport = class BeanPassport extends BeanBase {
297
324
  // payloadData
298
325
  const payloadData = await this._passportSerialize(passport, {
299
326
  strategy: 'reuse'
300
- });
327
+ }, false, 'code');
301
328
  // code
302
329
  return await this.bean.jwt.createOauthCode(payloadData, options);
303
330
  }
304
331
  async createOauthCodeFromOauthAuthToken(accessToken, options) {
332
+ this._getAuthTokenAdapter('code', true);
305
333
  // payloadData
306
334
  const payloadData = this.authTokenMode === 'session' ? (await this.checkAuthToken(accessToken))?.payloadData : await this.bean.jwt.get('access').verify(accessToken);
307
335
  if (!payloadData) return this.app.throw(401);
@@ -309,14 +337,15 @@ let BeanPassport = class BeanPassport extends BeanBase {
309
337
  return await this.bean.jwt.createOauthCode(payloadData, options);
310
338
  }
311
339
  async createAuthTokenFromOauthCode(code) {
340
+ this._getAuthTokenAdapter('access', true);
312
341
  // checkAuthToken by code
313
342
  const checkRes = await this.checkAuthToken(code, 'code');
314
343
  if (!checkRes) return this.app.throw(401);
315
344
  const {
316
- payloadData
345
+ payloadData,
346
+ passport
317
347
  } = checkRes;
318
- // jwt token
319
- return await this.bean.jwt.create(payloadData);
348
+ return await this._issueAuthToken(passport, payloadData, 'access');
320
349
  }
321
350
  checkRoleName(name) {
322
351
  const user = this.bean.passport.currentUser;
@@ -336,57 +365,73 @@ let BeanPassport = class BeanPassport extends BeanBase {
336
365
  if (!optionsName.includes(userName)) return false;
337
366
  return true;
338
367
  }
368
+ _getAuthTokenAdapter(clientName, issuance = false) {
369
+ const client = this.$scope.jwt.config.clients[clientName];
370
+ if (!client) throw new Error(`jwt client not found: ${clientName}`);
371
+ const adapter = client.authTokenAdapter ? this.bean._getBean(beanFullNameFromOnionName(client.authTokenAdapter, 'service')) : this.authTokenAdapter;
372
+ if (!adapter) return this.app.throw(401);
373
+ // Check before callers replace current: scoped authority cannot become ordinary credentials.
374
+ const source = this.ctx.state.passportAuthTokenClient;
375
+ if (issuance && source) {
376
+ const sourceAdapter = this._getAuthTokenAdapter(source);
377
+ if (sourceAdapter !== this.authTokenAdapter && sourceAdapter !== adapter) return this.app.throw(403);
378
+ }
379
+ return adapter;
380
+ }
381
+ _ensureAuthTokenPassport(passport) {
382
+ if (!passport.user || passport.user.anonymous || !passport.auth) return this.app.throw(401);
383
+ this.ensureAccountActive(passport);
384
+ }
339
385
  _getCurrentPayloadData() {
340
386
  const payloadData = this.ctx.state.passportPayloadData;
341
387
  if (!payloadData?.[this.scope.config.payloadData.fields.token]) return this.app.throw(401);
342
388
  return payloadData;
343
389
  }
344
- async _passportSerialize(passport, authTokenOptions, signin = false) {
345
- if (this.authTokenMode === 'session') {
390
+ async _passportSerialize(passport, authTokenOptions, signin = false, clientName = 'access', seed = {}, input) {
391
+ const adapter = this._getAuthTokenAdapter(clientName, true);
392
+ if (adapter === this.authTokenAdapter && this.authTokenMode === 'session') {
346
393
  if (signin) {
347
- const payloadData = await this.passportAdapter.serialize(passport);
348
- return await this.authTokenAdapter.create(payloadData, authTokenOptions?.ttl);
394
+ const payloadData = {
395
+ ...seed,
396
+ ...(await this.passportAdapter.serialize(passport))
397
+ };
398
+ return await adapter.create(payloadData, authTokenOptions?.ttl, input);
349
399
  }
350
- return await this._handlePayloadData(this._getCurrentPayloadData(), authTokenOptions);
400
+ return await this._handlePayloadData(this._getCurrentPayloadData(), authTokenOptions, adapter, input);
351
401
  }
352
- // serialize
353
- const payloadData = await this.passportAdapter.serialize(passport);
354
- return await this._handlePayloadData(payloadData, authTokenOptions);
402
+ const payloadData = !signin && adapter !== this.authTokenAdapter ? this._getCurrentPayloadData() : {
403
+ ...seed,
404
+ ...(await this.passportAdapter.serialize(passport))
405
+ };
406
+ return await this._handlePayloadData(payloadData, authTokenOptions, adapter, input);
355
407
  }
356
- async _handlePayloadData(payloadData, authTokenOptions) {
357
- // auth token
408
+ async _handlePayloadData(payloadData, authTokenOptions, adapter = this.authTokenAdapter, input) {
358
409
  const stateless = authTokenOptions?.stateless;
359
410
  const strategy = authTokenOptions?.strategy ?? 'refresh';
360
411
  const ttl = authTokenOptions?.ttl;
361
- if (this.authTokenMode === 'session') {
412
+ if (adapter === this.authTokenAdapter && this.authTokenMode === 'session') {
362
413
  if (stateless) throw new Error('Session auth-token mode requires stateful authentication');
363
414
  if (strategy === 'reissue') {
364
415
  throw new Error('Session auth-token mode does not support the reissue refresh strategy');
365
416
  }
366
- const verified = await this.authTokenAdapter.verify(payloadData);
417
+ const verified = await adapter.verify(payloadData);
367
418
  if (!verified) return this.app.throw(401);
368
- if (strategy === 'refresh') {
369
- await this.authTokenAdapter.refresh(payloadData, ttl);
370
- }
419
+ if (strategy === 'refresh') await adapter.refresh(payloadData, ttl);
371
420
  return payloadData;
372
421
  }
373
422
  if (stateless) {
374
- // do nothing
375
423
  return payloadData;
376
424
  } else if (strategy === 'reissue') {
377
- return await this.authTokenAdapter.create(payloadData, ttl);
425
+ return await adapter.create(payloadData, ttl, input);
378
426
  } else {
379
- const payloadData2 = await this.authTokenAdapter.retrieve(payloadData);
380
- if (!payloadData2) {
381
- return await this.authTokenAdapter.create(payloadData, ttl);
382
- }
383
- if (strategy === 'refresh') {
384
- await this.authTokenAdapter.refresh(payloadData2, ttl);
385
- }
427
+ const payloadData2 = await adapter.retrieve(payloadData);
428
+ if (!payloadData2) return await adapter.create(payloadData, ttl, input);
429
+ if (strategy === 'refresh') await adapter.refresh(payloadData2, ttl);
386
430
  return payloadData2;
387
431
  }
388
432
  }
389
- async _combineAuthTokenOptions(authProviderId, authTokenOptionsCustom, authTokenOptionsDefault) {
433
+ async _combineAuthTokenOptions(authProviderId, authTokenOptionsCustom, authTokenOptionsDefault, adapter = this.authTokenAdapter) {
434
+ if (adapter.options) return adapter.options;
390
435
  let authTokenOptions = authTokenOptionsDefault;
391
436
  if (this.authTokenMode === 'session') {
392
437
  authTokenOptions = {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/bean/guard.passport.ts","../src/bean/guard.roleName.ts","../src/lib/auth.ts","../src/bean/bean.passport.ts","../src/bean/bean.role.ts","../src/bean/bean.user.ts","../src/service/authTokenAdapter.ts","../src/service/redisToken.ts","../src/bean/cacheRedis.authToken.ts","../src/bean/event.activate.ts","../src/bean/event.createAnonymous.ts","../src/bean/event.register.ts","../src/bean/event.roleMembershipChanged.ts","../src/bean/event.signin.ts","../src/bean/event.signout.ts","../src/bean/meta.printTip.ts","../src/bean/meta.runtime.ts","../src/config/config.ts","../src/config/errors.ts","../src/main.ts","../src/.metadata/index.ts","../src/config/locale/en-us.ts","../src/config/locale/zh-cn.ts","../src/.metadata/locales.ts","../src/lib/passport.ts","../src/lib/user.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["GuardPassport","BeanBase","execute","options","next","bean","passport","current","checkAuthToken","_","err","catchError","public","checkErrorJwtExpiredAndThrow","ctx","headers","isAuthenticated","app","throw","signinWithAnonymous","isAccountActive","activated","isActivated","innerAccess","__decorate","Guard","Global","__z_BeanInfo","module","GuardRoleName","GuardBase","check","name","checkRoleName","$parseAuthTokenMode","value","undefined","Error","$getAuthTokenMode","config","mode","stateless","strategy","refreshAuthToken","$getAuthIdSystem","_authName","authId","BeanPassport","constructor","args","_authTokenAdapter","_passportAdapter","_mockCounter","authTokenAdapter","beanFullName","beanFullNameFromOnionName","scope","adapter","authToken","_getBean","passportAdapter","authTokenMode","user","currentUser","anonymous","accountStatus","ensureAccountActive","isSystemAdmin","setCurrent","state","passportPayloadData","currentAuth","auth","currentRoles","roles","signin","isNil","instanceName","event","emit","authTokenOptions","_combineAuthTokenOptions","authProviderId","ttl","payloadData","_passportSerialize","jwt","create","dev","id","toString","signout","_getCurrentPayloadData","serialize","remove","signinSystem","authName","findOneByName","role","findAllByUserId","signinMock","userAnonymous","createAnonymous","kickOut","removeAll","accessToken","clientName","get","verify","includes","code","deserialize","verified","refreshToken","checkRes","_handlePayloadData","createTempAuthToken","createOauthAuthToken","createOauthCode","createOauthCodeFromOauthAuthToken","createAuthTokenFromOauthCode","roleNames","map","item","optionsName","Array","isArray","some","roleName","checkUserName","userName","fields","token","refresh","payloadData2","retrieve","authTokenOptionsCustom","authTokenOptionsDefault","clientOptions","authProvider","getClientOptions","Bean","BeanRole","_roleAdapter","roleAdapter","findOneById","findOne","userId","addUserId","changed","emitMembershipChanged","removeUserId","replaceUserRoleIds","roleIds","result","changedRoleIds","addedRoleIds","removedRoleIds","length","roleMembershipChanged","userIds","uniqueIds","ids","values","Map","set","String","entries","toSorted","left","right","localeCompare","Core","transaction","prototype","BeanUser","_userAdapter","userAdapter","activate","setActivated","register","confirmed","randomUsername","autoActivate","data","userCheck","error","UserExists","Date","now","substring","userData","userNew","registerByProfile","profile","userOfProfile","updateById","update","removeById","ServiceAuthTokenAdapter","authIdStr","_getAuthId","createHash","uuidv4","payloadDataNew","Object","assign","service","redisToken","Service","ServiceRedisToken","_getToken","key","_getAuthRedisKey","cacheRedis","expire","del","keyPrefix","_getAuthRedisKeyPrefix","keys","lookupKeys","mdel","instance","_getUserId","CacheRedisAuthToken","ServiceCacheRedisBase","CacheRedis","disableTransactionCompensate","EventActivate","BeanEventBase","Event","EventCreateAnonymous","EventRegister","EventRoleMembershipChanged","EventSignin","EventSignout","MetaPrintTip","meta","isDev","title","message","Meta","MetaRuntime","isProd","configUser","env","AUTH_TOKEN_MODE","errors","Main","BeanSimple","moduleLoading","moduleLoaded","modules","defineProperty","context","enumerable","configLoaded","_config","ScopeModuleAUser","BeanScopeBase","Scope","locales","locale_en_us","locale_zh_cn","$locale","$makeLocaleMagic","Public","_public","Aspect","guardGlobal","Activated","RoleName","guard","SystemAdmin","Rbac","decorator","target","propertyKey","descriptor","Passport","systemAdmin","rbac","$getUserIdSystem","_userName"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/bean/guard.passport.ts","../src/bean/guard.roleName.ts","../src/lib/auth.ts","../src/bean/bean.passport.ts","../src/bean/bean.role.ts","../src/bean/bean.user.ts","../src/service/authTokenAdapter.ts","../src/service/redisToken.ts","../src/bean/cacheRedis.authToken.ts","../src/bean/event.activate.ts","../src/bean/event.createAnonymous.ts","../src/bean/event.register.ts","../src/bean/event.roleMembershipChanged.ts","../src/bean/event.signin.ts","../src/bean/event.signout.ts","../src/bean/meta.printTip.ts","../src/bean/meta.runtime.ts","../src/config/config.ts","../src/config/errors.ts","../src/main.ts","../src/.metadata/index.ts","../src/config/locale/en-us.ts","../src/config/locale/zh-cn.ts","../src/.metadata/locales.ts","../src/lib/passport.ts","../src/lib/user.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["GuardPassport","BeanBase","execute","options","next","bean","passport","current","checkAuthToken","_","err","catchError","public","checkErrorJwtExpiredAndThrow","ctx","headers","isAuthenticated","app","throw","signinWithAnonymous","isAccountActive","activated","isActivated","innerAccess","__decorate","Guard","Global","__z_BeanInfo","module","GuardRoleName","GuardBase","check","name","checkRoleName","$parseAuthTokenMode","value","undefined","Error","$getAuthTokenMode","config","mode","stateless","strategy","refreshAuthToken","$getAuthIdSystem","_authName","authId","BeanPassport","constructor","args","_authTokenAdapter","_passportAdapter","_mockCounter","authTokenAdapter","beanFullName","beanFullNameFromOnionName","scope","adapter","authToken","_getBean","passportAdapter","authTokenMode","user","currentUser","anonymous","accountStatus","ensureAccountActive","isSystemAdmin","setCurrent","state","passportPayloadData","passportAuthTokenClient","currentAuth","auth","currentRoles","roles","signin","_getAuthTokenAdapter","isNil","instanceName","event","emit","_createAuthToken","createAuthToken","payloadData","clientName","input","_ensureAuthTokenPassport","seed","authTokenOptions","_combineAuthTokenOptions","authProviderId","ttl","_passportSerialize","_issueAuthToken","id","toString","dev","getJwtOptions","accessClient","refreshClient","jwt","create","_attachAuthToken","signout","serialize","_getCurrentPayloadData","remove","signinSystem","authName","findOneByName","role","findAllByUserId","signinMock","userAnonymous","createAnonymous","kickOut","removeAll","accessToken","get","verify","$scope","clients","includes","code","deserialize","operation","verified","refreshToken","checkRes","_handlePayloadData","createTempAuthToken","createOauthAuthToken","createOauthCode","createOauthCodeFromOauthAuthToken","createAuthTokenFromOauthCode","roleNames","map","item","optionsName","Array","isArray","some","roleName","checkUserName","userName","issuance","client","source","sourceAdapter","fields","token","refresh","payloadData2","retrieve","authTokenOptionsCustom","authTokenOptionsDefault","clientOptions","authProvider","getClientOptions","Bean","BeanRole","_roleAdapter","roleAdapter","findOneById","findOne","userId","addUserId","changed","emitMembershipChanged","removeUserId","replaceUserRoleIds","roleIds","result","changedRoleIds","addedRoleIds","removedRoleIds","length","roleMembershipChanged","userIds","uniqueIds","ids","values","Map","set","String","entries","toSorted","left","right","localeCompare","Core","transaction","prototype","BeanUser","_userAdapter","userAdapter","activate","setActivated","register","confirmed","randomUsername","autoActivate","data","userCheck","error","UserExists","Date","now","substring","userData","userNew","registerByProfile","profile","userOfProfile","updateById","update","removeById","ServiceAuthTokenAdapter","authIdStr","_getAuthId","createHash","uuidv4","payloadDataNew","Object","assign","service","redisToken","Service","ServiceRedisToken","_getToken","key","_getAuthRedisKey","cacheRedis","expire","del","keyPrefix","_getAuthRedisKeyPrefix","keys","lookupKeys","mdel","instance","_getUserId","CacheRedisAuthToken","ServiceCacheRedisBase","CacheRedis","disableTransactionCompensate","EventActivate","BeanEventBase","Event","EventCreateAnonymous","EventRegister","EventRoleMembershipChanged","EventSignin","EventSignout","MetaPrintTip","meta","isDev","title","message","Meta","MetaRuntime","isProd","configUser","env","AUTH_TOKEN_MODE","errors","Main","BeanSimple","moduleLoading","moduleLoaded","modules","defineProperty","context","enumerable","configLoaded","_config","ScopeModuleAUser","BeanScopeBase","Scope","locales","locale_en_us","locale_zh_cn","$locale","$makeLocaleMagic","Public","_public","Aspect","guardGlobal","Activated","RoleName","guard","SystemAdmin","Rbac","decorator","target","propertyKey","descriptor","Passport","systemAdmin","rbac","$getUserIdSystem","_userName"],"mappings":"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"}
@@ -1,11 +1,31 @@
1
- import type { IPayloadData } from 'vona-module-a-jwt';
1
+ import type { IServiceRecord } from 'vona-module-a-bean';
2
+ import type { IJwtClientRecord, IJwtCreateOptions, IJwtVerifyOptions, IPayloadData } from 'vona-module-a-jwt';
3
+ import type { IAuthTokenOptions } from './auth.ts';
4
+ import type { IPassport } from './passport.ts';
2
5
  import type { IUser } from './user.ts';
6
+ export interface IAuthTokenVerifyOptions {
7
+ operation: 'check' | 'refresh';
8
+ clientName?: keyof IJwtClientRecord;
9
+ input?: unknown;
10
+ }
11
+ export interface IAuthTokenCheckOptions extends IJwtVerifyOptions {
12
+ operation?: IAuthTokenVerifyOptions['operation'];
13
+ input?: unknown;
14
+ }
3
15
  export interface IAuthTokenAdapter {
4
- create(payloadData: IPayloadData, ttl?: number): Promise<IPayloadData>;
16
+ readonly options?: Readonly<IAuthTokenOptions>;
17
+ deserialize?(payloadData: IPayloadData): Promise<IPassport | undefined>;
18
+ getJwtOptions?(payloadData: IPayloadData): IJwtCreateOptions;
19
+ create(payloadData: IPayloadData, ttl?: number, input?: unknown): Promise<IPayloadData>;
5
20
  retrieve(payloadData: IPayloadData): Promise<IPayloadData | undefined>;
6
- verify(payloadData: IPayloadData): Promise<boolean>;
21
+ verify(payloadData: IPayloadData, options?: IAuthTokenVerifyOptions): Promise<boolean>;
7
22
  refresh(payloadData: IPayloadData, ttl?: number): Promise<void>;
8
23
  remove(payloadData: IPayloadData): Promise<void>;
9
24
  removeAll(user: IUser): Promise<void>;
10
25
  }
26
+ declare module 'vona-module-a-jwt' {
27
+ interface IJwtClientOptions {
28
+ authTokenAdapter?: keyof IServiceRecord;
29
+ }
30
+ }
11
31
  //# sourceMappingURL=authToken.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"authToken.d.ts","sourceRoot":"","sources":["../../src/types/authToken.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAEvC,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,WAAW,EAAE,YAAY,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACvE,QAAQ,CAAC,WAAW,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAAC;IACvE,MAAM,CAAC,WAAW,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACpD,OAAO,CAAC,WAAW,EAAE,YAAY,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,MAAM,CAAC,WAAW,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,SAAS,CAAC,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC"}
1
+ {"version":3,"file":"authToken.d.ts","sourceRoot":"","sources":["../../src/types/authToken.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EACV,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACb,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAEvC,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,gBAAgB,CAAC;IACpC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,sBAAuB,SAAQ,iBAAiB;IAC/D,SAAS,CAAC,EAAE,uBAAuB,CAAC,WAAW,CAAC,CAAC;IACjD,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IAC/C,WAAW,CAAC,CAAC,WAAW,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;IACxE,aAAa,CAAC,CAAC,WAAW,EAAE,YAAY,GAAG,iBAAiB,CAAC;IAC7D,MAAM,CAAC,WAAW,EAAE,YAAY,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACxF,QAAQ,CAAC,WAAW,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAAC;IACvE,MAAM,CAAC,WAAW,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACvF,OAAO,CAAC,WAAW,EAAE,YAAY,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,MAAM,CAAC,WAAW,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,SAAS,CAAC,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AAGD,OAAO,QAAQ,mBAAmB,CAAC;IACjC,UAAiB,iBAAiB;QAChC,gBAAgB,CAAC,EAAE,MAAM,cAAc,CAAC;KACzC;CACF"}
@@ -1,4 +1,4 @@
1
- import type { IPayloadData } from 'vona-module-a-jwt';
1
+ import type { IJwtClientRecord, IPayloadData } from 'vona-module-a-jwt';
2
2
  import type { IAuth } from './auth.ts';
3
3
  import type { IRole } from './role.ts';
4
4
  import type { IUser } from './user.ts';
@@ -17,6 +17,7 @@ declare module 'vona' {
17
17
  interface ContextState {
18
18
  passport?: IPassport;
19
19
  passportPayloadData?: IPayloadData;
20
+ passportAuthTokenClient?: keyof IJwtClientRecord;
20
21
  }
21
22
  interface VonaContext {
22
23
  get user(): IUser;
@@ -1 +1 @@
1
- {"version":3,"file":"passport.d.ts","sourceRoot":"","sources":["../../src/types/passport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAEvC,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,EAAE,KAAK,CAAC;IACb,IAAI,CAAC,EAAE,KAAK,CAAC;IACb,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,aAAa,CAAC,QAAQ,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACjE,UAAU,CAAC,QAAQ,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;IAC5E,SAAS,CAAC,QAAQ,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACtD,WAAW,CAAC,WAAW,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;CACxE;AAED,OAAO,QAAQ,MAAM,CAAC;IACpB,UAAiB,YAAY;QAC3B,QAAQ,CAAC,EAAE,SAAS,CAAC;QACrB,mBAAmB,CAAC,EAAE,YAAY,CAAC;KACpC;IAED,UAAiB,WAAW;QAC1B,IAAI,IAAI,IAAI,KAAK,CAAC;QAClB,IAAI,QAAQ,IAAI,SAAS,CAAC;KAC3B;CACF"}
1
+ {"version":3,"file":"passport.d.ts","sourceRoot":"","sources":["../../src/types/passport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAExE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAEvC,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,EAAE,KAAK,CAAC;IACb,IAAI,CAAC,EAAE,KAAK,CAAC;IACb,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,aAAa,CAAC,QAAQ,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACjE,UAAU,CAAC,QAAQ,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;IAC5E,SAAS,CAAC,QAAQ,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACtD,WAAW,CAAC,WAAW,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;CACxE;AAED,OAAO,QAAQ,MAAM,CAAC;IACpB,UAAiB,YAAY;QAC3B,QAAQ,CAAC,EAAE,SAAS,CAAC;QACrB,mBAAmB,CAAC,EAAE,YAAY,CAAC;QACnC,uBAAuB,CAAC,EAAE,MAAM,gBAAgB,CAAC;KAClD;IAED,UAAiB,WAAW;QAC1B,IAAI,IAAI,IAAI,KAAK,CAAC;QAClB,IAAI,QAAQ,IAAI,SAAS,CAAC;KAC3B;CACF"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "vona-module-a-user",
3
- "version": "5.1.27",
4
- "gitHead": "92441b184c11319b1f477f9bb6fdb1e5e47404ed",
3
+ "version": "5.1.29",
4
+ "gitHead": "d4ca173cd034aee6e73d037f86745c9919218f80",
5
5
  "description": "",
6
6
  "keywords": [
7
7
  "Vona Module"
@@ -1,10 +1,4 @@
1
- import type {
2
- IJwtClientRecord,
3
- IJwtSignOptions,
4
- IJwtToken,
5
- IJwtVerifyOptions,
6
- IPayloadData,
7
- } from 'vona-module-a-jwt';
1
+ import type { IJwtClientRecord, IJwtSignOptions, IJwtToken, IPayloadData } from 'vona-module-a-jwt';
8
2
 
9
3
  import { catchError, isNil } from '@cabloy/utils';
10
4
  import { BeanBase, beanFullNameFromOnionName } from 'vona';
@@ -17,7 +11,7 @@ import type {
17
11
  ISigninOptions,
18
12
  TypeAuthTokenMode,
19
13
  } from '../types/auth.ts';
20
- import type { IAuthTokenAdapter } from '../types/authToken.ts';
14
+ import type { IAuthTokenAdapter, IAuthTokenCheckOptions } from '../types/authToken.ts';
21
15
  import type { IPassport, IPassportAdapter } from '../types/passport.ts';
22
16
  import type { IRole, IRoleNameRecord } from '../types/role.ts';
23
17
  import type { IUser, IUserNameRecord } from '../types/user.ts';
@@ -82,6 +76,7 @@ export class BeanPassport extends BeanBase {
82
76
 
83
77
  public async setCurrent(passport: IPassport | undefined) {
84
78
  this.ctx.state.passportPayloadData = undefined;
79
+ this.ctx.state.passportAuthTokenClient = undefined;
85
80
  this.ctx.state.passport = await this.passportAdapter.setCurrent(passport);
86
81
  }
87
82
 
@@ -102,41 +97,107 @@ export class BeanPassport extends BeanBase {
102
97
  }
103
98
 
104
99
  public async signin(passport: IPassport, options?: ISigninOptions): Promise<IJwtToken> {
100
+ this._getAuthTokenAdapter('access', true);
105
101
  if (isNil(this.ctx.instanceName)) throw new Error('should specify instance');
106
102
  this.ensureAccountActive(passport);
107
103
  // current
108
104
  await this.setCurrent(passport);
109
105
  // event
110
106
  await this.scope.event.signin.emit(passport);
111
- // serialize: payloadData for client certificate
107
+ return await this._createAuthToken(passport, {}, 'access', undefined, options?.authToken);
108
+ }
109
+
110
+ public async createAuthToken(
111
+ passport: IPassport,
112
+ payloadData: IPayloadData,
113
+ clientName: keyof IJwtClientRecord = 'access',
114
+ input?: unknown,
115
+ ): Promise<IJwtToken> {
116
+ this._ensureAuthTokenPassport(passport);
117
+ return await this._createAuthToken(passport, payloadData, clientName, input);
118
+ }
119
+
120
+ private async _createAuthToken(
121
+ passport: IPassport,
122
+ seed: IPayloadData,
123
+ clientName: keyof IJwtClientRecord,
124
+ input?: unknown,
125
+ options?: IAuthTokenOptions,
126
+ ): Promise<IJwtToken> {
127
+ if (isNil(this.ctx.instanceName)) throw new Error('should specify instance');
128
+ this.ensureAccountActive(passport);
129
+ const adapter = this._getAuthTokenAdapter(clientName, true);
112
130
  const authTokenOptions = await this._combineAuthTokenOptions(
113
131
  passport.auth!.authProviderId,
114
- options?.authToken,
132
+ options,
115
133
  {
116
134
  stateless: this.scope.config.authToken.stateless,
117
135
  strategy: this.scope.config.authToken.strategy.signin,
118
136
  ttl: this.scope.config.authToken.ttl,
119
137
  },
138
+ adapter,
120
139
  );
121
- const payloadData = await this._passportSerialize(passport, authTokenOptions, true);
122
- // jwt token
140
+ const payloadData = await this._passportSerialize(
141
+ passport,
142
+ authTokenOptions,
143
+ true,
144
+ clientName,
145
+ seed,
146
+ input,
147
+ );
148
+ return await this._issueAuthToken(
149
+ passport,
150
+ payloadData,
151
+ clientName,
152
+ adapter === this.authTokenAdapter && passport.auth?.id.toString() === '-1',
153
+ );
154
+ }
155
+
156
+ private async _issueAuthToken(
157
+ passport: IPassport,
158
+ payloadData: IPayloadData,
159
+ clientName: keyof IJwtClientRecord,
160
+ dev = false,
161
+ ): Promise<IJwtToken> {
162
+ const adapter = this._getAuthTokenAdapter(clientName, true);
163
+ const options = adapter.getJwtOptions?.(payloadData);
164
+ const accessClient = options?.accessClient ?? 'access';
165
+ const refreshClient = options?.refreshClient ?? 'refresh';
166
+ if (
167
+ this._getAuthTokenAdapter(accessClient, true) !== adapter ||
168
+ this._getAuthTokenAdapter(refreshClient, true) !== adapter
169
+ ) {
170
+ return this.app.throw(403);
171
+ }
123
172
  const jwt = await this.bean.jwt.create(payloadData, {
124
- dev: passport.auth?.id.toString() === '-1',
173
+ dev,
174
+ ...options,
125
175
  });
126
- this.ctx.state.passportPayloadData = payloadData;
176
+ await this._attachAuthToken(passport, payloadData, accessClient);
127
177
  return jwt;
128
178
  }
129
179
 
180
+ private async _attachAuthToken(
181
+ passport: IPassport,
182
+ payloadData: IPayloadData,
183
+ clientName: keyof IJwtClientRecord,
184
+ ) {
185
+ if (this.current !== passport) await this.setCurrent(passport);
186
+ this.ctx.state.passportPayloadData = payloadData;
187
+ this.ctx.state.passportAuthTokenClient = clientName;
188
+ }
189
+
130
190
  public async signout(): Promise<void> {
131
191
  // current
132
192
  const passport = this.current;
133
193
  if (!passport) return;
194
+ const adapter = this._getAuthTokenAdapter(this.ctx.state.passportAuthTokenClient ?? 'access');
134
195
  // removeAuthToken
135
196
  const payloadData =
136
- this.authTokenMode === 'session'
137
- ? this._getCurrentPayloadData()
138
- : await this.passportAdapter.serialize(passport);
139
- await this.authTokenAdapter.remove(payloadData);
197
+ adapter === this.authTokenAdapter && this.authTokenMode === 'auth'
198
+ ? await this.passportAdapter.serialize(passport)
199
+ : this._getCurrentPayloadData();
200
+ await adapter.remove(payloadData);
140
201
  // event
141
202
  await this.scope.event.signout.emit(passport);
142
203
  // ok
@@ -178,47 +239,59 @@ export class BeanPassport extends BeanBase {
178
239
 
179
240
  public async checkAuthToken(
180
241
  accessToken?: string,
181
- clientName?: keyof IJwtClientRecord,
182
- options?: IJwtVerifyOptions,
242
+ clientName: keyof IJwtClientRecord = 'access',
243
+ options?: IAuthTokenCheckOptions,
183
244
  ) {
184
- clientName = clientName ?? 'access';
185
245
  const [payloadData, err] = await catchError(() => {
186
246
  return this.bean.jwt.get(clientName).verify(accessToken, options);
187
247
  });
188
248
  if (err) {
189
- if (['access', 'refresh'].includes(clientName)) {
249
+ if (
250
+ this.$scope.jwt.config.clients[clientName]?.authTokenAdapter ||
251
+ ['access', 'refresh'].includes(clientName)
252
+ ) {
190
253
  err.code = 401;
191
254
  }
192
255
  throw err;
193
256
  }
194
257
  if (!payloadData) return; // no jwt token
195
- const passport = await this.passportAdapter.deserialize(payloadData);
258
+ const adapter = this._getAuthTokenAdapter(clientName);
259
+ const passport = adapter.deserialize
260
+ ? await adapter.deserialize(payloadData)
261
+ : await this.passportAdapter.deserialize(payloadData);
196
262
  if (!passport) return this.app.throw(401);
197
263
  this.ensureAccountActive(passport);
198
- // verified
199
264
  const authTokenOptions = await this._combineAuthTokenOptions(
200
265
  passport.auth!.authProviderId,
201
266
  undefined,
202
- {
203
- stateless: this.scope.config.authToken.stateless,
204
- },
267
+ { stateless: this.scope.config.authToken.stateless },
268
+ adapter,
205
269
  );
270
+ const operation = options?.operation ?? 'check';
206
271
  if (!authTokenOptions.stateless) {
207
- const verified = await this.authTokenAdapter.verify(payloadData);
272
+ const verified = await adapter.verify(payloadData, {
273
+ operation,
274
+ clientName,
275
+ input: options?.input,
276
+ });
208
277
  if (!verified) return this.app.throw(401);
209
278
  }
210
- // setCurrent
211
- await this.setCurrent(passport);
212
- this.ctx.state.passportPayloadData = payloadData;
279
+ if (operation !== 'refresh') await this._attachAuthToken(passport, payloadData, clientName);
213
280
  return { payloadData, passport };
214
281
  }
215
282
 
216
- public async refreshAuthToken(refreshToken: string) {
217
- // checkAuthToken by code
218
- const checkRes = await this.checkAuthToken(refreshToken, 'refresh');
283
+ public async refreshAuthToken(
284
+ refreshToken: string,
285
+ clientName: keyof IJwtClientRecord = 'refresh',
286
+ input?: unknown,
287
+ ) {
288
+ const adapter = this._getAuthTokenAdapter(clientName, true);
289
+ const checkRes = await this.checkAuthToken(refreshToken, clientName, {
290
+ operation: 'refresh',
291
+ input,
292
+ });
219
293
  if (!checkRes) return this.app.throw(401);
220
- let { payloadData, passport } = checkRes;
221
- // refreshAuthToken
294
+ const { passport } = checkRes;
222
295
  const authTokenOptions = await this._combineAuthTokenOptions(
223
296
  passport.auth!.authProviderId,
224
297
  undefined,
@@ -227,12 +300,15 @@ export class BeanPassport extends BeanBase {
227
300
  strategy: this.scope.config.authToken.strategy.refreshAuthToken,
228
301
  ttl: this.scope.config.authToken.ttl,
229
302
  },
303
+ adapter,
230
304
  );
231
- payloadData = await this._handlePayloadData(payloadData, authTokenOptions);
232
- // jwt token
233
- const jwt = await this.bean.jwt.create(payloadData);
234
- this.ctx.state.passportPayloadData = payloadData;
235
- return jwt;
305
+ const payloadData = await this._handlePayloadData(
306
+ checkRes.payloadData,
307
+ authTokenOptions,
308
+ adapter,
309
+ input,
310
+ );
311
+ return await this._issueAuthToken(passport, payloadData, clientName);
236
312
  }
237
313
 
238
314
  // only created by accessToken
@@ -251,7 +327,12 @@ export class BeanPassport extends BeanBase {
251
327
  const passport = this.current;
252
328
  if (!passport) return this.app.throw(401);
253
329
  // payloadData
254
- const payloadData = await this._passportSerialize(passport, { strategy: 'reuse' });
330
+ const payloadData = await this._passportSerialize(
331
+ passport,
332
+ { strategy: 'reuse' },
333
+ false,
334
+ 'oauth',
335
+ );
255
336
  // jwt token
256
337
  return await this.bean.jwt.createOauthAuthToken(payloadData, options);
257
338
  }
@@ -261,12 +342,18 @@ export class BeanPassport extends BeanBase {
261
342
  const passport = this.current;
262
343
  if (!passport) return this.app.throw(401);
263
344
  // payloadData
264
- const payloadData = await this._passportSerialize(passport, { strategy: 'reuse' });
345
+ const payloadData = await this._passportSerialize(
346
+ passport,
347
+ { strategy: 'reuse' },
348
+ false,
349
+ 'code',
350
+ );
265
351
  // code
266
352
  return await this.bean.jwt.createOauthCode(payloadData, options);
267
353
  }
268
354
 
269
355
  public async createOauthCodeFromOauthAuthToken(accessToken: string, options?: IJwtSignOptions) {
356
+ this._getAuthTokenAdapter('code', true);
270
357
  // payloadData
271
358
  const payloadData =
272
359
  this.authTokenMode === 'session'
@@ -278,12 +365,12 @@ export class BeanPassport extends BeanBase {
278
365
  }
279
366
 
280
367
  public async createAuthTokenFromOauthCode(code: string) {
368
+ this._getAuthTokenAdapter('access', true);
281
369
  // checkAuthToken by code
282
370
  const checkRes = await this.checkAuthToken(code, 'code');
283
371
  if (!checkRes) return this.app.throw(401);
284
- const { payloadData } = checkRes;
285
- // jwt token
286
- return await this.bean.jwt.create(payloadData);
372
+ const { payloadData, passport } = checkRes;
373
+ return await this._issueAuthToken(passport, payloadData, 'access');
287
374
  }
288
375
 
289
376
  public checkRoleName(name: keyof IRoleNameRecord | (keyof IRoleNameRecord)[]) {
@@ -306,6 +393,33 @@ export class BeanPassport extends BeanBase {
306
393
  return true;
307
394
  }
308
395
 
396
+ private _getAuthTokenAdapter(
397
+ clientName: keyof IJwtClientRecord,
398
+ issuance = false,
399
+ ): IAuthTokenAdapter {
400
+ const client = this.$scope.jwt.config.clients[clientName];
401
+ if (!client) throw new Error(`jwt client not found: ${clientName}`);
402
+ const adapter = client.authTokenAdapter
403
+ ? (this.bean._getBean(
404
+ beanFullNameFromOnionName(client.authTokenAdapter, 'service'),
405
+ ) as IAuthTokenAdapter)
406
+ : this.authTokenAdapter;
407
+ if (!adapter) return this.app.throw(401);
408
+ // Check before callers replace current: scoped authority cannot become ordinary credentials.
409
+ const source = this.ctx.state.passportAuthTokenClient;
410
+ if (issuance && source) {
411
+ const sourceAdapter = this._getAuthTokenAdapter(source);
412
+ if (sourceAdapter !== this.authTokenAdapter && sourceAdapter !== adapter)
413
+ return this.app.throw(403);
414
+ }
415
+ return adapter;
416
+ }
417
+
418
+ private _ensureAuthTokenPassport(passport: IPassport): void {
419
+ if (!passport.user || passport.user.anonymous || !passport.auth) return this.app.throw(401);
420
+ this.ensureAccountActive(passport);
421
+ }
422
+
309
423
  private _getCurrentPayloadData(): IPayloadData {
310
424
  const payloadData = this.ctx.state.passportPayloadData;
311
425
  if (!payloadData?.[this.scope.config.payloadData.fields.token]) return this.app.throw(401);
@@ -316,54 +430,57 @@ export class BeanPassport extends BeanBase {
316
430
  passport: IPassport,
317
431
  authTokenOptions?: IAuthTokenOptions,
318
432
  signin = false,
433
+ clientName: keyof IJwtClientRecord = 'access',
434
+ seed: IPayloadData = {},
435
+ input?: unknown,
319
436
  ) {
320
- if (this.authTokenMode === 'session') {
437
+ const adapter = this._getAuthTokenAdapter(clientName, true);
438
+ if (adapter === this.authTokenAdapter && this.authTokenMode === 'session') {
321
439
  if (signin) {
322
- const payloadData = await this.passportAdapter.serialize(passport);
323
- return await this.authTokenAdapter.create(payloadData, authTokenOptions?.ttl);
440
+ const payloadData = { ...seed, ...(await this.passportAdapter.serialize(passport)) };
441
+ return await adapter.create(payloadData, authTokenOptions?.ttl, input);
324
442
  }
325
- return await this._handlePayloadData(this._getCurrentPayloadData(), authTokenOptions);
443
+ return await this._handlePayloadData(
444
+ this._getCurrentPayloadData(),
445
+ authTokenOptions,
446
+ adapter,
447
+ input,
448
+ );
326
449
  }
327
- // serialize
328
- const payloadData = await this.passportAdapter.serialize(passport);
329
- return await this._handlePayloadData(payloadData, authTokenOptions);
450
+ const payloadData =
451
+ !signin && adapter !== this.authTokenAdapter
452
+ ? this._getCurrentPayloadData()
453
+ : { ...seed, ...(await this.passportAdapter.serialize(passport)) };
454
+ return await this._handlePayloadData(payloadData, authTokenOptions, adapter, input);
330
455
  }
331
456
 
332
457
  private async _handlePayloadData(
333
458
  payloadData: IPayloadData,
334
459
  authTokenOptions?: IAuthTokenOptions,
460
+ adapter: IAuthTokenAdapter = this.authTokenAdapter,
461
+ input?: unknown,
335
462
  ) {
336
- // auth token
337
463
  const stateless = authTokenOptions?.stateless;
338
464
  const strategy = authTokenOptions?.strategy ?? 'refresh';
339
465
  const ttl = authTokenOptions?.ttl;
340
- if (this.authTokenMode === 'session') {
466
+ if (adapter === this.authTokenAdapter && this.authTokenMode === 'session') {
341
467
  if (stateless) throw new Error('Session auth-token mode requires stateful authentication');
342
468
  if (strategy === 'reissue') {
343
469
  throw new Error('Session auth-token mode does not support the reissue refresh strategy');
344
470
  }
345
- const verified = await this.authTokenAdapter.verify(payloadData);
471
+ const verified = await adapter.verify(payloadData);
346
472
  if (!verified) return this.app.throw(401);
347
- if (strategy === 'refresh') {
348
- await this.authTokenAdapter.refresh(payloadData, ttl);
349
- }
473
+ if (strategy === 'refresh') await adapter.refresh(payloadData, ttl);
350
474
  return payloadData;
351
475
  }
352
476
  if (stateless) {
353
- // do nothing
354
477
  return payloadData;
355
478
  } else if (strategy === 'reissue') {
356
- return await this.authTokenAdapter.create(payloadData, ttl);
479
+ return await adapter.create(payloadData, ttl, input);
357
480
  } else {
358
- const payloadData2 = await this.authTokenAdapter.retrieve(payloadData);
359
- if (!payloadData2) {
360
- return await this.authTokenAdapter.create(payloadData, ttl);
361
- }
362
- if (strategy === 'refresh') {
363
- await this.authTokenAdapter.refresh(payloadData2, ttl);
364
- } else if (strategy === 'reuse') {
365
- // do nothing
366
- }
481
+ const payloadData2 = await adapter.retrieve(payloadData);
482
+ if (!payloadData2) return await adapter.create(payloadData, ttl, input);
483
+ if (strategy === 'refresh') await adapter.refresh(payloadData2, ttl);
367
484
  return payloadData2;
368
485
  }
369
486
  }
@@ -372,7 +489,9 @@ export class BeanPassport extends BeanBase {
372
489
  authProviderId: number | undefined,
373
490
  authTokenOptionsCustom: IAuthTokenOptions | undefined,
374
491
  authTokenOptionsDefault: IAuthTokenOptions,
492
+ adapter: IAuthTokenAdapter = this.authTokenAdapter,
375
493
  ) {
494
+ if (adapter.options) return adapter.options;
376
495
  let authTokenOptions = authTokenOptionsDefault;
377
496
  if (this.authTokenMode === 'session') {
378
497
  authTokenOptions = { ...authTokenOptions, ...authTokenOptionsCustom };
@@ -1,12 +1,41 @@
1
- import type { IPayloadData } from 'vona-module-a-jwt';
1
+ import type { IServiceRecord } from 'vona-module-a-bean';
2
+ import type {
3
+ IJwtClientRecord,
4
+ IJwtCreateOptions,
5
+ IJwtVerifyOptions,
6
+ IPayloadData,
7
+ } from 'vona-module-a-jwt';
2
8
 
9
+ import type { IAuthTokenOptions } from './auth.ts';
10
+ import type { IPassport } from './passport.ts';
3
11
  import type { IUser } from './user.ts';
4
12
 
13
+ export interface IAuthTokenVerifyOptions {
14
+ operation: 'check' | 'refresh';
15
+ clientName?: keyof IJwtClientRecord;
16
+ input?: unknown;
17
+ }
18
+
19
+ export interface IAuthTokenCheckOptions extends IJwtVerifyOptions {
20
+ operation?: IAuthTokenVerifyOptions['operation'];
21
+ input?: unknown;
22
+ }
23
+
5
24
  export interface IAuthTokenAdapter {
6
- create(payloadData: IPayloadData, ttl?: number): Promise<IPayloadData>;
25
+ readonly options?: Readonly<IAuthTokenOptions>;
26
+ deserialize?(payloadData: IPayloadData): Promise<IPassport | undefined>;
27
+ getJwtOptions?(payloadData: IPayloadData): IJwtCreateOptions;
28
+ create(payloadData: IPayloadData, ttl?: number, input?: unknown): Promise<IPayloadData>;
7
29
  retrieve(payloadData: IPayloadData): Promise<IPayloadData | undefined>;
8
- verify(payloadData: IPayloadData): Promise<boolean>;
30
+ verify(payloadData: IPayloadData, options?: IAuthTokenVerifyOptions): Promise<boolean>;
9
31
  refresh(payloadData: IPayloadData, ttl?: number): Promise<void>;
10
32
  remove(payloadData: IPayloadData): Promise<void>;
11
33
  removeAll(user: IUser): Promise<void>;
12
34
  }
35
+
36
+ // Trusted client configuration selects state ownership, never unverified claims.
37
+ declare module 'vona-module-a-jwt' {
38
+ export interface IJwtClientOptions {
39
+ authTokenAdapter?: keyof IServiceRecord;
40
+ }
41
+ }
@@ -1,4 +1,4 @@
1
- import type { IPayloadData } from 'vona-module-a-jwt';
1
+ import type { IJwtClientRecord, IPayloadData } from 'vona-module-a-jwt';
2
2
 
3
3
  import type { IAuth } from './auth.ts';
4
4
  import type { IRole } from './role.ts';
@@ -21,6 +21,7 @@ declare module 'vona' {
21
21
  export interface ContextState {
22
22
  passport?: IPassport;
23
23
  passportPayloadData?: IPayloadData;
24
+ passportAuthTokenClient?: keyof IJwtClientRecord;
24
25
  }
25
26
 
26
27
  export interface VonaContext {