@bitblit/ratchet-warden-common 6.0.159 → 6.1.167-alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/client/provider/warden-client-abstract-recent-login-provider.js +3 -0
- package/lib/client/provider/warden-client-abstract-recent-login-provider.js.map +1 -1
- package/lib/client/provider/warden-client-storage-based-logged-in-user-provider.d.ts +3 -3
- package/lib/client/provider/warden-client-storage-based-logged-in-user-provider.js.map +1 -1
- package/lib/client/provider/warden-client-transient-memory-logged-in-user-provider.d.ts +3 -3
- package/lib/client/provider/warden-client-transient-memory-logged-in-user-provider.js.map +1 -1
- package/lib/client/provider/warden-logged-in-user-provider.d.ts +3 -3
- package/lib/client/provider/warden-logged-in-user-wrapper.d.ts +4 -3
- package/lib/client/provider/warden-user-service-event-processing-provider.d.ts +3 -3
- package/lib/client/provider/warden-user-service-options.d.ts +3 -3
- package/lib/client/warden-client.d.ts +1 -1
- package/lib/client/warden-client.js +2 -3
- package/lib/client/warden-client.js.map +1 -1
- package/lib/client/warden-delegating-current-user-providing-user-service-event-processing-provider.d.ts +5 -5
- package/lib/client/warden-delegating-current-user-providing-user-service-event-processing-provider.js.map +1 -1
- package/lib/client/warden-user-service.d.ts +13 -13
- package/lib/client/warden-user-service.js +9 -9
- package/lib/client/warden-user-service.js.map +1 -1
- package/lib/common/command/create-account.d.ts +0 -1
- package/lib/common/model/warden-entry-common-data.d.ts +11 -0
- package/lib/common/model/warden-entry-common-data.js +2 -0
- package/lib/common/model/warden-entry-common-data.js.map +1 -0
- package/lib/common/model/warden-entry-metadata-type.d.ts +4 -0
- package/lib/common/model/warden-entry-metadata-type.js +6 -0
- package/lib/common/model/warden-entry-metadata-type.js.map +1 -0
- package/lib/common/model/warden-entry-metadata.d.ts +6 -0
- package/lib/common/model/warden-entry-metadata.js +2 -0
- package/lib/common/model/warden-entry-metadata.js.map +1 -0
- package/lib/common/model/warden-entry-summary.d.ts +3 -6
- package/lib/common/model/warden-entry.d.ts +4 -7
- package/lib/common/util/warden-utils.d.ts +15 -16
- package/lib/common/util/warden-utils.js +6 -15
- package/lib/common/util/warden-utils.js.map +1 -1
- package/package.json +3 -3
- package/src/client/provider/warden-client-abstract-recent-login-provider.ts +3 -0
- package/src/client/provider/warden-client-storage-based-logged-in-user-provider.ts +4 -4
- package/src/client/provider/warden-client-transient-memory-logged-in-user-provider.ts +4 -4
- package/src/client/provider/warden-logged-in-user-provider.ts +3 -3
- package/src/client/provider/warden-logged-in-user-wrapper.ts +4 -3
- package/src/client/provider/warden-user-service-event-processing-provider.ts +3 -3
- package/src/client/provider/warden-user-service-options.ts +3 -3
- package/src/client/warden-client.ts +2 -3
- package/src/client/warden-delegating-current-user-providing-user-service-event-processing-provider.ts +8 -8
- package/src/client/warden-user-service.spec.ts +4 -4
- package/src/client/warden-user-service.ts +48 -52
- package/src/common/command/create-account.ts +0 -1
- package/src/common/model/warden-entry-common-data.ts +13 -0
- package/src/common/model/warden-entry-metadata-type.ts +4 -0
- package/src/common/model/warden-entry-metadata.ts +7 -0
- package/src/common/model/warden-entry-summary.ts +3 -6
- package/src/common/model/warden-entry.ts +6 -7
- package/src/common/util/warden-utils.ts +19 -30
- package/lib/common/model/warden-jwt-token.d.ts +0 -8
- package/lib/common/model/warden-jwt-token.js +0 -2
- package/lib/common/model/warden-jwt-token.js.map +0 -1
- package/lib/common/model/warden-user-decoration.d.ts +0 -8
- package/lib/common/model/warden-user-decoration.js +0 -2
- package/lib/common/model/warden-user-decoration.js.map +0 -1
- package/src/common/model/warden-jwt-token.ts +0 -15
- package/src/common/model/warden-user-decoration.ts +0 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"warden-utils.js","sourceRoot":"","sources":["../../../src/common/util/warden-utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAEpE,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAQ5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;
|
|
1
|
+
{"version":3,"file":"warden-utils.js","sourceRoot":"","sources":["../../../src/common/util/warden-utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bitblit/ratchet-warden-common",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.1.167-alpha",
|
|
4
4
|
"description": "Typescript library to simplify using simplewebauthn and secondary auth methods over GraphQL",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"type": "module",
|
|
@@ -47,12 +47,12 @@
|
|
|
47
47
|
},
|
|
48
48
|
"license": "Apache-2.0",
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@bitblit/ratchet-common": "6.
|
|
50
|
+
"@bitblit/ratchet-common": "6.1.167-alpha",
|
|
51
51
|
"@simplewebauthn/browser": "13.2.2",
|
|
52
52
|
"jwt-decode": "4.0.0"
|
|
53
53
|
},
|
|
54
54
|
"peerDependencies": {
|
|
55
|
-
"@bitblit/ratchet-common": "^6.
|
|
55
|
+
"@bitblit/ratchet-common": "^6.1.167-alpha",
|
|
56
56
|
"@simplewebauthn/browser": "^13.2.2",
|
|
57
57
|
"jwt-decode": "^4.0.0"
|
|
58
58
|
}
|
|
@@ -33,6 +33,9 @@ export abstract class WardenClientAbstractRecentLoginProvider implements WardenC
|
|
|
33
33
|
contactMethods: [contact],
|
|
34
34
|
webAuthnAuthenticatorSummaries: [],
|
|
35
35
|
userLabel: label,
|
|
36
|
+
meta: [],
|
|
37
|
+
globalRoleIds: [],
|
|
38
|
+
teamRoleMappings: []
|
|
36
39
|
});
|
|
37
40
|
} else {
|
|
38
41
|
Logger.warn('Cannot save new user - invalid data : %s : %j', userId, contact);
|
|
@@ -5,7 +5,7 @@ import { RequireRatchet } from "@bitblit/ratchet-common/lang/require-ratchet";
|
|
|
5
5
|
import { StringRatchet } from "@bitblit/ratchet-common/lang/string-ratchet";
|
|
6
6
|
import { Logger } from "@bitblit/ratchet-common/logger/logger";
|
|
7
7
|
|
|
8
|
-
export class WardenClientStorageBasedLoggedInUserProvider
|
|
8
|
+
export class WardenClientStorageBasedLoggedInUserProvider implements WardenLoggedInUserProvider {
|
|
9
9
|
|
|
10
10
|
constructor(
|
|
11
11
|
private storageProv: Storage | (() => Storage),
|
|
@@ -23,11 +23,11 @@ export class WardenClientStorageBasedLoggedInUserProvider<T> implements WardenLo
|
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
public fetchLoggedInUserWrapper(): WardenLoggedInUserWrapper
|
|
26
|
+
public fetchLoggedInUserWrapper(): WardenLoggedInUserWrapper {
|
|
27
27
|
const storage: Storage = this.storage;
|
|
28
28
|
if (storage) {
|
|
29
29
|
const asString: string = storage.getItem(this.storageKey);
|
|
30
|
-
const rval: WardenLoggedInUserWrapper
|
|
30
|
+
const rval: WardenLoggedInUserWrapper = StringRatchet.trimToNull(asString) ? JSON.parse(asString) : null;
|
|
31
31
|
return rval;
|
|
32
32
|
} else {
|
|
33
33
|
Logger.debug('Tried to fetch logged in user before storage ready - returning null');
|
|
@@ -39,7 +39,7 @@ export class WardenClientStorageBasedLoggedInUserProvider<T> implements WardenLo
|
|
|
39
39
|
this.setLoggedInUserWrapper(null);
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
public setLoggedInUserWrapper(wrapper: WardenLoggedInUserWrapper
|
|
42
|
+
public setLoggedInUserWrapper(wrapper: WardenLoggedInUserWrapper) {
|
|
43
43
|
const storage: Storage = this.storage;
|
|
44
44
|
if (storage) {
|
|
45
45
|
if (wrapper) {
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { WardenLoggedInUserProvider } from "./warden-logged-in-user-provider.js";
|
|
2
2
|
import { WardenLoggedInUserWrapper } from "./warden-logged-in-user-wrapper.js";
|
|
3
3
|
|
|
4
|
-
export class WardenClientTransientMemoryLoggedInUserProvider<T> implements WardenLoggedInUserProvider
|
|
5
|
-
private wrapper: WardenLoggedInUserWrapper
|
|
4
|
+
export class WardenClientTransientMemoryLoggedInUserProvider<T> implements WardenLoggedInUserProvider {
|
|
5
|
+
private wrapper: WardenLoggedInUserWrapper;
|
|
6
6
|
|
|
7
|
-
public fetchLoggedInUserWrapper(): WardenLoggedInUserWrapper
|
|
7
|
+
public fetchLoggedInUserWrapper(): WardenLoggedInUserWrapper {
|
|
8
8
|
return this.wrapper;
|
|
9
9
|
}
|
|
10
10
|
|
|
@@ -12,7 +12,7 @@ export class WardenClientTransientMemoryLoggedInUserProvider<T> implements Warde
|
|
|
12
12
|
this.wrapper = null;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
public setLoggedInUserWrapper(wrapper: WardenLoggedInUserWrapper
|
|
15
|
+
public setLoggedInUserWrapper(wrapper: WardenLoggedInUserWrapper) {
|
|
16
16
|
this.wrapper = wrapper;
|
|
17
17
|
}
|
|
18
18
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { WardenLoggedInUserWrapper } from "./warden-logged-in-user-wrapper.js";
|
|
2
2
|
|
|
3
|
-
export interface WardenLoggedInUserProvider
|
|
4
|
-
fetchLoggedInUserWrapper(): WardenLoggedInUserWrapper
|
|
5
|
-
setLoggedInUserWrapper(wrapper: WardenLoggedInUserWrapper
|
|
3
|
+
export interface WardenLoggedInUserProvider {
|
|
4
|
+
fetchLoggedInUserWrapper(): WardenLoggedInUserWrapper;
|
|
5
|
+
setLoggedInUserWrapper(wrapper: WardenLoggedInUserWrapper);
|
|
6
6
|
logOutUser(): void;
|
|
7
7
|
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { WardenEntrySummary } from "../../common/model/warden-entry-summary.ts";
|
|
2
|
+
import { CommonJwtToken } from "@bitblit/ratchet-common/jwt/common-jwt-token";
|
|
2
3
|
|
|
3
|
-
export interface WardenLoggedInUserWrapper
|
|
4
|
-
userObject:
|
|
4
|
+
export interface WardenLoggedInUserWrapper {
|
|
5
|
+
userObject: CommonJwtToken<WardenEntrySummary>;
|
|
5
6
|
jwtToken: string;
|
|
6
7
|
expirationEpochSeconds: number;
|
|
7
8
|
}
|
|
@@ -4,11 +4,11 @@ import { WardenLoggedInUserWrapper } from './warden-logged-in-user-wrapper.js';
|
|
|
4
4
|
* Notifies the containing system when significant events happen
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
export interface WardenUserServiceEventProcessingProvider
|
|
7
|
+
export interface WardenUserServiceEventProcessingProvider {
|
|
8
8
|
onLogout(): void;
|
|
9
|
-
onSuccessfulLogin(newUser: WardenLoggedInUserWrapper
|
|
9
|
+
onSuccessfulLogin(newUser: WardenLoggedInUserWrapper): void;
|
|
10
10
|
onLoginFailure(reason: string): void;
|
|
11
11
|
|
|
12
|
-
onAutomaticTokenRefresh(refreshUser: WardenLoggedInUserWrapper
|
|
12
|
+
onAutomaticTokenRefresh(refreshUser: WardenLoggedInUserWrapper): void;
|
|
13
13
|
onAutomaticLogout(): void;
|
|
14
14
|
}
|
|
@@ -3,11 +3,11 @@ import { WardenClient } from '../warden-client.js';
|
|
|
3
3
|
import { WardenUserServiceEventProcessingProvider } from './warden-user-service-event-processing-provider.js';
|
|
4
4
|
import { WardenClientRecentLoginProvider } from './warden-client-recent-login-provider.js';
|
|
5
5
|
|
|
6
|
-
export interface WardenUserServiceOptions
|
|
6
|
+
export interface WardenUserServiceOptions {
|
|
7
7
|
recentLoginProvider?: WardenClientRecentLoginProvider;
|
|
8
|
-
loggedInUserProvider: WardenLoggedInUserProvider
|
|
8
|
+
loggedInUserProvider: WardenLoggedInUserProvider;
|
|
9
9
|
wardenClient: WardenClient;
|
|
10
|
-
eventProcessor: WardenUserServiceEventProcessingProvider
|
|
10
|
+
eventProcessor: WardenUserServiceEventProcessingProvider;
|
|
11
11
|
loginCheckTimerPingSeconds?: number;
|
|
12
12
|
autoLoginHandlingThresholdSeconds?: number;
|
|
13
13
|
allowAutoRefresh?: boolean;
|
|
@@ -46,13 +46,12 @@ export class WardenClient {
|
|
|
46
46
|
return parsed;
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
-
public async createAccount(contact: WardenContact, sendCode?: boolean, label?: string
|
|
49
|
+
public async createAccount(contact: WardenContact, sendCode?: boolean, label?: string): Promise<string> {
|
|
50
50
|
const cmd: WardenCommand = {
|
|
51
51
|
createAccount: {
|
|
52
52
|
contact: contact,
|
|
53
53
|
sendCode: sendCode,
|
|
54
|
-
label: label
|
|
55
|
-
tags: tags,
|
|
54
|
+
label: label
|
|
56
55
|
},
|
|
57
56
|
};
|
|
58
57
|
const rval: WardenCommandResponse = await this.exchangeCommand(cmd);
|
|
@@ -18,18 +18,18 @@ import { Logger } from '@bitblit/ratchet-common/logger/logger';
|
|
|
18
18
|
* By default this will never serve expired credentials - if a call is made, and the credentials found are
|
|
19
19
|
* expired, they will be cleared and null will be returned
|
|
20
20
|
*/
|
|
21
|
-
export class WardenDelegatingCurrentUserProvidingUserServiceEventProcessingProvider
|
|
22
|
-
implements WardenUserServiceEventProcessingProvider
|
|
21
|
+
export class WardenDelegatingCurrentUserProvidingUserServiceEventProcessingProvider
|
|
22
|
+
implements WardenUserServiceEventProcessingProvider, WardenClientCurrentLoggedInJwtTokenProvider
|
|
23
23
|
{
|
|
24
|
-
private _currentUserSubject: BehaviorSubject<WardenLoggedInUserWrapper
|
|
24
|
+
private _currentUserSubject: BehaviorSubject<WardenLoggedInUserWrapper> = new BehaviorSubject<WardenLoggedInUserWrapper>(null);
|
|
25
25
|
|
|
26
26
|
constructor(
|
|
27
|
-
private wrapped?: Partial<WardenUserServiceEventProcessingProvider
|
|
27
|
+
private wrapped?: Partial<WardenUserServiceEventProcessingProvider>,
|
|
28
28
|
private serveExpiredCredentials: boolean = false,
|
|
29
29
|
) {}
|
|
30
30
|
|
|
31
31
|
public fetchCurrentLoggedInJwtToken(): string {
|
|
32
|
-
let val: WardenLoggedInUserWrapper
|
|
32
|
+
let val: WardenLoggedInUserWrapper = this?._currentUserSubject?.getValue();
|
|
33
33
|
if (!this.serveExpiredCredentials && val && WardenUtils.wrapperIsExpired(val)) {
|
|
34
34
|
Logger.info('Current wrapper in the subject is expired - autostripping');
|
|
35
35
|
this.currentUserSubject.next(null);
|
|
@@ -38,7 +38,7 @@ export class WardenDelegatingCurrentUserProvidingUserServiceEventProcessingProvi
|
|
|
38
38
|
return val?.jwtToken;
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
public get currentUserSubject(): BehaviorSubject<WardenLoggedInUserWrapper
|
|
41
|
+
public get currentUserSubject(): BehaviorSubject<WardenLoggedInUserWrapper> {
|
|
42
42
|
return this._currentUserSubject;
|
|
43
43
|
}
|
|
44
44
|
|
|
@@ -48,7 +48,7 @@ export class WardenDelegatingCurrentUserProvidingUserServiceEventProcessingProvi
|
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
public onAutomaticTokenRefresh(refreshUser: WardenLoggedInUserWrapper
|
|
51
|
+
public onAutomaticTokenRefresh(refreshUser: WardenLoggedInUserWrapper): void {
|
|
52
52
|
if (this?.wrapped?.onAutomaticTokenRefresh) {
|
|
53
53
|
this.wrapped.onAutomaticTokenRefresh(refreshUser);
|
|
54
54
|
}
|
|
@@ -67,7 +67,7 @@ export class WardenDelegatingCurrentUserProvidingUserServiceEventProcessingProvi
|
|
|
67
67
|
this.currentUserSubject.next(null);
|
|
68
68
|
}
|
|
69
69
|
|
|
70
|
-
public onSuccessfulLogin(newUser: WardenLoggedInUserWrapper
|
|
70
|
+
public onSuccessfulLogin(newUser: WardenLoggedInUserWrapper): void {
|
|
71
71
|
if (this?.wrapped?.onSuccessfulLogin) {
|
|
72
72
|
this.wrapped.onSuccessfulLogin(newUser);
|
|
73
73
|
}
|
|
@@ -11,18 +11,18 @@ import { mock } from 'vitest-mock-extended';
|
|
|
11
11
|
describe('#wardenUserService', function () {
|
|
12
12
|
// Currently disabled because this seems to hang forever on github actions (2023-03-20)
|
|
13
13
|
test('should instantiate', async () => {
|
|
14
|
-
const wuso: WardenUserServiceOptions
|
|
14
|
+
const wuso: WardenUserServiceOptions = {
|
|
15
15
|
recentLoginProvider: mock<WardenClientRecentLoginProvider>(),
|
|
16
|
-
loggedInUserProvider: mock<WardenLoggedInUserProvider
|
|
16
|
+
loggedInUserProvider: mock<WardenLoggedInUserProvider>(),
|
|
17
17
|
wardenClient: mock<WardenClient>(),
|
|
18
|
-
eventProcessor: mock<WardenUserServiceEventProcessingProvider
|
|
18
|
+
eventProcessor: mock<WardenUserServiceEventProcessingProvider>(),
|
|
19
19
|
loginCheckTimerPingSeconds: 60,
|
|
20
20
|
autoLoginHandlingThresholdSeconds: 60,
|
|
21
21
|
allowAutoRefresh: true,
|
|
22
22
|
applicationName: 'TEST-APP',
|
|
23
23
|
};
|
|
24
24
|
|
|
25
|
-
const wus: WardenUserService
|
|
25
|
+
const wus: WardenUserService = new WardenUserService(wuso);
|
|
26
26
|
expect(wus).not.toBeNull();
|
|
27
27
|
wus.cleanShutDown();
|
|
28
28
|
});
|
|
@@ -5,7 +5,6 @@ import { Subscription, timer } from "rxjs";
|
|
|
5
5
|
import { WardenUserServiceOptions } from "./provider/warden-user-service-options.js";
|
|
6
6
|
import { WardenLoggedInUserWrapper } from "./provider/warden-logged-in-user-wrapper.js";
|
|
7
7
|
import { WardenContact } from "../common/model/warden-contact.js";
|
|
8
|
-
import { WardenJwtToken } from "../common/model/warden-jwt-token.js";
|
|
9
8
|
import { WardenLoginResults } from "../common/model/warden-login-results.js";
|
|
10
9
|
import { WardenLoginRequest } from "../common/model/warden-login-request.js";
|
|
11
10
|
|
|
@@ -22,25 +21,22 @@ import { WardenEntrySummary } from "../common/model/warden-entry-summary.js";
|
|
|
22
21
|
import { WardenUtils } from "../common/util/warden-utils.js";
|
|
23
22
|
import { WardenLoginRequestType } from "../common/model/warden-login-request-type";
|
|
24
23
|
import { WardenTeamRoleMapping } from "../common/model/warden-team-role-mapping.ts";
|
|
25
|
-
import {
|
|
26
|
-
import { WardenCommand } from "../common/command/warden-command.ts";
|
|
27
|
-
import { WardenCommandResponse } from "../common/command/warden-command-response.ts";
|
|
24
|
+
import { CommonJwtToken } from "@bitblit/ratchet-common/jwt/common-jwt-token";
|
|
28
25
|
|
|
29
26
|
/**
|
|
30
27
|
* A service that handles logging in, saving the current user, watching
|
|
31
28
|
* for expiration, auto-refreshing the token, wrapped around a
|
|
32
29
|
* warden-client.
|
|
33
30
|
*
|
|
34
|
-
* T is the type of user object contained in the
|
|
35
31
|
*/
|
|
36
|
-
export class WardenUserService
|
|
32
|
+
export class WardenUserService {
|
|
37
33
|
private loggedInTimerSubscription: Subscription;
|
|
38
34
|
private _autoRefreshEnabled: boolean = false;
|
|
39
35
|
|
|
40
|
-
constructor(private options: WardenUserServiceOptions
|
|
36
|
+
constructor(private options: WardenUserServiceOptions) {
|
|
41
37
|
Logger.info('Initializing user service');
|
|
42
38
|
// Immediately read from storage if there is something there
|
|
43
|
-
const stored: WardenLoggedInUserWrapper
|
|
39
|
+
const stored: WardenLoggedInUserWrapper = this.options.loggedInUserProvider.fetchLoggedInUserWrapper();
|
|
44
40
|
if (WardenUtils.wrapperIsExpired(stored)) {
|
|
45
41
|
// Not treating this as a logout since it basically never logged in, just clearing it
|
|
46
42
|
Logger.info('Stored token is expired, removing it');
|
|
@@ -60,12 +56,12 @@ export class WardenUserService<T> {
|
|
|
60
56
|
}
|
|
61
57
|
}
|
|
62
58
|
|
|
63
|
-
public get serviceOptions(): WardenUserServiceOptions
|
|
59
|
+
public get serviceOptions(): WardenUserServiceOptions {
|
|
64
60
|
return this.options;
|
|
65
61
|
}
|
|
66
62
|
|
|
67
|
-
public async createAccount(contact: WardenContact, sendCode?: boolean, label?: string
|
|
68
|
-
const rval: string = await this.options.wardenClient.createAccount(contact, sendCode, label
|
|
63
|
+
public async createAccount(contact: WardenContact, sendCode?: boolean, label?: string): Promise<string> {
|
|
64
|
+
const rval: string = await this.options.wardenClient.createAccount(contact, sendCode, label);
|
|
69
65
|
|
|
70
66
|
if (this.options.recentLoginProvider && StringRatchet.trimToNull(rval)) {
|
|
71
67
|
this.options.recentLoginProvider.saveNewUser(rval, label, contact);
|
|
@@ -97,14 +93,14 @@ export class WardenUserService<T> {
|
|
|
97
93
|
public async checkForAutoLogoutOrRefresh(t: number): Promise<void> {
|
|
98
94
|
Logger.debug('Checking for auto-logout or refresh : %s', t);
|
|
99
95
|
// This code will cause an auto-logout if the token is already expired, but not if it is CLOSE to expiration
|
|
100
|
-
const current: WardenLoggedInUserWrapper
|
|
96
|
+
const current: WardenLoggedInUserWrapper = this.fetchLoggedInUserWrapper();
|
|
101
97
|
if (current) {
|
|
102
98
|
const thresholdSeconds: number = this.options.autoLoginHandlingThresholdSeconds || 10; // Default to 10 seconds
|
|
103
99
|
const secondsLeft: number = current.expirationEpochSeconds - Math.floor(Date.now() / 1000);
|
|
104
100
|
if (secondsLeft < thresholdSeconds) {
|
|
105
101
|
if (this.autoRefreshEnabled) {
|
|
106
102
|
Logger.info('Under threshold, initiating auto-refresh');
|
|
107
|
-
const result: WardenLoggedInUserWrapper
|
|
103
|
+
const result: WardenLoggedInUserWrapper = await this.refreshToken();
|
|
108
104
|
this.options.eventProcessor.onAutomaticTokenRefresh(result);
|
|
109
105
|
} else {
|
|
110
106
|
Logger.info('Under threshold, initiating auto-logout');
|
|
@@ -120,13 +116,13 @@ export class WardenUserService<T> {
|
|
|
120
116
|
}
|
|
121
117
|
|
|
122
118
|
public fetchLoggedInUserId(): string {
|
|
123
|
-
const tmp: WardenLoggedInUserWrapper
|
|
124
|
-
const rval: string = tmp?.userObject?.
|
|
119
|
+
const tmp: WardenLoggedInUserWrapper = this.options.loggedInUserProvider.fetchLoggedInUserWrapper();
|
|
120
|
+
const rval: string = tmp?.userObject?.user?.userId;
|
|
125
121
|
return rval;
|
|
126
122
|
}
|
|
127
123
|
|
|
128
|
-
public fetchLoggedInUserWrapper(): WardenLoggedInUserWrapper
|
|
129
|
-
let tmp: WardenLoggedInUserWrapper
|
|
124
|
+
public fetchLoggedInUserWrapper(): WardenLoggedInUserWrapper {
|
|
125
|
+
let tmp: WardenLoggedInUserWrapper = this.options.loggedInUserProvider.fetchLoggedInUserWrapper();
|
|
130
126
|
if (tmp) {
|
|
131
127
|
if (WardenUtils.wrapperIsExpired(tmp)) {
|
|
132
128
|
// This is belt-and-suspenders for when the window was not open - during normal operation either
|
|
@@ -142,8 +138,8 @@ export class WardenUserService<T> {
|
|
|
142
138
|
public loggedInUserHasGlobalRole(roleId: string): boolean {
|
|
143
139
|
let rval: boolean = false;
|
|
144
140
|
|
|
145
|
-
const token:
|
|
146
|
-
rval = token ? WardenUtils.userHasGlobalRole(
|
|
141
|
+
const token: CommonJwtToken<WardenEntrySummary> = this.fetchLoggedInUserJwtObject();
|
|
142
|
+
rval = token ? WardenUtils.userHasGlobalRole(token.user, roleId) : false;
|
|
147
143
|
|
|
148
144
|
return rval;
|
|
149
145
|
}
|
|
@@ -151,66 +147,66 @@ export class WardenUserService<T> {
|
|
|
151
147
|
public loggedInUserHasRoleOnTeam(teamId: string, roleId: string): boolean {
|
|
152
148
|
let rval: boolean = false;
|
|
153
149
|
|
|
154
|
-
const token:
|
|
155
|
-
rval = token ? WardenUtils.userHasRoleOnTeam(
|
|
150
|
+
const token: CommonJwtToken<WardenEntrySummary> = this.fetchLoggedInUserJwtObject();
|
|
151
|
+
rval = token ? WardenUtils.userHasRoleOnTeam(token.user, teamId, roleId) : false;
|
|
156
152
|
|
|
157
153
|
return rval;
|
|
158
154
|
}
|
|
159
155
|
|
|
160
156
|
public isLoggedIn(): boolean {
|
|
161
|
-
const t: WardenLoggedInUserWrapper
|
|
157
|
+
const t: WardenLoggedInUserWrapper = this.fetchLoggedInUserWrapper();
|
|
162
158
|
return !!t;
|
|
163
159
|
}
|
|
164
160
|
|
|
165
|
-
public fetchLoggedInUserJwtObject():
|
|
166
|
-
const t: WardenLoggedInUserWrapper
|
|
161
|
+
public fetchLoggedInUserJwtObject(): CommonJwtToken<WardenEntrySummary> {
|
|
162
|
+
const t: WardenLoggedInUserWrapper = this.fetchLoggedInUserWrapper();
|
|
167
163
|
return t ? t.userObject : null;
|
|
168
164
|
}
|
|
169
165
|
|
|
170
166
|
public fetchLoggedInUserJwtToken(): string {
|
|
171
|
-
const t: WardenLoggedInUserWrapper
|
|
167
|
+
const t: WardenLoggedInUserWrapper = this.fetchLoggedInUserWrapper();
|
|
172
168
|
return t ? t.jwtToken : null;
|
|
173
169
|
}
|
|
174
170
|
|
|
175
|
-
public fetchLoggedInUserObject():
|
|
176
|
-
const t:
|
|
171
|
+
public fetchLoggedInUserObject(): WardenEntrySummary {
|
|
172
|
+
const t: CommonJwtToken<WardenEntrySummary> = this.fetchLoggedInUserJwtObject();
|
|
177
173
|
return t?.user;
|
|
178
174
|
}
|
|
179
175
|
|
|
180
|
-
public fetchLoggedInProxyObject():
|
|
181
|
-
const t:
|
|
176
|
+
public fetchLoggedInProxyObject(): WardenEntrySummary {
|
|
177
|
+
const t: CommonJwtToken<WardenEntrySummary> = this.fetchLoggedInUserJwtObject();
|
|
182
178
|
return t?.proxy;
|
|
183
179
|
}
|
|
184
180
|
|
|
185
181
|
public fetchLoggedInGlobalRoleIds(): string[] {
|
|
186
|
-
const t:
|
|
187
|
-
return t?.globalRoleIds;
|
|
182
|
+
const t: CommonJwtToken<WardenEntrySummary> = this.fetchLoggedInUserJwtObject();
|
|
183
|
+
return t?.user?.globalRoleIds;
|
|
188
184
|
}
|
|
189
185
|
|
|
190
186
|
public fetchLoggedInTeamRoleMappingsGlobalRoleIds(): WardenTeamRoleMapping[] {
|
|
191
|
-
const t:
|
|
192
|
-
return t?.teamRoleMappings;
|
|
187
|
+
const t: CommonJwtToken<WardenEntrySummary> = this.fetchLoggedInUserJwtObject();
|
|
188
|
+
return t?.user?.teamRoleMappings;
|
|
193
189
|
}
|
|
194
190
|
|
|
195
191
|
public fetchLoggedInUserExpirationEpochSeconds(): number {
|
|
196
|
-
const t:
|
|
192
|
+
const t: CommonJwtToken<WardenEntrySummary> = this.fetchLoggedInUserJwtObject();
|
|
197
193
|
return t ? t.exp : null;
|
|
198
194
|
}
|
|
199
195
|
|
|
200
196
|
public fetchLoggedInUserRemainingSeconds(): number {
|
|
201
|
-
const t:
|
|
197
|
+
const t: CommonJwtToken<WardenEntrySummary> = this.fetchLoggedInUserJwtObject();
|
|
202
198
|
return t ? t.exp - Math.floor(Date.now() / 1000) : null;
|
|
203
199
|
}
|
|
204
200
|
|
|
205
|
-
private async updateLoggedInUserFromTokenString(token: string): Promise<WardenLoggedInUserWrapper
|
|
206
|
-
let rval: WardenLoggedInUserWrapper
|
|
201
|
+
private async updateLoggedInUserFromTokenString(token: string): Promise<WardenLoggedInUserWrapper> {
|
|
202
|
+
let rval: WardenLoggedInUserWrapper = null;
|
|
207
203
|
if (!StringRatchet.trimToNull(token)) {
|
|
208
204
|
Logger.info('Called updateLoggedInUserFromTokenString with empty string - logging out');
|
|
209
205
|
this.logout();
|
|
210
206
|
} else {
|
|
211
207
|
Logger.info('updateLoggedInUserFromTokenString : %s', token);
|
|
212
208
|
|
|
213
|
-
const parsed:
|
|
209
|
+
const parsed: CommonJwtToken<WardenEntrySummary> = JwtDecodeOnlyRatchet.decodeTokenNoVerify<CommonJwtToken<WardenEntrySummary>>(token);
|
|
214
210
|
if (parsed) {
|
|
215
211
|
rval = {
|
|
216
212
|
userObject: parsed,
|
|
@@ -218,7 +214,7 @@ export class WardenUserService<T> {
|
|
|
218
214
|
expirationEpochSeconds: parsed.exp,
|
|
219
215
|
};
|
|
220
216
|
this.options.loggedInUserProvider.setLoggedInUserWrapper(rval);
|
|
221
|
-
this.updateRecentLoginsFromWardenEntrySummary(parsed.
|
|
217
|
+
this.updateRecentLoginsFromWardenEntrySummary(parsed.user); // In case we have a recent logins tracker
|
|
222
218
|
this.options.eventProcessor.onSuccessfulLogin(rval);
|
|
223
219
|
} else {
|
|
224
220
|
Logger.warn('Failed to parse token %s - ignoring login and triggering failure');
|
|
@@ -228,9 +224,9 @@ export class WardenUserService<T> {
|
|
|
228
224
|
return rval;
|
|
229
225
|
}
|
|
230
226
|
|
|
231
|
-
public async refreshToken(): Promise<WardenLoggedInUserWrapper
|
|
232
|
-
let rval: WardenLoggedInUserWrapper
|
|
233
|
-
const currentWrapper: WardenLoggedInUserWrapper
|
|
227
|
+
public async refreshToken(): Promise<WardenLoggedInUserWrapper> {
|
|
228
|
+
let rval: WardenLoggedInUserWrapper = null;
|
|
229
|
+
const currentWrapper: WardenLoggedInUserWrapper = this.fetchLoggedInUserWrapper();
|
|
234
230
|
if (!currentWrapper) {
|
|
235
231
|
Logger.info('Could not refresh - no token available');
|
|
236
232
|
} else {
|
|
@@ -245,8 +241,8 @@ export class WardenUserService<T> {
|
|
|
245
241
|
return this.options.wardenClient.sendExpiringValidationToken(contact);
|
|
246
242
|
}
|
|
247
243
|
|
|
248
|
-
private async processWardenLoginResults(resp: WardenLoginResults): Promise<WardenLoggedInUserWrapper
|
|
249
|
-
let rval: WardenLoggedInUserWrapper
|
|
244
|
+
private async processWardenLoginResults(resp: WardenLoginResults): Promise<WardenLoggedInUserWrapper> {
|
|
245
|
+
let rval: WardenLoggedInUserWrapper = null;
|
|
250
246
|
if (resp) {
|
|
251
247
|
Logger.info('Warden: response : %j ', resp);
|
|
252
248
|
if (resp.jwtToken) {
|
|
@@ -275,13 +271,13 @@ export class WardenUserService<T> {
|
|
|
275
271
|
}
|
|
276
272
|
}
|
|
277
273
|
|
|
278
|
-
private updateRecentLoginsFromLoggedInUserWrapper(res: WardenLoggedInUserWrapper
|
|
279
|
-
this.updateRecentLoginsFromWardenEntrySummary(res?.userObject?.
|
|
274
|
+
private updateRecentLoginsFromLoggedInUserWrapper(res: WardenLoggedInUserWrapper): void {
|
|
275
|
+
this.updateRecentLoginsFromWardenEntrySummary(res?.userObject?.user);
|
|
280
276
|
}
|
|
281
277
|
|
|
282
|
-
public async executeWebAuthnBasedLogin(userId: string): Promise<WardenLoggedInUserWrapper
|
|
278
|
+
public async executeWebAuthnBasedLogin(userId: string): Promise<WardenLoggedInUserWrapper> {
|
|
283
279
|
const resp: WardenLoginResults = await this.executeWebAuthnLoginToWardenLoginResults(userId);
|
|
284
|
-
const rval: WardenLoggedInUserWrapper
|
|
280
|
+
const rval: WardenLoggedInUserWrapper = await this.processWardenLoginResults(resp);
|
|
285
281
|
this.updateRecentLoginsFromLoggedInUserWrapper(rval);
|
|
286
282
|
return rval;
|
|
287
283
|
}
|
|
@@ -300,7 +296,7 @@ export class WardenUserService<T> {
|
|
|
300
296
|
contact: WardenContact,
|
|
301
297
|
token: string,
|
|
302
298
|
createUserIfMissing?: boolean,
|
|
303
|
-
): Promise<WardenLoggedInUserWrapper
|
|
299
|
+
): Promise<WardenLoggedInUserWrapper> {
|
|
304
300
|
Logger.info('Warden: executeValidationTokenBasedLogin : %j : %s : %s', contact, token, createUserIfMissing);
|
|
305
301
|
const resp: WardenLoginResults = await this.options.wardenClient.performLoginCmd({
|
|
306
302
|
type: WardenLoginRequestType.ExpiringToken,
|
|
@@ -308,7 +304,7 @@ export class WardenUserService<T> {
|
|
|
308
304
|
expiringToken: token,
|
|
309
305
|
createUserIfMissing: createUserIfMissing,
|
|
310
306
|
});
|
|
311
|
-
const rval: WardenLoggedInUserWrapper
|
|
307
|
+
const rval: WardenLoggedInUserWrapper = await this.processWardenLoginResults(resp);
|
|
312
308
|
this.updateRecentLoginsFromLoggedInUserWrapper(rval);
|
|
313
309
|
return rval;
|
|
314
310
|
}
|
|
@@ -317,7 +313,7 @@ export class WardenUserService<T> {
|
|
|
317
313
|
thirdParty: string,
|
|
318
314
|
token: string,
|
|
319
315
|
createUserIfMissing?: boolean,
|
|
320
|
-
): Promise<WardenLoggedInUserWrapper
|
|
316
|
+
): Promise<WardenLoggedInUserWrapper> {
|
|
321
317
|
Logger.info('Warden: executeThirdPartyTokenBasedLogin : %j : %s : %s', thirdParty, token, createUserIfMissing);
|
|
322
318
|
const resp: WardenLoginResults = await this.options.wardenClient.performLoginCmd({
|
|
323
319
|
type: WardenLoginRequestType.ThirdParty,
|
|
@@ -327,7 +323,7 @@ export class WardenUserService<T> {
|
|
|
327
323
|
},
|
|
328
324
|
createUserIfMissing: createUserIfMissing,
|
|
329
325
|
});
|
|
330
|
-
const rval: WardenLoggedInUserWrapper
|
|
326
|
+
const rval: WardenLoggedInUserWrapper = await this.processWardenLoginResults(resp);
|
|
331
327
|
this.updateRecentLoginsFromLoggedInUserWrapper(rval);
|
|
332
328
|
return rval;
|
|
333
329
|
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { WardenTeamRoleMapping } from "./warden-team-role-mapping.ts";
|
|
2
|
+
import { WardenContact } from "./warden-contact.ts";
|
|
3
|
+
import { WardenEntryMetadata } from "./warden-entry-metadata.ts";
|
|
4
|
+
|
|
5
|
+
export interface WardenEntryCommonData {
|
|
6
|
+
userId: string;
|
|
7
|
+
userLabel: string; // Usually full name, could be something else
|
|
8
|
+
contactMethods: WardenContact[];
|
|
9
|
+
meta: WardenEntryMetadata[];
|
|
10
|
+
|
|
11
|
+
globalRoleIds: string[];
|
|
12
|
+
teamRoleMappings: WardenTeamRoleMapping[];
|
|
13
|
+
}
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { WardenWebAuthnEntrySummary } from "./warden-web-authn-entry-summary.js";
|
|
2
|
+
import { WardenEntryCommonData } from "./warden-entry-common-data.ts";
|
|
3
3
|
|
|
4
|
-
export interface WardenEntrySummary {
|
|
5
|
-
userId: string;
|
|
6
|
-
userLabel: string; // Usually full name, could be something else
|
|
7
|
-
contactMethods: WardenContact[];
|
|
4
|
+
export interface WardenEntrySummary extends WardenEntryCommonData {
|
|
8
5
|
webAuthnAuthenticatorSummaries: WardenWebAuthnEntrySummary[];
|
|
9
6
|
}
|
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import { WardenWebAuthnEntry } from
|
|
2
|
-
import { WardenContact } from './warden-contact.js';
|
|
1
|
+
import { WardenWebAuthnEntry } from "./warden-web-authn-entry.js";
|
|
3
2
|
import { WardenThirdPartyAuthentication } from "./warden-third-party-authentication.js";
|
|
3
|
+
import { WardenEntryCommonData } from "./warden-entry-common-data.ts";
|
|
4
4
|
|
|
5
|
-
export interface WardenEntry {
|
|
6
|
-
userId: string;
|
|
7
|
-
userLabel: string; // Usually full name, could be something else
|
|
8
|
-
contactMethods: WardenContact[];
|
|
9
|
-
tags: string[];
|
|
5
|
+
export interface WardenEntry extends WardenEntryCommonData{
|
|
10
6
|
webAuthnAuthenticators: WardenWebAuthnEntry[];
|
|
11
7
|
thirdPartyAuthenticators: WardenThirdPartyAuthentication[];
|
|
8
|
+
|
|
9
|
+
userTokenExpirationSeconds: number;
|
|
10
|
+
|
|
12
11
|
createdEpochMS: number;
|
|
13
12
|
updatedEpochMS: number;
|
|
14
13
|
}
|