adb-shared 6.0.36 → 6.0.37
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/esm2022/lib/components/adb-user/adb-user.service.mjs +14 -9
- package/esm2022/lib/components/adb-user/auth-callback.component.mjs +2 -1
- package/fesm2022/adb-shared.mjs +14 -8
- package/fesm2022/adb-shared.mjs.map +1 -1
- package/lib/components/adb-user/adb-user.service.d.ts +1 -1
- package/package.json +1 -1
|
@@ -9,6 +9,7 @@ import * as i0 from "@angular/core";
|
|
|
9
9
|
import * as i1 from "@angular/common/http";
|
|
10
10
|
import * as i2 from "@angular/router";
|
|
11
11
|
export class AdbUserService {
|
|
12
|
+
// hasEmitted = false;
|
|
12
13
|
constructor(config, http, router) {
|
|
13
14
|
this.config = config;
|
|
14
15
|
this.http = http;
|
|
@@ -17,7 +18,6 @@ export class AdbUserService {
|
|
|
17
18
|
this.userSubject = new BehaviorSubject(null);
|
|
18
19
|
this.user$ = this.userSubject.asObservable();
|
|
19
20
|
this.lastRefreshTime = 0;
|
|
20
|
-
this.hasEmitted = false;
|
|
21
21
|
this.config = { ...{ scope: 'roles', idleTime: 30, response_type: 'code' }, ...config };
|
|
22
22
|
}
|
|
23
23
|
init() {
|
|
@@ -54,7 +54,7 @@ export class AdbUserService {
|
|
|
54
54
|
}
|
|
55
55
|
logout() {
|
|
56
56
|
clearInterval(this.intervalId);
|
|
57
|
-
this.hasEmitted = false;
|
|
57
|
+
// this.hasEmitted = false;
|
|
58
58
|
sessionStorage.clear();
|
|
59
59
|
window.location.href = `${this.config.issuer}/connect/endsession?post_logout_redirect_uri=${this.config.postLogoutUrl}`;
|
|
60
60
|
}
|
|
@@ -74,15 +74,20 @@ export class AdbUserService {
|
|
|
74
74
|
console.log('token is about to timeout but we will refresh it because user has been active the last 5minutes');
|
|
75
75
|
this.refreshToken();
|
|
76
76
|
}
|
|
77
|
-
this
|
|
78
|
-
if (!this.hasEmitted) {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
}
|
|
77
|
+
//NOTE: Might not be needed in this variant
|
|
78
|
+
// if (!this.hasEmitted) {
|
|
79
|
+
// const user = this.getUser(accessToken);
|
|
80
|
+
// this.userSubject.next(user);
|
|
81
|
+
// this.hasEmitted = true;
|
|
82
|
+
// }
|
|
83
83
|
}
|
|
84
84
|
}
|
|
85
85
|
}
|
|
86
|
+
//TODO: make it not exported by the module
|
|
87
|
+
_internalTriggerUserEvent(token) {
|
|
88
|
+
const user = this.getUser(token);
|
|
89
|
+
this.userSubject.next(user);
|
|
90
|
+
}
|
|
86
91
|
refreshToken() {
|
|
87
92
|
const body = `client_id=${encodeURIComponent(this.config.clientId)}&` +
|
|
88
93
|
`grant_type=${encodeURIComponent("refresh_token")}&` +
|
|
@@ -201,4 +206,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
|
201
206
|
type: Inject,
|
|
202
207
|
args: [ADB_USER_SERVICE_CONFIG]
|
|
203
208
|
}] }, { type: i1.HttpClient }, { type: i2.Router }] });
|
|
204
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRiLXVzZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FydGRhdGEtc2hhcmVkL3NyYy9saWIvY29tcG9uZW50cy9hZGItdXNlci9hZGItdXNlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSx1QkFBdUIsRUFBd0IsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRixPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRCxPQUFPLEVBQWMsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDOUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBVSxNQUFNLGlCQUFpQixDQUFDOzs7O0FBSTFELE1BQU0sT0FBTyxjQUFjO0lBVXpCLFlBQzBDLE1BQTRCLEVBQzVELElBQWdCLEVBQ2hCLE1BQWM7UUFGa0IsV0FBTSxHQUFOLE1BQU0sQ0FBc0I7UUFDNUQsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBWGhCLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNuQyxnQkFBVyxHQUF5QixJQUFJLGVBQWUsQ0FBTSxJQUFJLENBQUMsQ0FBQztRQUMzRSxVQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUV4QyxvQkFBZSxHQUFHLENBQUMsQ0FBQztRQUVwQixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBTWpCLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLE9B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QyxDQUFDO1lBQ3ZDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDakQsT0FBTyxhQUFhLENBQUM7UUFDdkIsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLG9CQUFvQixFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzNDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNuQyxDQUFDO2lJQTNNVSxjQUFjLGtCQVdmLHVCQUF1QjtxSUFYdEIsY0FBYzs7MkZBQWQsY0FBYztrQkFEMUIsVUFBVTs7MEJBWU4sTUFBTTsyQkFBQyx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBREJfVVNFUl9TRVJWSUNFX0NPTkZJRywgQWRiVXNlclNlcnZpY2VDb25maWcgfSBmcm9tICcuL2FkYi11c2VyLXNlcnZpY2UtY29uZmlnJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IGFkZFNlY29uZHMsIGZvcm1hdCB9IGZyb20gJ2RhdGUtZm5zJztcclxuaW1wb3J0IHsgVXNlck1vZHVsZUNvbnN0YW50cyB9IGZyb20gJy4vdXNlci1jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBOYXZpZ2F0aW9uU3RhcnQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQWRiVXNlclNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG5cclxuICBwcml2YXRlIHN1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcbiAgcHJpdmF0ZSB1c2VyU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCk7XHJcbiAgdXNlciQgPSB0aGlzLnVzZXJTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBsYXN0UmVmcmVzaFRpbWUgPSAwO1xyXG4gIGludGVydmFsSWQ6IGFueTtcclxuICBoYXNFbWl0dGVkID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdChBREJfVVNFUl9TRVJWSUNFX0NPTkZJRykgcHVibGljIGNvbmZpZzogQWRiVXNlclNlcnZpY2VDb25maWcsXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyKSB7XHJcbiAgICB0aGlzLmNvbmZpZyA9IHsgLi4ueyBzY29wZTogJ3JvbGVzJywgaWRsZVRpbWU6IDMwLCByZXNwb25zZV90eXBlOiAnY29kZScgfSwgLi4uY29uZmlnIH07XHJcbiAgfVxyXG5cclxuICBpbml0KCk6IHZvaWQge1xyXG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFVzZXJNb2R1bGVDb25zdGFudHMuQUNDRVNTX1RPS0VOKTtcclxuICAgIGlmIChhY2Nlc3NUb2tlbikge1xyXG4gICAgICBjb25zdCB1c2VyID0gdGhpcy5nZXRVc2VyKGFjY2Vzc1Rva2VuKTtcclxuICAgICAgdGhpcy51c2VyU3ViamVjdC5uZXh0KHVzZXIpO1xyXG4gICAgICB0aGlzLnN0YXJ0TWFpbkxvb3AoKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5jb25maWcuYXV0b0xvZ2luKSB7XHJcbiAgICAgIC8vTk9URTogQXZvaWQgcmUtdHJpZ2dlcmluZyBsb2dpbiBpZiB3ZSdyZSBpbiB0aGUgbWlkZGxlIG9mIHRoZSBhdXRoLWNhbGxiYWNrIGhhbmRsaW5nXHJcbiAgICAgIGNvbnN0IHVybFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XHJcbiAgICAgIGlmICh1cmxQYXJhbXMuaGFzKCdjb2RlJykpIHtcclxuICAgICAgICB0aGlzLmxvZygnRGV0ZWN0ZWQgYXV0aCBjYWxsYmFjaywgc2tpcHBpbmcgaW5pdCBsb2dpbi4nKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0KSB7XHJcbiAgICAgICAgICB0aGlzLmxvZ2luKGV2ZW50LnVybCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXJ0TWFpbkxvb3AoKSB7XHJcbiAgICB0aGlzLmNoZWNrU3RhdHVzKCk7XHJcbiAgICB0aGlzLmludGVydmFsSWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB0aGlzLmNoZWNrU3RhdHVzKCksIDYwICogMTAwMCk7IC8vIDYwIHNlY29uZHMgKiAxMDAwIG1pbGxpc2Vjb25kc1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2dpbih1cmw6IHN0cmluZyA9IG51bGwpOiB2b2lkIHtcclxuICAgIHRoaXMubG9nKCd1cmwgd2hlbiBsb2dpbicsIHVybCk7XHJcbiAgICBpZiAodXJsKSB7XHJcbiAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oVXNlck1vZHVsZUNvbnN0YW50cy5DVVJSRU5UX1VSTCwgdXJsKTtcclxuICAgIH1cclxuICAgIHRoaXMuYXV0aG9yaXplKCk7XHJcbiAgfVxyXG5cclxuICBsb2dvdXQoKTogdm9pZCB7XHJcbiAgICBjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWxJZCk7XHJcbiAgICB0aGlzLmhhc0VtaXR0ZWQgPSBmYWxzZTtcclxuICAgIHNlc3Npb25TdG9yYWdlLmNsZWFyKCk7XHJcbiAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGAke3RoaXMuY29uZmlnLmlzc3Vlcn0vY29ubmVjdC9lbmRzZXNzaW9uP3Bvc3RfbG9nb3V0X3JlZGlyZWN0X3VyaT0ke3RoaXMuY29uZmlnLnBvc3RMb2dvdXRVcmx9YDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tTdGF0dXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmxvZygnY2hlY2tTdGF0dXMgcnVucycpXHJcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oVXNlck1vZHVsZUNvbnN0YW50cy5BQ0NFU1NfVE9LRU4pO1xyXG4gICAgaWYgKGFjY2Vzc1Rva2VuKSB7XHJcbiAgICAgIHRoaXMubG9nKCdoYXMgYWNjZXNzdG9rZW4nKVxyXG4gICAgICBjb25zdCB0aW1lVG9MaXZlID0gdGhpcy5nZXRUb2tlblRpbWVUb0xpdmUoKTtcclxuICAgICAgdGhpcy5sb2coJ3RpbWVUb0xpdmUnLCB0aW1lVG9MaXZlKVxyXG4gICAgICBpZiAodGltZVRvTGl2ZSA9PT0gMCkge1xyXG4gICAgICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oVXNlck1vZHVsZUNvbnN0YW50cy5BQ0NFU1NfVE9LRU4pO1xyXG4gICAgICAgIHRoaXMuYXV0aG9yaXplKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ2V0VG9rZW5UaW1lVG9MaXZlKCkgPD0gNjAgJiYgdGhpcy5oYXNVc2VyQmVlbkFjdGl2ZSgpICYmIHRoaXMuY2FuUmVmcmVzaFRva2VuKCkpIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCd0b2tlbiBpcyBhYm91dCB0byB0aW1lb3V0IGJ1dCB3ZSB3aWxsIHJlZnJlc2ggaXQgYmVjYXVzZSB1c2VyIGhhcyBiZWVuIGFjdGl2ZSB0aGUgbGFzdCA1bWludXRlcycpO1xyXG4gICAgICAgICAgdGhpcy5yZWZyZXNoVG9rZW4oKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5sb2coJ2hhc0VtaXR0ZWQnLCB0aGlzLmhhc0VtaXR0ZWQpO1xyXG4gICAgICAgIGlmICghdGhpcy5oYXNFbWl0dGVkKSB7XHJcbiAgICAgICAgICBjb25zdCB1c2VyID0gdGhpcy5nZXRVc2VyKGFjY2Vzc1Rva2VuKTtcclxuICAgICAgICAgIHRoaXMudXNlclN1YmplY3QubmV4dCh1c2VyKTtcclxuICAgICAgICAgIHRoaXMuaGFzRW1pdHRlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlZnJlc2hUb2tlbigpIHtcclxuICAgIGNvbnN0IGJvZHkgPSBgY2xpZW50X2lkPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMuY29uZmlnLmNsaWVudElkKX0mYCArXHJcbiAgICAgIGBncmFudF90eXBlPSR7ZW5jb2RlVVJJQ29tcG9uZW50KFwicmVmcmVzaF90b2tlblwiKX0mYCArXHJcbiAgICAgIGByZWZyZXNoX3Rva2VuPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oVXNlck1vZHVsZUNvbnN0YW50cy5SRUZSRVNIX1RPS0VOKSl9YDtcclxuICAgIHRoaXMuaHR0cC5wb3N0PGFueT4oYCR7dGhpcy5jb25maWcuaXNzdWVyfS9jb25uZWN0L3Rva2VuYCwgYm9keSwgeyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcgfSkgfSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogcmVzcG9uc2UgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0VG9rZW5zSW5TZXNzaW9uKHJlc3BvbnNlKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmxhc3RSZWZyZXNoVGltZSA9IERhdGUubm93KCk7XHJcbiAgfVxyXG5cclxuICBzZXRUb2tlbnNJblNlc3Npb24ocGFyYW1zOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChwYXJhbXMucmVmcmVzaF90b2tlbikge1xyXG4gICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKFVzZXJNb2R1bGVDb25zdGFudHMuUkVGUkVTSF9UT0tFTiwgcGFyYW1zLnJlZnJlc2hfdG9rZW4pO1xyXG4gICAgfVxyXG4gICAgaWYgKHBhcmFtcy5hY2Nlc3NfdG9rZW4pIHtcclxuICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShVc2VyTW9kdWxlQ29uc3RhbnRzLkFDQ0VTU19UT0tFTiwgcGFyYW1zLmFjY2Vzc190b2tlbik7XHJcbiAgICB9XHJcbiAgICBpZiAocGFyYW1zLmV4cGlyZXNfaW4pIHtcclxuICAgICAgY29uc3QgZXhwaXJlVGltZSA9IGFkZFNlY29uZHMobmV3IERhdGUoKSwgcGFyYW1zLmV4cGlyZXNfaW4pO1xyXG4gICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKFVzZXJNb2R1bGVDb25zdGFudHMuVE9LRU5fRVhQSVJFUywgZm9ybWF0KGV4cGlyZVRpbWUsICd5eXl5LU1NLWRkIEhIOm1tOnNzJykpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgYXV0aG9yaXplKCkge1xyXG4gICAgY29uc3QgY29kZVZlcmlmaWVyID0gQXJyYXkuZnJvbShjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50OEFycmF5KDY0KSksIGJ5dGUgPT5cclxuICAgICAgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5J1soYnl0ZSBhcyBudW1iZXIpICUgNjJdXHJcbiAgICApLmpvaW4oJycpO1xyXG4gICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShVc2VyTW9kdWxlQ29uc3RhbnRzLkNPREVfVkVSSUZJRVIsIGNvZGVWZXJpZmllcik7XHJcblxyXG4gICAgY29uc3QgZW5jb2RlciA9IG5ldyBUZXh0RW5jb2RlcigpO1xyXG4gICAgY29uc3QgZGF0YSA9IGVuY29kZXIuZW5jb2RlKGNvZGVWZXJpZmllcik7XHJcbiAgICBjb25zdCBoYXNoQnVmZmVyID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5kaWdlc3QoJ1NIQS0yNTYnLCBkYXRhKTtcclxuICAgIGNvbnN0IGhhc2hBcnJheSA9IG5ldyBVaW50OEFycmF5KGhhc2hCdWZmZXIpO1xyXG4gICAgbGV0IGNvZGVDaGFsbGVuZ2UgPSBidG9hKFN0cmluZy5mcm9tQ2hhckNvZGUoLi4uaGFzaEFycmF5KSk7XHJcbiAgICBjb2RlQ2hhbGxlbmdlID0gY29kZUNoYWxsZW5nZS5yZXBsYWNlKC89L2csICcnKVxyXG4gICAgICAucmVwbGFjZSgvXFwrL2csICctJylcclxuICAgICAgLnJlcGxhY2UoL1xcLy9nLCAnXycpO1xyXG5cclxuICAgIGNvbnN0IHBhcmFtcyA9IHtcclxuICAgICAgcmVzcG9uc2VfdHlwZTogdGhpcy5jb25maWcucmVzcG9uc2VUeXBlLFxyXG4gICAgICBjbGllbnRfaWQ6IHRoaXMuY29uZmlnLmNsaWVudElkLFxyXG4gICAgICByZWRpcmVjdF91cmk6IHRoaXMuY29uZmlnLnJlZGlyZWN0VXJsLFxyXG4gICAgICBzY29wZTogdGhpcy5jb25maWcuc2NvcGUsXHJcbiAgICAgIGNvZGVfY2hhbGxlbmdlOiBjb2RlQ2hhbGxlbmdlLFxyXG4gICAgICBjb2RlX2NoYWxsZW5nZV9tZXRob2Q6ICdTMjU2J1xyXG4gICAgfTtcclxuICAgIGNvbnN0IHVybCA9IG5ldyBVUkwodGhpcy5jb25maWcuaXNzdWVyICsgJy9jb25uZWN0L2F1dGhvcml6ZScpO1xyXG4gICAgdXJsLnNlYXJjaCA9IHRoaXMuYWRkUXVlcnlQYXJhbXMocGFyYW1zKS50b1N0cmluZygpO1xyXG4gICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB1cmwudG9TdHJpbmcoKTtcclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIGFkZFF1ZXJ5UGFyYW1zKG9iamVjdDogYW55KTogVVJMU2VhcmNoUGFyYW1zIHtcclxuICAgIGlmICghb2JqZWN0KSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdXJsUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xyXG4gICAgZm9yIChjb25zdCBwcm9wIGluIG9iamVjdCkge1xyXG4gICAgICB1cmxQYXJhbXMuYXBwZW5kKHByb3AsIG9iamVjdFtwcm9wXSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdXJsUGFyYW1zO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRUb2tlblRpbWVUb0xpdmUoKTogbnVtYmVyIHtcclxuICAgIGNvbnN0IGV4cGlyZXMgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFVzZXJNb2R1bGVDb25zdGFudHMuVE9LRU5fRVhQSVJFUyk7XHJcbiAgICBpZiAoZXhwaXJlcykge1xyXG4gICAgICBjb25zdCBleHBpcmVEYXRlID0gbmV3IERhdGUoZXhwaXJlcyk7XHJcbiAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XHJcbiAgICAgIGNvbnN0IHRpbWVUb0xpdmUgPSBNYXRoLmZsb29yKChleHBpcmVEYXRlLmdldFRpbWUoKSAtIG5vdy5nZXRUaW1lKCkpIC8gMTAwMCk7XHJcbiAgICAgIHJldHVybiB0aW1lVG9MaXZlIDwgMCA/IDAgOiB0aW1lVG9MaXZlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIDA7XHJcbiAgfVxyXG5cclxuICAvL0Nvb2xkb3duIGZvciBhdm9pZGluZyBpbmZpbml0ZSByZWZyZXNoXHJcbiAgcHJpdmF0ZSBjYW5SZWZyZXNoVG9rZW4oKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xyXG4gICAgaWYgKG5vdyAtIHRoaXMubGFzdFJlZnJlc2hUaW1lID4gKDIgKiA2MCAqIDEwMDApKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYXNVc2VyQmVlbkFjdGl2ZSgpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGxhc3RBY3RpdmUgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFVzZXJNb2R1bGVDb25zdGFudHMuVVNFUl9MQVNUX0FDVElWRSk7XHJcbiAgICBpZiAoIWxhc3RBY3RpdmUpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdGltZVNpbmNlTGFzdEFjdGl2ZSA9IERhdGUubm93KCkgLSBwYXJzZUludChsYXN0QWN0aXZlLCAxMCk7XHJcbiAgICBjb25zdCBpZGxlVGltZU1zID0gdGhpcy5jb25maWcuaWRsZVRpbWUgKiA2MCAqIDEwMDA7XHJcbiAgICByZXR1cm4gdGltZVNpbmNlTGFzdEFjdGl2ZSA8PSBpZGxlVGltZU1zO1xyXG4gIH1cclxuXHJcbiAgbG9nKG1lc3NhZ2U6IHN0cmluZywgLi4ub3B0aW9uYWxQYXJhbXM6IGFueVtdKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5jb25maWc/LmxvZykge1xyXG4gICAgICBpZiAob3B0aW9uYWxQYXJhbXM/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhtZXNzYWdlLCBvcHRpb25hbFBhcmFtcyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc29sZS5sb2cobWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFVzZXIodG9rZW46IHN0cmluZyk6IGFueSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBbaGVhZGVyLCBwYXlsb2FkLCBzaWduYXR1cmVdID0gdG9rZW4uc3BsaXQoJy4nKTtcclxuICAgICAgY29uc3QgYmFzZTY0VXJsID0gcGF5bG9hZC5yZXBsYWNlKC8tL2csICcrJykucmVwbGFjZSgvXy9nLCAnLycpO1xyXG4gICAgICBjb25zdCBkZWNvZGVkUGF5bG9hZCA9IGF0b2IoYmFzZTY0VXJsKTtcclxuICAgICAgY29uc3QgcGFyc2VkUGF5bG9hZCA9IEpTT04ucGFyc2UoZGVjb2RlZFBheWxvYWQpO1xyXG4gICAgICByZXR1cm4gcGFyc2VkUGF5bG9hZDtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGRlY29kaW5nIEpXVCcsIGVycm9yKTtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbn0iXX0=
|
|
209
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRiLXVzZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FydGRhdGEtc2hhcmVkL3NyYy9saWIvY29tcG9uZW50cy9hZGItdXNlci9hZGItdXNlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSx1QkFBdUIsRUFBd0IsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRixPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRCxPQUFPLEVBQWMsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDOUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBVSxNQUFNLGlCQUFpQixDQUFDOzs7O0FBSTFELE1BQU0sT0FBTyxjQUFjO0lBUXpCLHNCQUFzQjtJQUV0QixZQUMwQyxNQUE0QixFQUM1RCxJQUFnQixFQUNoQixNQUFjO1FBRmtCLFdBQU0sR0FBTixNQUFNLENBQXNCO1FBQzVELFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQVhoQixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbkMsZ0JBQVcsR0FBeUIsSUFBSSxlQUFlLENBQU0sSUFBSSxDQUFDLENBQUM7UUFDM0UsVUFBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFeEMsb0JBQWUsR0FBRyxDQUFDLENBQUM7UUFRbEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEs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WUFDakQsT0FBTyxhQUFhLENBQUM7UUFDdkIsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLG9CQUFvQixFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzNDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNuQyxDQUFDO2lJQWxOVSxjQUFjLGtCQVdmLHVCQUF1QjtxSUFYdEIsY0FBYzs7MkZBQWQsY0FBYztrQkFEMUIsVUFBVTs7MEJBWU4sTUFBTTsyQkFBQyx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBREJfVVNFUl9TRVJWSUNFX0NPTkZJRywgQWRiVXNlclNlcnZpY2VDb25maWcgfSBmcm9tICcuL2FkYi11c2VyLXNlcnZpY2UtY29uZmlnJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IGFkZFNlY29uZHMsIGZvcm1hdCB9IGZyb20gJ2RhdGUtZm5zJztcclxuaW1wb3J0IHsgVXNlck1vZHVsZUNvbnN0YW50cyB9IGZyb20gJy4vdXNlci1jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBOYXZpZ2F0aW9uU3RhcnQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQWRiVXNlclNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG5cclxuICBwcml2YXRlIHN1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcbiAgcHJpdmF0ZSB1c2VyU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCk7XHJcbiAgdXNlciQgPSB0aGlzLnVzZXJTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBsYXN0UmVmcmVzaFRpbWUgPSAwO1xyXG4gIGludGVydmFsSWQ6IGFueTtcclxuICAvLyBoYXNFbWl0dGVkID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdChBREJfVVNFUl9TRVJWSUNFX0NPTkZJRykgcHVibGljIGNvbmZpZzogQWRiVXNlclNlcnZpY2VDb25maWcsXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyKSB7XHJcbiAgICB0aGlzLmNvbmZpZyA9IHsgLi4ueyBzY29wZTogJ3JvbGVzJywgaWRsZVRpbWU6IDMwLCByZXNwb25zZV90eXBlOiAnY29kZScgfSwgLi4uY29uZmlnIH07XHJcbiAgfVxyXG5cclxuICBpbml0KCk6IHZvaWQge1xyXG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFVzZXJNb2R1bGVDb25zdGFudHMuQUNDRVNTX1RPS0VOKTtcclxuICAgIGlmIChhY2Nlc3NUb2tlbikge1xyXG4gICAgICBjb25zdCB1c2VyID0gdGhpcy5nZXRVc2VyKGFjY2Vzc1Rva2VuKTtcclxuICAgICAgdGhpcy51c2VyU3ViamVjdC5uZXh0KHVzZXIpO1xyXG4gICAgICB0aGlzLnN0YXJ0TWFpbkxvb3AoKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5jb25maWcuYXV0b0xvZ2luKSB7XHJcbiAgICAgIC8vTk9URTogQXZvaWQgcmUtdHJpZ2dlcmluZyBsb2dpbiBpZiB3ZSdyZSBpbiB0aGUgbWlkZGxlIG9mIHRoZSBhdXRoLWNhbGxiYWNrIGhhbmRsaW5nXHJcbiAgICAgIGNvbnN0IHVybFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XHJcbiAgICAgIGlmICh1cmxQYXJhbXMuaGFzKCdjb2RlJykpIHtcclxuICAgICAgICB0aGlzLmxvZygnRGV0ZWN0ZWQgYXV0aCBjYWxsYmFjaywgc2tpcHBpbmcgaW5pdCBsb2dpbi4nKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0KSB7XHJcbiAgICAgICAgICB0aGlzLmxvZ2luKGV2ZW50LnVybCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXJ0TWFpbkxvb3AoKSB7XHJcbiAgICB0aGlzLmNoZWNrU3RhdHVzKCk7XHJcbiAgICB0aGlzLmludGVydmFsSWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB0aGlzLmNoZWNrU3RhdHVzKCksIDYwICogMTAwMCk7IC8vIDYwIHNlY29uZHMgKiAxMDAwIG1pbGxpc2Vjb25kc1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2dpbih1cmw6IHN0cmluZyA9IG51bGwpOiB2b2lkIHtcclxuICAgIHRoaXMubG9nKCd1cmwgd2hlbiBsb2dpbicsIHVybCk7XHJcbiAgICBpZiAodXJsKSB7XHJcbiAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oVXNlck1vZHVsZUNvbnN0YW50cy5DVVJSRU5UX1VSTCwgdXJsKTtcclxuICAgIH1cclxuICAgIHRoaXMuYXV0aG9yaXplKCk7XHJcbiAgfVxyXG5cclxuICBsb2dvdXQoKTogdm9pZCB7XHJcbiAgICBjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWxJZCk7XHJcbiAgICAvLyB0aGlzLmhhc0VtaXR0ZWQgPSBmYWxzZTtcclxuICAgIHNlc3Npb25TdG9yYWdlLmNsZWFyKCk7XHJcbiAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGAke3RoaXMuY29uZmlnLmlzc3Vlcn0vY29ubmVjdC9lbmRzZXNzaW9uP3Bvc3RfbG9nb3V0X3JlZGlyZWN0X3VyaT0ke3RoaXMuY29uZmlnLnBvc3RMb2dvdXRVcmx9YDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tTdGF0dXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmxvZygnY2hlY2tTdGF0dXMgcnVucycpXHJcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oVXNlck1vZHVsZUNvbnN0YW50cy5BQ0NFU1NfVE9LRU4pO1xyXG4gICAgaWYgKGFjY2Vzc1Rva2VuKSB7XHJcbiAgICAgIHRoaXMubG9nKCdoYXMgYWNjZXNzdG9rZW4nKVxyXG4gICAgICBjb25zdCB0aW1lVG9MaXZlID0gdGhpcy5nZXRUb2tlblRpbWVUb0xpdmUoKTtcclxuICAgICAgdGhpcy5sb2coJ3RpbWVUb0xpdmUnLCB0aW1lVG9MaXZlKVxyXG4gICAgICBpZiAodGltZVRvTGl2ZSA9PT0gMCkge1xyXG4gICAgICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oVXNlck1vZHVsZUNvbnN0YW50cy5BQ0NFU1NfVE9LRU4pO1xyXG4gICAgICAgIHRoaXMuYXV0aG9yaXplKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ2V0VG9rZW5UaW1lVG9MaXZlKCkgPD0gNjAgJiYgdGhpcy5oYXNVc2VyQmVlbkFjdGl2ZSgpICYmIHRoaXMuY2FuUmVmcmVzaFRva2VuKCkpIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCd0b2tlbiBpcyBhYm91dCB0byB0aW1lb3V0IGJ1dCB3ZSB3aWxsIHJlZnJlc2ggaXQgYmVjYXVzZSB1c2VyIGhhcyBiZWVuIGFjdGl2ZSB0aGUgbGFzdCA1bWludXRlcycpO1xyXG4gICAgICAgICAgdGhpcy5yZWZyZXNoVG9rZW4oKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy9OT1RFOiBNaWdodCBub3QgYmUgbmVlZGVkIGluIHRoaXMgdmFyaWFudFxyXG4gICAgICAgIC8vIGlmICghdGhpcy5oYXNFbWl0dGVkKSB7XHJcbiAgICAgICAgLy8gICBjb25zdCB1c2VyID0gdGhpcy5nZXRVc2VyKGFjY2Vzc1Rva2VuKTtcclxuICAgICAgICAvLyAgIHRoaXMudXNlclN1YmplY3QubmV4dCh1c2VyKTtcclxuICAgICAgICAvLyAgIHRoaXMuaGFzRW1pdHRlZCA9IHRydWU7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIFxyXG4gIC8vVE9ETzogbWFrZSBpdCBub3QgZXhwb3J0ZWQgYnkgdGhlIG1vZHVsZVxyXG4gIF9pbnRlcm5hbFRyaWdnZXJVc2VyRXZlbnQodG9rZW46c3RyaW5nKTp2b2lke1xyXG4gICAgICBjb25zdCB1c2VyID0gdGhpcy5nZXRVc2VyKHRva2VuKTtcclxuICAgICAgdGhpcy51c2VyU3ViamVjdC5uZXh0KHVzZXIpO1xyXG5cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVmcmVzaFRva2VuKCkge1xyXG4gICAgY29uc3QgYm9keSA9IGBjbGllbnRfaWQ9JHtlbmNvZGVVUklDb21wb25lbnQodGhpcy5jb25maWcuY2xpZW50SWQpfSZgICtcclxuICAgICAgYGdyYW50X3R5cGU9JHtlbmNvZGVVUklDb21wb25lbnQoXCJyZWZyZXNoX3Rva2VuXCIpfSZgICtcclxuICAgICAgYHJlZnJlc2hfdG9rZW49JHtlbmNvZGVVUklDb21wb25lbnQoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShVc2VyTW9kdWxlQ29uc3RhbnRzLlJFRlJFU0hfVE9LRU4pKX1gO1xyXG4gICAgdGhpcy5odHRwLnBvc3Q8YW55PihgJHt0aGlzLmNvbmZpZy5pc3N1ZXJ9L2Nvbm5lY3QvdG9rZW5gLCBib2R5LCB7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyB9KSB9KS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiByZXNwb25zZSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXRUb2tlbnNJblNlc3Npb24ocmVzcG9uc2UpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMubGFzdFJlZnJlc2hUaW1lID0gRGF0ZS5ub3coKTtcclxuICB9XHJcblxyXG4gIHNldFRva2Vuc0luU2Vzc2lvbihwYXJhbXM6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKHBhcmFtcy5yZWZyZXNoX3Rva2VuKSB7XHJcbiAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oVXNlck1vZHVsZUNvbnN0YW50cy5SRUZSRVNIX1RPS0VOLCBwYXJhbXMucmVmcmVzaF90b2tlbik7XHJcbiAgICB9XHJcbiAgICBpZiAocGFyYW1zLmFjY2Vzc190b2tlbikge1xyXG4gICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKFVzZXJNb2R1bGVDb25zdGFudHMuQUNDRVNTX1RPS0VOLCBwYXJhbXMuYWNjZXNzX3Rva2VuKTtcclxuICAgIH1cclxuICAgIGlmIChwYXJhbXMuZXhwaXJlc19pbikge1xyXG4gICAgICBjb25zdCBleHBpcmVUaW1lID0gYWRkU2Vjb25kcyhuZXcgRGF0ZSgpLCBwYXJhbXMuZXhwaXJlc19pbik7XHJcbiAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oVXNlck1vZHVsZUNvbnN0YW50cy5UT0tFTl9FWFBJUkVTLCBmb3JtYXQoZXhwaXJlVGltZSwgJ3l5eXktTU0tZGQgSEg6bW06c3MnKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBhdXRob3JpemUoKSB7XHJcbiAgICBjb25zdCBjb2RlVmVyaWZpZXIgPSBBcnJheS5mcm9tKGNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQ4QXJyYXkoNjQpKSwgYnl0ZSA9PlxyXG4gICAgICAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODknWyhieXRlIGFzIG51bWJlcikgJSA2Ml1cclxuICAgICkuam9pbignJyk7XHJcbiAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKFVzZXJNb2R1bGVDb25zdGFudHMuQ09ERV9WRVJJRklFUiwgY29kZVZlcmlmaWVyKTtcclxuXHJcbiAgICBjb25zdCBlbmNvZGVyID0gbmV3IFRleHRFbmNvZGVyKCk7XHJcbiAgICBjb25zdCBkYXRhID0gZW5jb2Rlci5lbmNvZGUoY29kZVZlcmlmaWVyKTtcclxuICAgIGNvbnN0IGhhc2hCdWZmZXIgPSBhd2FpdCBjcnlwdG8uc3VidGxlLmRpZ2VzdCgnU0hBLTI1NicsIGRhdGEpO1xyXG4gICAgY29uc3QgaGFzaEFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoaGFzaEJ1ZmZlcik7XHJcbiAgICBsZXQgY29kZUNoYWxsZW5nZSA9IGJ0b2EoU3RyaW5nLmZyb21DaGFyQ29kZSguLi5oYXNoQXJyYXkpKTtcclxuICAgIGNvZGVDaGFsbGVuZ2UgPSBjb2RlQ2hhbGxlbmdlLnJlcGxhY2UoLz0vZywgJycpXHJcbiAgICAgIC5yZXBsYWNlKC9cXCsvZywgJy0nKVxyXG4gICAgICAucmVwbGFjZSgvXFwvL2csICdfJyk7XHJcblxyXG4gICAgY29uc3QgcGFyYW1zID0ge1xyXG4gICAgICByZXNwb25zZV90eXBlOiB0aGlzLmNvbmZpZy5yZXNwb25zZVR5cGUsXHJcbiAgICAgIGNsaWVudF9pZDogdGhpcy5jb25maWcuY2xpZW50SWQsXHJcbiAgICAgIHJlZGlyZWN0X3VyaTogdGhpcy5jb25maWcucmVkaXJlY3RVcmwsXHJcbiAgICAgIHNjb3BlOiB0aGlzLmNvbmZpZy5zY29wZSxcclxuICAgICAgY29kZV9jaGFsbGVuZ2U6IGNvZGVDaGFsbGVuZ2UsXHJcbiAgICAgIGNvZGVfY2hhbGxlbmdlX21ldGhvZDogJ1MyNTYnXHJcbiAgICB9O1xyXG4gICAgY29uc3QgdXJsID0gbmV3IFVSTCh0aGlzLmNvbmZpZy5pc3N1ZXIgKyAnL2Nvbm5lY3QvYXV0aG9yaXplJyk7XHJcbiAgICB1cmwuc2VhcmNoID0gdGhpcy5hZGRRdWVyeVBhcmFtcyhwYXJhbXMpLnRvU3RyaW5nKCk7XHJcbiAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHVybC50b1N0cmluZygpO1xyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgYWRkUXVlcnlQYXJhbXMob2JqZWN0OiBhbnkpOiBVUkxTZWFyY2hQYXJhbXMge1xyXG4gICAgaWYgKCFvYmplY3QpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBjb25zdCB1cmxQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XHJcbiAgICBmb3IgKGNvbnN0IHByb3AgaW4gb2JqZWN0KSB7XHJcbiAgICAgIHVybFBhcmFtcy5hcHBlbmQocHJvcCwgb2JqZWN0W3Byb3BdKTtcclxuICAgIH1cclxuICAgIHJldHVybiB1cmxQYXJhbXM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFRva2VuVGltZVRvTGl2ZSgpOiBudW1iZXIge1xyXG4gICAgY29uc3QgZXhwaXJlcyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oVXNlck1vZHVsZUNvbnN0YW50cy5UT0tFTl9FWFBJUkVTKTtcclxuICAgIGlmIChleHBpcmVzKSB7XHJcbiAgICAgIGNvbnN0IGV4cGlyZURhdGUgPSBuZXcgRGF0ZShleHBpcmVzKTtcclxuICAgICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcclxuICAgICAgY29uc3QgdGltZVRvTGl2ZSA9IE1hdGguZmxvb3IoKGV4cGlyZURhdGUuZ2V0VGltZSgpIC0gbm93LmdldFRpbWUoKSkgLyAxMDAwKTtcclxuICAgICAgcmV0dXJuIHRpbWVUb0xpdmUgPCAwID8gMCA6IHRpbWVUb0xpdmU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gMDtcclxuICB9XHJcblxyXG4gIC8vQ29vbGRvd24gZm9yIGF2b2lkaW5nIGluZmluaXRlIHJlZnJlc2hcclxuICBwcml2YXRlIGNhblJlZnJlc2hUb2tlbigpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XHJcbiAgICBpZiAobm93IC0gdGhpcy5sYXN0UmVmcmVzaFRpbWUgPiAoMiAqIDYwICogMTAwMCkpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhc1VzZXJCZWVuQWN0aXZlKCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgbGFzdEFjdGl2ZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oVXNlck1vZHVsZUNvbnN0YW50cy5VU0VSX0xBU1RfQUNUSVZFKTtcclxuICAgIGlmICghbGFzdEFjdGl2ZSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBjb25zdCB0aW1lU2luY2VMYXN0QWN0aXZlID0gRGF0ZS5ub3coKSAtIHBhcnNlSW50KGxhc3RBY3RpdmUsIDEwKTtcclxuICAgIGNvbnN0IGlkbGVUaW1lTXMgPSB0aGlzLmNvbmZpZy5pZGxlVGltZSAqIDYwICogMTAwMDtcclxuICAgIHJldHVybiB0aW1lU2luY2VMYXN0QWN0aXZlIDw9IGlkbGVUaW1lTXM7XHJcbiAgfVxyXG5cclxuICBsb2cobWVzc2FnZTogc3RyaW5nLCAuLi5vcHRpb25hbFBhcmFtczogYW55W10pOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmNvbmZpZz8ubG9nKSB7XHJcbiAgICAgIGlmIChvcHRpb25hbFBhcmFtcz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKG1lc3NhZ2UsIG9wdGlvbmFsUGFyYW1zKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhtZXNzYWdlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0VXNlcih0b2tlbjogc3RyaW5nKTogYW55IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IFtoZWFkZXIsIHBheWxvYWQsIHNpZ25hdHVyZV0gPSB0b2tlbi5zcGxpdCgnLicpO1xyXG4gICAgICBjb25zdCBiYXNlNjRVcmwgPSBwYXlsb2FkLnJlcGxhY2UoLy0vZywgJysnKS5yZXBsYWNlKC9fL2csICcvJyk7XHJcbiAgICAgIGNvbnN0IGRlY29kZWRQYXlsb2FkID0gYXRvYihiYXNlNjRVcmwpO1xyXG4gICAgICBjb25zdCBwYXJzZWRQYXlsb2FkID0gSlNPTi5wYXJzZShkZWNvZGVkUGF5bG9hZCk7XHJcbiAgICAgIHJldHVybiBwYXJzZWRQYXlsb2FkO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZGVjb2RpbmcgSldUJywgZXJyb3IpO1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxufSJdfQ==
|
|
@@ -26,6 +26,7 @@ export class AuthCallbackComponent {
|
|
|
26
26
|
next: response => {
|
|
27
27
|
this.adbUserService.setTokensInSession(response);
|
|
28
28
|
let requestedUrl = sessionStorage.getItem(UserModuleConstants.CURRENT_URL) ?? null;
|
|
29
|
+
this.adbUserService._internalTriggerUserEvent(response.access_token);
|
|
29
30
|
this.adbUserService.log('redirect url in auth-callback', requestedUrl);
|
|
30
31
|
if (requestedUrl) {
|
|
31
32
|
this.router.navigate([requestedUrl], { replaceUrl: true }).then(() => {
|
|
@@ -53,4 +54,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
|
53
54
|
template: '<div class="loading-dead-spinner"></div>'
|
|
54
55
|
}]
|
|
55
56
|
}], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i1.Router }, { type: i2.HttpClient }, { type: i3.AdbUserService }] });
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1jYWxsYmFjay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnRkYXRhLXNoYXJlZC9zcmMvbGliL2NvbXBvbmVudHMvYWRiLXVzZXIvYXV0aC1jYWxsYmFjay5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBDLE9BQU8sRUFBYyxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7QUFNdkQsTUFBTSxPQUFPLHFCQUFxQjtJQUU5QixZQUNZLGNBQThCLEVBQzlCLE1BQWMsRUFDZCxJQUFnQixFQUNoQixjQUE4QjtRQUg5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBTGxDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUtHLENBQUM7SUFFL0MsUUFBUTtRQUNKLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUN6RSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDdEIsTUFBTSxJQUFJLEdBQUcsK0JBQStCO29CQUN4QyxTQUFTLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRTtvQkFDbEQsa0JBQWtCLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRTtvQkFDakcsaUJBQWlCLGtCQUFrQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFO29CQUM3RSxjQUFjLGtCQUFrQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBRTVFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsRUFBRSxJQUFJLEVBQzFFLEVBQUUsT0FBTyxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsY0FBYyxFQUFFLG1DQUFtQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDO29CQUM3RixJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQUU7d0JBQ2IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsQ0FBQzt3QkFDakQsSUFBSSxZQUFZLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsSUFBSSxJQUFJLENBQUM7d0JBQ25GLElBQUksQ0FBQyxjQUFjLENBQUMseUJBQXlCLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO3dCQUNyRSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQywrQkFBK0IsRUFBQyxZQUFZLENBQUMsQ0FBQzt3QkFDdEUsSUFBSSxZQUFZLEVBQUUsQ0FBQzs0QkFDZixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtnQ0FDakUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsQ0FBQzs0QkFDeEMsQ0FBQyxDQUFDLENBQUM7NEJBQ0gsY0FBYyxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsQ0FBQzt3QkFDL0QsQ0FBQzs2QkFBSSxDQUFDOzRCQUNGLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO2dDQUN4RCxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDOzRCQUN4QyxDQUFDLENBQUMsQ0FBQzs0QkFBQSxDQUFDO3dCQUNSLENBQUM7b0JBQ0wsQ0FBQztpQkFDSixDQUFDLENBQUM7WUFDWCxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7aUlBdENRLHFCQUFxQjtxSEFBckIscUJBQXFCLG9EQUZwQiwwQ0FBMEM7OzJGQUUzQyxxQkFBcUI7a0JBSGpDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLDBDQUEwQztpQkFDdkQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7IFVzZXJNb2R1bGVDb25zdGFudHMgfSBmcm9tIFwiLi91c2VyLWNvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBBZGJVc2VyU2VydmljZSB9IGZyb20gXCIuL2FkYi11c2VyLnNlcnZpY2VcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgdGVtcGxhdGU6ICc8ZGl2IGNsYXNzPVwibG9hZGluZy1kZWFkLXNwaW5uZXJcIj48L2Rpdj4nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdXRoQ2FsbGJhY2tDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgICAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICAgICAgcHJpdmF0ZSBhZGJVc2VyU2VydmljZTogQWRiVXNlclNlcnZpY2UpIHsgfVxyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQodGhpcy5hY3RpdmF0ZWRSb3V0ZS5xdWVyeVBhcmFtTWFwLnN1YnNjcmliZShxUGFybWFzID0+IHtcclxuICAgICAgICAgICAgaWYgKHFQYXJtYXMuaGFzKCdjb2RlJykpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGJvZHkgPSBgZ3JhbnRfdHlwZT1hdXRob3JpemF0aW9uX2NvZGVgICtcclxuICAgICAgICAgICAgICAgICAgICBgJmNvZGU9JHtlbmNvZGVVUklDb21wb25lbnQocVBhcm1hcy5nZXQoJ2NvZGUnKSl9YCArXHJcbiAgICAgICAgICAgICAgICAgICAgYCZjb2RlX3ZlcmlmaWVyPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oVXNlck1vZHVsZUNvbnN0YW50cy5DT0RFX1ZFUklGSUVSKSl9YCArXHJcbiAgICAgICAgICAgICAgICAgICAgYCZyZWRpcmVjdF91cmk9JHtlbmNvZGVVUklDb21wb25lbnQodGhpcy5hZGJVc2VyU2VydmljZS5jb25maWcucmVkaXJlY3RVcmwpfWAgK1xyXG4gICAgICAgICAgICAgICAgICAgIGAmY2xpZW50X2lkPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMuYWRiVXNlclNlcnZpY2UuY29uZmlnLmNsaWVudElkKX1gO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuaHR0cC5wb3N0PGFueT4oYCR7dGhpcy5hZGJVc2VyU2VydmljZS5jb25maWcuaXNzdWVyfS9jb25uZWN0L3Rva2VuYCwgYm9keSxcclxuICAgICAgICAgICAgICAgICAgICB7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyB9KSB9KS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0OiByZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkYlVzZXJTZXJ2aWNlLnNldFRva2Vuc0luU2Vzc2lvbihyZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVxdWVzdGVkVXJsID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShVc2VyTW9kdWxlQ29uc3RhbnRzLkNVUlJFTlRfVVJMKSA/PyBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGJVc2VyU2VydmljZS5faW50ZXJuYWxUcmlnZ2VyVXNlckV2ZW50KHJlc3BvbnNlLmFjY2Vzc190b2tlbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkYlVzZXJTZXJ2aWNlLmxvZygncmVkaXJlY3QgdXJsIGluIGF1dGgtY2FsbGJhY2snLHJlcXVlc3RlZFVybCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVxdWVzdGVkVXJsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3JlcXVlc3RlZFVybF0sIHsgcmVwbGFjZVVybDogdHJ1ZSB9KS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGJVc2VyU2VydmljZS5zdGFydE1haW5Mb29wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbShVc2VyTW9kdWxlQ29uc3RhbnRzLkNVUlJFTlRfVVJMKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLyddLCB7IHJlcGxhY2VVcmw6IHRydWUgfSkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRiVXNlclNlcnZpY2Uuc3RhcnRNYWluTG9vcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSkpO1xyXG4gICAgfVxyXG59Il19
|
package/fesm2022/adb-shared.mjs
CHANGED
|
@@ -2041,6 +2041,7 @@ class UserModuleConstants {
|
|
|
2041
2041
|
}
|
|
2042
2042
|
|
|
2043
2043
|
class AdbUserService {
|
|
2044
|
+
// hasEmitted = false;
|
|
2044
2045
|
constructor(config, http, router) {
|
|
2045
2046
|
this.config = config;
|
|
2046
2047
|
this.http = http;
|
|
@@ -2049,7 +2050,6 @@ class AdbUserService {
|
|
|
2049
2050
|
this.userSubject = new BehaviorSubject(null);
|
|
2050
2051
|
this.user$ = this.userSubject.asObservable();
|
|
2051
2052
|
this.lastRefreshTime = 0;
|
|
2052
|
-
this.hasEmitted = false;
|
|
2053
2053
|
this.config = { ...{ scope: 'roles', idleTime: 30, response_type: 'code' }, ...config };
|
|
2054
2054
|
}
|
|
2055
2055
|
init() {
|
|
@@ -2086,7 +2086,7 @@ class AdbUserService {
|
|
|
2086
2086
|
}
|
|
2087
2087
|
logout() {
|
|
2088
2088
|
clearInterval(this.intervalId);
|
|
2089
|
-
this.hasEmitted = false;
|
|
2089
|
+
// this.hasEmitted = false;
|
|
2090
2090
|
sessionStorage.clear();
|
|
2091
2091
|
window.location.href = `${this.config.issuer}/connect/endsession?post_logout_redirect_uri=${this.config.postLogoutUrl}`;
|
|
2092
2092
|
}
|
|
@@ -2106,15 +2106,20 @@ class AdbUserService {
|
|
|
2106
2106
|
console.log('token is about to timeout but we will refresh it because user has been active the last 5minutes');
|
|
2107
2107
|
this.refreshToken();
|
|
2108
2108
|
}
|
|
2109
|
-
this
|
|
2110
|
-
if (!this.hasEmitted) {
|
|
2111
|
-
|
|
2112
|
-
|
|
2113
|
-
|
|
2114
|
-
}
|
|
2109
|
+
//NOTE: Might not be needed in this variant
|
|
2110
|
+
// if (!this.hasEmitted) {
|
|
2111
|
+
// const user = this.getUser(accessToken);
|
|
2112
|
+
// this.userSubject.next(user);
|
|
2113
|
+
// this.hasEmitted = true;
|
|
2114
|
+
// }
|
|
2115
2115
|
}
|
|
2116
2116
|
}
|
|
2117
2117
|
}
|
|
2118
|
+
//TODO: make it not exported by the module
|
|
2119
|
+
_internalTriggerUserEvent(token) {
|
|
2120
|
+
const user = this.getUser(token);
|
|
2121
|
+
this.userSubject.next(user);
|
|
2122
|
+
}
|
|
2118
2123
|
refreshToken() {
|
|
2119
2124
|
const body = `client_id=${encodeURIComponent(this.config.clientId)}&` +
|
|
2120
2125
|
`grant_type=${encodeURIComponent("refresh_token")}&` +
|
|
@@ -2254,6 +2259,7 @@ class AuthCallbackComponent {
|
|
|
2254
2259
|
next: response => {
|
|
2255
2260
|
this.adbUserService.setTokensInSession(response);
|
|
2256
2261
|
let requestedUrl = sessionStorage.getItem(UserModuleConstants.CURRENT_URL) ?? null;
|
|
2262
|
+
this.adbUserService._internalTriggerUserEvent(response.access_token);
|
|
2257
2263
|
this.adbUserService.log('redirect url in auth-callback', requestedUrl);
|
|
2258
2264
|
if (requestedUrl) {
|
|
2259
2265
|
this.router.navigate([requestedUrl], { replaceUrl: true }).then(() => {
|