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.
- package/dist/bean/bean.passport.d.ts +10 -3
- package/dist/bean/bean.passport.d.ts.map +1 -1
- package/dist/index.js +106 -61
- package/dist/index.js.map +1 -1
- package/dist/types/authToken.d.ts +23 -3
- package/dist/types/authToken.d.ts.map +1 -1
- package/dist/types/passport.d.ts +2 -1
- package/dist/types/passport.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/bean/bean.passport.ts +189 -70
- package/src/types/authToken.ts +32 -3
- package/src/types/passport.ts +2 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import type { IJwtClientRecord, IJwtSignOptions, IJwtToken,
|
|
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?:
|
|
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,
|
|
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
|
-
|
|
164
|
-
|
|
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
|
-
|
|
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
|
|
192
|
+
dev,
|
|
193
|
+
...options
|
|
173
194
|
});
|
|
174
|
-
this.
|
|
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 === '
|
|
183
|
-
await
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
252
|
-
const checkRes = await this.checkAuthToken(refreshToken,
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 =
|
|
348
|
-
|
|
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
|
-
|
|
353
|
-
|
|
354
|
-
|
|
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
|
|
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
|
|
425
|
+
return await adapter.create(payloadData, ttl, input);
|
|
378
426
|
} else {
|
|
379
|
-
const payloadData2 = await
|
|
380
|
-
if (!payloadData2)
|
|
381
|
-
|
|
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 {
|
|
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
|
-
|
|
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,
|
|
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"}
|
package/dist/types/passport.d.ts
CHANGED
|
@@ -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;
|
|
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,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
|
-
|
|
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
|
|
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(
|
|
122
|
-
|
|
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
|
|
173
|
+
dev,
|
|
174
|
+
...options,
|
|
125
175
|
});
|
|
126
|
-
this.
|
|
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 === '
|
|
137
|
-
? this.
|
|
138
|
-
:
|
|
139
|
-
await
|
|
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
|
|
182
|
-
options?:
|
|
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 (
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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(
|
|
217
|
-
|
|
218
|
-
|
|
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
|
-
|
|
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(
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
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(
|
|
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(
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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(
|
|
443
|
+
return await this._handlePayloadData(
|
|
444
|
+
this._getCurrentPayloadData(),
|
|
445
|
+
authTokenOptions,
|
|
446
|
+
adapter,
|
|
447
|
+
input,
|
|
448
|
+
);
|
|
326
449
|
}
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
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
|
|
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
|
|
479
|
+
return await adapter.create(payloadData, ttl, input);
|
|
357
480
|
} else {
|
|
358
|
-
const payloadData2 = await
|
|
359
|
-
if (!payloadData2)
|
|
360
|
-
|
|
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 };
|
package/src/types/authToken.ts
CHANGED
|
@@ -1,12 +1,41 @@
|
|
|
1
|
-
import type {
|
|
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
|
-
|
|
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
|
+
}
|
package/src/types/passport.ts
CHANGED
|
@@ -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 {
|