adb-shared 6.0.27 → 6.0.30
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.interceptor.mjs +5 -5
- package/esm2022/lib/components/adb-user/adb-user.module.mjs +11 -11
- package/esm2022/lib/components/adb-user/adb-user.service.mjs +21 -30
- package/esm2022/lib/components/adb-user/auth-callback.component.mjs +13 -9
- package/esm2022/lib/components/adb-user/user-constants.mjs +3 -2
- package/fesm2022/adb-shared.mjs +90 -93
- package/fesm2022/adb-shared.mjs.map +1 -1
- package/lib/components/adb-user/adb-user.module.d.ts +5 -5
- package/lib/components/adb-user/adb-user.service.d.ts +1 -1
- package/lib/components/adb-user/auth-callback.component.d.ts +1 -1
- package/lib/components/adb-user/user-constants.d.ts +2 -1
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
2
|
import { catchError, throwError } from 'rxjs';
|
|
3
|
-
import {
|
|
3
|
+
import { UserModuleConstants } from './user-constants';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
import * as i1 from "./adb-user.service";
|
|
6
6
|
export class AdbUserInterceptor {
|
|
@@ -10,9 +10,9 @@ export class AdbUserInterceptor {
|
|
|
10
10
|
}
|
|
11
11
|
intercept(req, next) {
|
|
12
12
|
if (req.headers.get('X-System-Request') !== 'true') {
|
|
13
|
-
sessionStorage.setItem(
|
|
13
|
+
sessionStorage.setItem(UserModuleConstants.USER_LAST_ACTIVE, Date.now().toString());
|
|
14
14
|
}
|
|
15
|
-
const accessToken = sessionStorage.getItem(
|
|
15
|
+
const accessToken = sessionStorage.getItem(UserModuleConstants.ACCESS_TOKEN);
|
|
16
16
|
if (accessToken) {
|
|
17
17
|
const clonedRequest = req.clone({
|
|
18
18
|
setHeaders: {
|
|
@@ -32,7 +32,7 @@ export class AdbUserInterceptor {
|
|
|
32
32
|
}
|
|
33
33
|
else {
|
|
34
34
|
if (error.status === AdbUserInterceptor.UNAUTHENTICATED) {
|
|
35
|
-
this.adbUserService.
|
|
35
|
+
this.adbUserService.login();
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
return throwError(() => error);
|
|
@@ -43,4 +43,4 @@ export class AdbUserInterceptor {
|
|
|
43
43
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: AdbUserInterceptor, decorators: [{
|
|
44
44
|
type: Injectable
|
|
45
45
|
}], ctorParameters: () => [{ type: i1.AdbUserService }] });
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRiLXVzZXIuaW50ZXJjZXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnRkYXRhLXNoYXJlZC9zcmMvbGliL2NvbXBvbmVudHMvYWRiLXVzZXIvYWRiLXVzZXIuaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsVUFBVSxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7O0FBSXZELE1BQU0sT0FBTyxrQkFBa0I7YUFDWixvQkFBZSxHQUFHLEdBQUcsQUFBTixDQUFPO0lBQ3JDLFlBQW9CLGNBQThCO1FBQTlCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtJQUFJLENBQUM7SUFFdkQsU0FBUyxDQUFDLEdBQXFCLEVBQUUsSUFBaUI7UUFDOUMsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQ2pELGNBQWMsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDeEYsQ0FBQztRQUNELE1BQU0sV0FBVyxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDN0UsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNkLE1BQU0sYUFBYSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7Z0JBQzVCLFVBQVUsRUFBRTtvQkFDUixhQUFhLEVBQUUsVUFBVSxXQUFXLEVBQUU7aUJBQ3pDO2FBQ0osQ0FBQyxDQUFDO1lBQ0gsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFzQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzRyxDQUFDO2FBQU0sQ0FBQztZQUNKLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBc0IsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFBQSxDQUFDO1FBQ2xHLENBQUM7SUFDTCxDQUFDO0lBR08sWUFBWSxDQUFDLEtBQXdCO1FBQ3pDLElBQUksS0FBSyxDQUFDLEtBQUssWUFBWSxVQUFVLEVBQUUsQ0FBQztZQUNwQyxvQkFBb0I7UUFDeEIsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssa0JBQWtCLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ3RELElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDaEMsQ0FBQztRQUNMLENBQUM7UUFDRCxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDO2lJQS9CUSxrQkFBa0I7cUlBQWxCLGtCQUFrQjs7MkZBQWxCLGtCQUFrQjtrQkFEOUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cEludGVyY2VwdG9yLCBIdHRwUmVxdWVzdCwgSHR0cEhhbmRsZXIsIEh0dHBFdmVudCwgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBVc2VyTW9kdWxlQ29uc3RhbnRzIH0gZnJvbSAnLi91c2VyLWNvbnN0YW50cyc7XHJcbmltcG9ydCB7IEFkYlVzZXJTZXJ2aWNlIH0gZnJvbSAnLi9hZGItdXNlci5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEFkYlVzZXJJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XHJcbiAgICBwcml2YXRlIHN0YXRpYyBVTkFVVEhFTlRJQ0FURUQgPSA0MDE7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFkYlVzZXJTZXJ2aWNlOiBBZGJVc2VyU2VydmljZSkgeyB9XHJcblxyXG4gICAgaW50ZXJjZXB0KHJlcTogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XHJcbiAgICAgICAgaWYgKHJlcS5oZWFkZXJzLmdldCgnWC1TeXN0ZW0tUmVxdWVzdCcpICE9PSAndHJ1ZScpIHtcclxuICAgICAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShVc2VyTW9kdWxlQ29uc3RhbnRzLlVTRVJfTEFTVF9BQ1RJVkUsIERhdGUubm93KCkudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShVc2VyTW9kdWxlQ29uc3RhbnRzLkFDQ0VTU19UT0tFTik7XHJcbiAgICAgICAgaWYgKGFjY2Vzc1Rva2VuKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNsb25lZFJlcXVlc3QgPSByZXEuY2xvbmUoe1xyXG4gICAgICAgICAgICAgICAgc2V0SGVhZGVyczoge1xyXG4gICAgICAgICAgICAgICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHthY2Nlc3NUb2tlbn1gXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICByZXR1cm4gbmV4dC5oYW5kbGUoY2xvbmVkUmVxdWVzdCkucGlwZShjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9ycyhlcnIpKSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcSkucGlwZShjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9ycyhlcnIpKSk7O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgcHJpdmF0ZSBoYW5kbGVFcnJvcnMoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSB7XHJcbiAgICAgICAgaWYgKGVycm9yLmVycm9yIGluc3RhbmNlb2YgRXJyb3JFdmVudCkge1xyXG4gICAgICAgICAgICAvLyBDbGllbnQtc2lkZSBlcnJvclxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT09IEFkYlVzZXJJbnRlcmNlcHRvci5VTkFVVEhFTlRJQ0FURUQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWRiVXNlclNlcnZpY2UubG9naW4oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -2,32 +2,32 @@ import { CommonModule } from "@angular/common";
|
|
|
2
2
|
import { HTTP_INTERCEPTORS } from "@angular/common/http";
|
|
3
3
|
import { NgModule } from "@angular/core";
|
|
4
4
|
import { TranslateModule } from "@ngx-translate/core";
|
|
5
|
-
import { AdbUserInterceptor } from "./adb-user.interceptor";
|
|
6
5
|
import { ADB_USER_SERVICE_CONFIG, DEFAULT_ADB_USER_SERVICE_CONFIG } from "./adb-user-service-config";
|
|
7
|
-
import { AdbUserService } from "./adb-user.service";
|
|
8
6
|
import { RouterModule } from "@angular/router";
|
|
9
7
|
import { AuthCallbackComponent } from "./auth-callback.component";
|
|
8
|
+
import { AdbUserService } from "./adb-user.service";
|
|
9
|
+
import { AdbUserInterceptor } from "./adb-user.interceptor";
|
|
10
10
|
import * as i0 from "@angular/core";
|
|
11
11
|
import * as i1 from "@angular/router";
|
|
12
12
|
import * as i2 from "@ngx-translate/core";
|
|
13
13
|
const routes = [
|
|
14
14
|
{ path: 'auth-callback', component: AuthCallbackComponent }
|
|
15
15
|
];
|
|
16
|
-
export class
|
|
16
|
+
export class AdbUserModule2 {
|
|
17
17
|
static forRoot(config) {
|
|
18
18
|
return {
|
|
19
|
-
ngModule:
|
|
19
|
+
ngModule: AdbUserModule2,
|
|
20
20
|
providers: [
|
|
21
21
|
{
|
|
22
22
|
provide: ADB_USER_SERVICE_CONFIG,
|
|
23
|
-
useValue: { ...DEFAULT_ADB_USER_SERVICE_CONFIG, ...config }
|
|
24
|
-
}
|
|
23
|
+
useValue: { ...DEFAULT_ADB_USER_SERVICE_CONFIG, ...config }
|
|
24
|
+
}
|
|
25
25
|
],
|
|
26
26
|
};
|
|
27
27
|
}
|
|
28
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type:
|
|
29
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.8", ngImport: i0, type:
|
|
30
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type:
|
|
28
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: AdbUserModule2, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
29
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.8", ngImport: i0, type: AdbUserModule2, declarations: [AuthCallbackComponent], imports: [CommonModule, i1.RouterModule, i2.TranslateModule], exports: [AuthCallbackComponent] }); }
|
|
30
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: AdbUserModule2, providers: [
|
|
31
31
|
AdbUserService,
|
|
32
32
|
{
|
|
33
33
|
provide: HTTP_INTERCEPTORS,
|
|
@@ -36,7 +36,7 @@ export class AdbUserModule {
|
|
|
36
36
|
}
|
|
37
37
|
], imports: [CommonModule, RouterModule.forChild(routes), TranslateModule.forChild()] }); }
|
|
38
38
|
}
|
|
39
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type:
|
|
39
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: AdbUserModule2, decorators: [{
|
|
40
40
|
type: NgModule,
|
|
41
41
|
args: [{
|
|
42
42
|
imports: [CommonModule, RouterModule.forChild(routes), TranslateModule.forChild()],
|
|
@@ -52,4 +52,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
|
52
52
|
]
|
|
53
53
|
}]
|
|
54
54
|
}] });
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRiLXVzZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJ0ZGF0YS1zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL2FkYi11c2VyL2FkYi11c2VyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSx1QkFBdUIsRUFBd0IsK0JBQStCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUUzSCxPQUFPLEVBQUUsWUFBWSxFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7O0FBQzVELE1BQU0sTUFBTSxHQUFXO0lBQ3JCLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUscUJBQXFCLEVBQUU7Q0FDNUQsQ0FBQztBQWNGLE1BQU0sT0FBTyxjQUFjO0lBQ3pCLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBNkI7UUFDMUMsT0FBTztZQUNMLFFBQVEsRUFBRSxjQUFjO1lBQ3hCLFNBQVMsRUFBRTtnQkFDVDtvQkFDRSxPQUFPLEVBQUUsdUJBQXVCO29CQUNoQyxRQUFRLEVBQUUsRUFBRSxHQUFHLCtCQUErQixFQUFFLEdBQUcsTUFBTSxFQUFFO2lCQUM1RDthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7aUlBWFUsY0FBYztrSUFBZCxjQUFjLGlCQVhWLHFCQUFxQixhQUQxQixZQUFZLGtEQUVaLHFCQUFxQjtrSUFVcEIsY0FBYyxhQVRkO1lBQ1QsY0FBYztZQUNkO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFFBQVEsRUFBRSxrQkFBa0I7Z0JBQzVCLEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRixZQVZTLFlBQVksRUFBRSxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLGVBQWUsQ0FBQyxRQUFRLEVBQUU7OzJGQVl0RSxjQUFjO2tCQWIxQixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLGVBQWUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDbEYsWUFBWSxFQUFFLENBQUMscUJBQXFCLENBQUM7b0JBQ3JDLE9BQU8sRUFBRSxDQUFDLHFCQUFxQixDQUFDO29CQUNoQyxTQUFTLEVBQUU7d0JBQ1QsY0FBYzt3QkFDZDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixRQUFRLEVBQUUsa0JBQWtCOzRCQUM1QixLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHsgSFRUUF9JTlRFUkNFUFRPUlMgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xyXG5pbXBvcnQgeyBBREJfVVNFUl9TRVJWSUNFX0NPTkZJRywgQWRiVXNlclNlcnZpY2VDb25maWcsIERFRkFVTFRfQURCX1VTRVJfU0VSVklDRV9DT05GSUcgfSBmcm9tIFwiLi9hZGItdXNlci1zZXJ2aWNlLWNvbmZpZ1wiO1xyXG5cclxuaW1wb3J0IHsgUm91dGVyTW9kdWxlLCBSb3V0ZXMgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IEF1dGhDYWxsYmFja0NvbXBvbmVudCB9IGZyb20gXCIuL2F1dGgtY2FsbGJhY2suY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IEFkYlVzZXJTZXJ2aWNlIH0gZnJvbSBcIi4vYWRiLXVzZXIuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBBZGJVc2VySW50ZXJjZXB0b3IgfSBmcm9tIFwiLi9hZGItdXNlci5pbnRlcmNlcHRvclwiO1xyXG5jb25zdCByb3V0ZXM6IFJvdXRlcyA9IFtcclxuICB7IHBhdGg6ICdhdXRoLWNhbGxiYWNrJywgY29tcG9uZW50OiBBdXRoQ2FsbGJhY2tDb21wb25lbnQgfVxyXG5dO1xyXG5ATmdNb2R1bGUoe1xyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFJvdXRlck1vZHVsZS5mb3JDaGlsZChyb3V0ZXMpLCBUcmFuc2xhdGVNb2R1bGUuZm9yQ2hpbGQoKV0sXHJcbiAgZGVjbGFyYXRpb25zOiBbQXV0aENhbGxiYWNrQ29tcG9uZW50XSxcclxuICBleHBvcnRzOiBbQXV0aENhbGxiYWNrQ29tcG9uZW50XSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIEFkYlVzZXJTZXJ2aWNlLFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUyxcclxuICAgICAgdXNlQ2xhc3M6IEFkYlVzZXJJbnRlcmNlcHRvcixcclxuICAgICAgbXVsdGk6IHRydWVcclxuICAgIH1cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBZGJVc2VyTW9kdWxlMiB7XHJcbiAgc3RhdGljIGZvclJvb3QoY29uZmlnPzogQWRiVXNlclNlcnZpY2VDb25maWcpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPEFkYlVzZXJNb2R1bGUyPiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBuZ01vZHVsZTogQWRiVXNlck1vZHVsZTIsXHJcbiAgICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIHByb3ZpZGU6IEFEQl9VU0VSX1NFUlZJQ0VfQ09ORklHLFxyXG4gICAgICAgICAgdXNlVmFsdWU6IHsgLi4uREVGQVVMVF9BREJfVVNFUl9TRVJWSUNFX0NPTkZJRywgLi4uY29uZmlnIH1cclxuICAgICAgICB9XHJcbiAgICAgIF0sXHJcbiAgICB9O1xyXG4gIH1cclxufSJdfQ==
|
|
@@ -3,8 +3,7 @@ import { ADB_USER_SERVICE_CONFIG } from './adb-user-service-config';
|
|
|
3
3
|
import { BehaviorSubject, Subscription } from 'rxjs';
|
|
4
4
|
import { HttpHeaders } from '@angular/common/http';
|
|
5
5
|
import { addSeconds, format } from 'date-fns';
|
|
6
|
-
import {
|
|
7
|
-
import { NavigationStart } from '@angular/router';
|
|
6
|
+
import { UserModuleConstants } from './user-constants';
|
|
8
7
|
import * as i0 from "@angular/core";
|
|
9
8
|
import * as i1 from "@angular/common/http";
|
|
10
9
|
import * as i2 from "@angular/router";
|
|
@@ -21,27 +20,21 @@ export class AdbUserService {
|
|
|
21
20
|
this.config = { ...{ scope: 'roles', idleTime: 30, response_type: 'code' }, ...config };
|
|
22
21
|
}
|
|
23
22
|
init() {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
if (event.url && event.url !== '/') {
|
|
31
|
-
sessionStorage.setItem(SessionIds.CURRENT_URL, event.url);
|
|
32
|
-
}
|
|
33
|
-
this.checkStatus();
|
|
34
|
-
}
|
|
35
|
-
});
|
|
23
|
+
const accessToken = sessionStorage.getItem(UserModuleConstants.ACCESS_TOKEN);
|
|
24
|
+
if (accessToken) {
|
|
25
|
+
const user = this.getUser(accessToken);
|
|
26
|
+
this.userSubject.next(user);
|
|
27
|
+
this.startMainLoop();
|
|
28
|
+
}
|
|
36
29
|
}
|
|
37
30
|
startMainLoop() {
|
|
38
31
|
this.checkStatus();
|
|
39
32
|
this.intervalId = setInterval(() => this.checkStatus(), 60 * 1000); // 60 seconds * 1000 milliseconds
|
|
40
33
|
}
|
|
41
34
|
login() {
|
|
42
|
-
this.log('
|
|
43
|
-
sessionStorage.setItem(
|
|
44
|
-
this.
|
|
35
|
+
this.log('url when login', this.router.url);
|
|
36
|
+
sessionStorage.setItem(UserModuleConstants.CURRENT_URL, this.router.url);
|
|
37
|
+
this.authorize();
|
|
45
38
|
}
|
|
46
39
|
logout() {
|
|
47
40
|
clearInterval(this.intervalId);
|
|
@@ -51,12 +44,13 @@ export class AdbUserService {
|
|
|
51
44
|
}
|
|
52
45
|
checkStatus() {
|
|
53
46
|
this.log('checkStatus runs');
|
|
54
|
-
const accessToken = sessionStorage.getItem(
|
|
47
|
+
const accessToken = sessionStorage.getItem(UserModuleConstants.ACCESS_TOKEN);
|
|
55
48
|
if (accessToken) {
|
|
56
49
|
this.log('has accesstoken');
|
|
57
50
|
const timeToLive = this.getTokenTimeToLive();
|
|
58
51
|
this.log('timeToLive', timeToLive);
|
|
59
52
|
if (timeToLive === 0) {
|
|
53
|
+
sessionStorage.removeItem(UserModuleConstants.ACCESS_TOKEN);
|
|
60
54
|
this.authorize();
|
|
61
55
|
}
|
|
62
56
|
else {
|
|
@@ -72,14 +66,11 @@ export class AdbUserService {
|
|
|
72
66
|
}
|
|
73
67
|
}
|
|
74
68
|
}
|
|
75
|
-
else {
|
|
76
|
-
this.authorize();
|
|
77
|
-
}
|
|
78
69
|
}
|
|
79
70
|
refreshToken() {
|
|
80
71
|
const body = `client_id=${encodeURIComponent(this.config.clientId)}&` +
|
|
81
72
|
`grant_type=${encodeURIComponent("refresh_token")}&` +
|
|
82
|
-
`refresh_token=${encodeURIComponent(sessionStorage.getItem(
|
|
73
|
+
`refresh_token=${encodeURIComponent(sessionStorage.getItem(UserModuleConstants.REFRESH_TOKEN))}`;
|
|
83
74
|
this.http.post(`${this.config.issuer}/connect/token`, body, { headers: new HttpHeaders({ 'Content-Type': 'application/x-www-form-urlencoded' }) }).subscribe({
|
|
84
75
|
next: response => {
|
|
85
76
|
this.setTokensInSession(response);
|
|
@@ -89,19 +80,19 @@ export class AdbUserService {
|
|
|
89
80
|
}
|
|
90
81
|
setTokensInSession(params) {
|
|
91
82
|
if (params.refresh_token) {
|
|
92
|
-
sessionStorage.setItem(
|
|
83
|
+
sessionStorage.setItem(UserModuleConstants.REFRESH_TOKEN, params.refresh_token);
|
|
93
84
|
}
|
|
94
85
|
if (params.access_token) {
|
|
95
|
-
sessionStorage.setItem(
|
|
86
|
+
sessionStorage.setItem(UserModuleConstants.ACCESS_TOKEN, params.access_token);
|
|
96
87
|
}
|
|
97
88
|
if (params.expires_in) {
|
|
98
89
|
const expireTime = addSeconds(new Date(), params.expires_in);
|
|
99
|
-
sessionStorage.setItem(
|
|
90
|
+
sessionStorage.setItem(UserModuleConstants.TOKEN_EXPIRES, format(expireTime, 'yyyy-MM-dd HH:mm:ss'));
|
|
100
91
|
}
|
|
101
92
|
}
|
|
102
93
|
async authorize() {
|
|
103
94
|
const codeVerifier = Array.from(crypto.getRandomValues(new Uint8Array(64)), byte => 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'[byte % 62]).join('');
|
|
104
|
-
sessionStorage.setItem(
|
|
95
|
+
sessionStorage.setItem(UserModuleConstants.CODE_VERIFIER, codeVerifier);
|
|
105
96
|
const encoder = new TextEncoder();
|
|
106
97
|
const data = encoder.encode(codeVerifier);
|
|
107
98
|
const hashBuffer = await crypto.subtle.digest('SHA-256', data);
|
|
@@ -133,7 +124,7 @@ export class AdbUserService {
|
|
|
133
124
|
return urlParams;
|
|
134
125
|
}
|
|
135
126
|
getTokenTimeToLive() {
|
|
136
|
-
const expires = sessionStorage.getItem(
|
|
127
|
+
const expires = sessionStorage.getItem(UserModuleConstants.TOKEN_EXPIRES);
|
|
137
128
|
if (expires) {
|
|
138
129
|
const expireDate = new Date(expires);
|
|
139
130
|
const now = new Date();
|
|
@@ -151,7 +142,7 @@ export class AdbUserService {
|
|
|
151
142
|
return false;
|
|
152
143
|
}
|
|
153
144
|
hasUserBeenActive() {
|
|
154
|
-
const lastActive = sessionStorage.getItem(
|
|
145
|
+
const lastActive = sessionStorage.getItem(UserModuleConstants.USER_LAST_ACTIVE);
|
|
155
146
|
if (!lastActive) {
|
|
156
147
|
return false;
|
|
157
148
|
}
|
|
@@ -161,7 +152,7 @@ export class AdbUserService {
|
|
|
161
152
|
}
|
|
162
153
|
log(message, ...optionalParams) {
|
|
163
154
|
if (this.config?.log) {
|
|
164
|
-
if (optionalParams) {
|
|
155
|
+
if (optionalParams?.length > 0) {
|
|
165
156
|
console.log(message, optionalParams);
|
|
166
157
|
}
|
|
167
158
|
else {
|
|
@@ -194,4 +185,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
|
194
185
|
type: Inject,
|
|
195
186
|
args: [ADB_USER_SERVICE_CONFIG]
|
|
196
187
|
}] }, { type: i1.HttpClient }, { type: i2.Router }] });
|
|
197
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRiLXVzZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FydGRhdGEtc2hhcmVkL3NyYy9saWIvY29tcG9uZW50cy9hZGItdXNlci9hZGItdXNlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSx1QkFBdUIsRUFBd0IsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRixPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRCxPQUFPLEVBQWMsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBUyxlQUFlLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQzs7OztBQUlqRSxNQUFNLE9BQU8sY0FBYztJQVV6QixZQUMwQyxNQUE0QixFQUM1RCxJQUFnQixFQUNoQixNQUFjO1FBRmtCLFdBQU0sR0FBTixNQUFNLENBQXNCO1FBQzVELFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQVhoQixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbkMsZ0JBQVcsR0FBeUIsSUFBSSxlQUFlLENBQU0sSUFBSSxDQUFDLENBQUM7UUFDM0UsVUFBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFeEMsb0JBQWUsR0FBRyxDQUFDLENBQUM7UUFFcEIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQU1qQixJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxPQUFP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aUlBcE1VLGNBQWMsa0JBV2YsdUJBQXVCO3FJQVh0QixjQUFjOzsyRkFBZCxjQUFjO2tCQUQxQixVQUFVOzswQkFZTixNQUFNOzJCQUFDLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFEQl9VU0VSX1NFUlZJQ0VfQ09ORklHLCBBZGJVc2VyU2VydmljZUNvbmZpZyB9IGZyb20gJy4vYWRiLXVzZXItc2VydmljZS1jb25maWcnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgYWRkU2Vjb25kcywgZm9ybWF0IH0gZnJvbSAnZGF0ZS1mbnMnO1xyXG5pbXBvcnQgeyBTZXNzaW9uSWRzIH0gZnJvbSAnLi91c2VyLWNvbnN0YW50cyc7XHJcbmltcG9ydCB7IEV2ZW50LCBOYXZpZ2F0aW9uU3RhcnQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQWRiVXNlclNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG5cclxuICBwcml2YXRlIHN1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcbiAgcHJpdmF0ZSB1c2VyU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCk7XHJcbiAgdXNlciQgPSB0aGlzLnVzZXJTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBsYXN0UmVmcmVzaFRpbWUgPSAwO1xyXG4gIGludGVydmFsSWQ6IGFueTtcclxuICBoYXNFbWl0dGVkID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdChBREJfVVNFUl9TRVJWSUNFX0NPTkZJRykgcHVibGljIGNvbmZpZzogQWRiVXNlclNlcnZpY2VDb25maWcsXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyKSB7XHJcbiAgICB0aGlzLmNvbmZpZyA9IHsgLi4ueyBzY29wZTogJ3JvbGVzJywgaWRsZVRpbWU6IDMwLCByZXNwb25zZV90eXBlOiAnY29kZScgfSwgLi4uY29uZmlnIH07XHJcbiAgfVxyXG5cclxuICBpbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZSgoZXZlbnQ6IEV2ZW50KSA9PiB7XHJcbiAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCkge1xyXG4gICAgICAgIHRoaXMubG9nKCdpbml0IHdpdGggdXJsJywgZXZlbnQudXJsKTtcclxuICAgICAgICBpZiAoZXZlbnQudXJsLmluY2x1ZGVzKCdhdXRoLWNhbGxiYWNrJykpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGV2ZW50LnVybCAmJiBldmVudC51cmwgIT09ICcvJykge1xyXG4gICAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShTZXNzaW9uSWRzLkNVUlJFTlRfVVJMLCBldmVudC51cmwpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNoZWNrU3RhdHVzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc3RhcnRNYWluTG9vcCgpIHtcclxuICAgIHRoaXMuY2hlY2tTdGF0dXMoKTtcclxuICAgIHRoaXMuaW50ZXJ2YWxJZCA9IHNldEludGVydmFsKCgpID0+IHRoaXMuY2hlY2tTdGF0dXMoKSwgNjAgKiAxMDAwKTsgLy8gNjAgc2Vjb25kcyAqIDEwMDAgbWlsbGlzZWNvbmRzXHJcbiAgfVxyXG5cclxuICBsb2dpbigpOiB2b2lkIHtcclxuICAgIHRoaXMubG9nKCdsb2dpbiBhdCB1cmwnLCB0aGlzLnJvdXRlci51cmwpO1xyXG4gICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShTZXNzaW9uSWRzLkNVUlJFTlRfVVJMLCB0aGlzLnJvdXRlci51cmwpO1xyXG4gICAgdGhpcy5jaGVja1N0YXR1cygpO1xyXG4gIH1cclxuXHJcbiAgbG9nb3V0KCk6IHZvaWQge1xyXG4gICAgY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsSWQpO1xyXG4gICAgdGhpcy5oYXNFbWl0dGVkID0gZmFsc2U7XHJcbiAgICBzZXNzaW9uU3RvcmFnZS5jbGVhcigpO1xyXG4gICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBgJHt0aGlzLmNvbmZpZy5pc3N1ZXJ9L2Nvbm5lY3QvZW5kc2Vzc2lvbj9wb3N0X2xvZ291dF9yZWRpcmVjdF91cmk9JHt0aGlzLmNvbmZpZy5wb3N0TG9nb3V0VXJsfWA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrU3RhdHVzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5sb2coJ2NoZWNrU3RhdHVzIHJ1bnMnKVxyXG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFNlc3Npb25JZHMuQUNDRVNTX1RPS0VOKTtcclxuICAgIGlmIChhY2Nlc3NUb2tlbikge1xyXG4gICAgICB0aGlzLmxvZygnaGFzIGFjY2Vzc3Rva2VuJylcclxuICAgICAgY29uc3QgdGltZVRvTGl2ZSA9IHRoaXMuZ2V0VG9rZW5UaW1lVG9MaXZlKCk7XHJcbiAgICAgIHRoaXMubG9nKCd0aW1lVG9MaXZlJywgdGltZVRvTGl2ZSlcclxuICAgICAgaWYgKHRpbWVUb0xpdmUgPT09IDApIHtcclxuICAgICAgICB0aGlzLmF1dGhvcml6ZSgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLmdldFRva2VuVGltZVRvTGl2ZSgpIDw9IDYwICYmIHRoaXMuaGFzVXNlckJlZW5BY3RpdmUoKSAmJiB0aGlzLmNhblJlZnJlc2hUb2tlbigpKSB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygndG9rZW4gaXMgYWJvdXQgdG8gdGltZW91dCBidXQgd2Ugd2lsbCByZWZyZXNoIGl0IGJlY2F1c2UgdXNlciBoYXMgYmVlbiBhY3RpdmUgdGhlIGxhc3QgNW1pbnV0ZXMnKTtcclxuICAgICAgICAgIHRoaXMucmVmcmVzaFRva2VuKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubG9nKCdoYXNFbWl0dGVkJywgdGhpcy5oYXNFbWl0dGVkKTtcclxuICAgICAgICBpZiAoIXRoaXMuaGFzRW1pdHRlZCkge1xyXG4gICAgICAgICAgY29uc3QgdXNlciA9IHRoaXMuZ2V0VXNlcihhY2Nlc3NUb2tlbik7XHJcbiAgICAgICAgICB0aGlzLnVzZXJTdWJqZWN0Lm5leHQodXNlcik7XHJcbiAgICAgICAgICB0aGlzLmhhc0VtaXR0ZWQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hdXRob3JpemUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVmcmVzaFRva2VuKCkge1xyXG4gICAgY29uc3QgYm9keSA9IGBjbGllbnRfaWQ9JHtlbmNvZGVVUklDb21wb25lbnQodGhpcy5jb25maWcuY2xpZW50SWQpfSZgICtcclxuICAgICAgYGdyYW50X3R5cGU9JHtlbmNvZGVVUklDb21wb25lbnQoXCJyZWZyZXNoX3Rva2VuXCIpfSZgICtcclxuICAgICAgYHJlZnJlc2hfdG9rZW49JHtlbmNvZGVVUklDb21wb25lbnQoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShTZXNzaW9uSWRzLlJFRlJFU0hfVE9LRU4pKX1gO1xyXG4gICAgdGhpcy5odHRwLnBvc3Q8YW55PihgJHt0aGlzLmNvbmZpZy5pc3N1ZXJ9L2Nvbm5lY3QvdG9rZW5gLCBib2R5LCB7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyB9KSB9KS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiByZXNwb25zZSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXRUb2tlbnNJblNlc3Npb24ocmVzcG9uc2UpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMubGFzdFJlZnJlc2hUaW1lID0gRGF0ZS5ub3coKTtcclxuICB9XHJcblxyXG4gIHNldFRva2Vuc0luU2Vzc2lvbihwYXJhbXM6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKHBhcmFtcy5yZWZyZXNoX3Rva2VuKSB7XHJcbiAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oU2Vzc2lvbklkcy5SRUZSRVNIX1RPS0VOLCBwYXJhbXMucmVmcmVzaF90b2tlbik7XHJcbiAgICB9XHJcbiAgICBpZiAocGFyYW1zLmFjY2Vzc190b2tlbikge1xyXG4gICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKFNlc3Npb25JZHMuQUNDRVNTX1RPS0VOLCBwYXJhbXMuYWNjZXNzX3Rva2VuKTtcclxuICAgIH1cclxuICAgIGlmIChwYXJhbXMuZXhwaXJlc19pbikge1xyXG4gICAgICBjb25zdCBleHBpcmVUaW1lID0gYWRkU2Vjb25kcyhuZXcgRGF0ZSgpLCBwYXJhbXMuZXhwaXJlc19pbik7XHJcbiAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oU2Vzc2lvbklkcy5UT0tFTl9FWFBJUkVTLCBmb3JtYXQoZXhwaXJlVGltZSwgJ3l5eXktTU0tZGQgSEg6bW06c3MnKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGF1dGhvcml6ZSgpIHtcclxuICAgIGNvbnN0IGNvZGVWZXJpZmllciA9IEFycmF5LmZyb20oY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDhBcnJheSg2NCkpLCBieXRlID0+XHJcbiAgICAgICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSdbKGJ5dGUgYXMgbnVtYmVyKSAlIDYyXVxyXG4gICAgKS5qb2luKCcnKTtcclxuICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oU2Vzc2lvbklkcy5DT0RFX1ZFUklGSUVSLCBjb2RlVmVyaWZpZXIpO1xyXG5cclxuICAgIGNvbnN0IGVuY29kZXIgPSBuZXcgVGV4dEVuY29kZXIoKTtcclxuICAgIGNvbnN0IGRhdGEgPSBlbmNvZGVyLmVuY29kZShjb2RlVmVyaWZpZXIpO1xyXG4gICAgY29uc3QgaGFzaEJ1ZmZlciA9IGF3YWl0IGNyeXB0by5zdWJ0bGUuZGlnZXN0KCdTSEEtMjU2JywgZGF0YSk7XHJcbiAgICBjb25zdCBoYXNoQXJyYXkgPSBuZXcgVWludDhBcnJheShoYXNoQnVmZmVyKTtcclxuICAgIGxldCBjb2RlQ2hhbGxlbmdlID0gYnRvYShTdHJpbmcuZnJvbUNoYXJDb2RlKC4uLmhhc2hBcnJheSkpO1xyXG4gICAgY29kZUNoYWxsZW5nZSA9IGNvZGVDaGFsbGVuZ2UucmVwbGFjZSgvPS9nLCAnJylcclxuICAgICAgLnJlcGxhY2UoL1xcKy9nLCAnLScpXHJcbiAgICAgIC5yZXBsYWNlKC9cXC8vZywgJ18nKTtcclxuXHJcbiAgICBjb25zdCBwYXJhbXMgPSB7XHJcbiAgICAgIHJlc3BvbnNlX3R5cGU6IHRoaXMuY29uZmlnLnJlc3BvbnNlVHlwZSxcclxuICAgICAgY2xpZW50X2lkOiB0aGlzLmNvbmZpZy5jbGllbnRJZCxcclxuICAgICAgcmVkaXJlY3RfdXJpOiB0aGlzLmNvbmZpZy5yZWRpcmVjdFVybCxcclxuICAgICAgc2NvcGU6IHRoaXMuY29uZmlnLnNjb3BlLFxyXG4gICAgICBjb2RlX2NoYWxsZW5nZTogY29kZUNoYWxsZW5nZSxcclxuICAgICAgY29kZV9jaGFsbGVuZ2VfbWV0aG9kOiAnUzI1NidcclxuICAgIH07XHJcbiAgICBjb25zdCB1cmwgPSBuZXcgVVJMKHRoaXMuY29uZmlnLmlzc3VlciArICcvY29ubmVjdC9hdXRob3JpemUnKTtcclxuICAgIHVybC5zZWFyY2ggPSB0aGlzLmFkZFF1ZXJ5UGFyYW1zKHBhcmFtcykudG9TdHJpbmcoKTtcclxuICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdXJsLnRvU3RyaW5nKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgcHJpdmF0ZSBhZGRRdWVyeVBhcmFtcyhvYmplY3Q6IGFueSk6IFVSTFNlYXJjaFBhcmFtcyB7XHJcbiAgICBpZiAoIW9iamVjdCkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGNvbnN0IHVybFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcclxuICAgIGZvciAoY29uc3QgcHJvcCBpbiBvYmplY3QpIHtcclxuICAgICAgdXJsUGFyYW1zLmFwcGVuZChwcm9wLCBvYmplY3RbcHJvcF0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHVybFBhcmFtcztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0VG9rZW5UaW1lVG9MaXZlKCk6IG51bWJlciB7XHJcbiAgICBjb25zdCBleHBpcmVzID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShTZXNzaW9uSWRzLlRPS0VOX0VYUElSRVMpO1xyXG4gICAgaWYgKGV4cGlyZXMpIHtcclxuICAgICAgY29uc3QgZXhwaXJlRGF0ZSA9IG5ldyBEYXRlKGV4cGlyZXMpO1xyXG4gICAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICBjb25zdCB0aW1lVG9MaXZlID0gTWF0aC5mbG9vcigoZXhwaXJlRGF0ZS5nZXRUaW1lKCkgLSBub3cuZ2V0VGltZSgpKSAvIDEwMDApO1xyXG4gICAgICByZXR1cm4gdGltZVRvTGl2ZSA8IDAgPyAwIDogdGltZVRvTGl2ZTtcclxuICAgIH1cclxuICAgIHJldHVybiAwO1xyXG4gIH1cclxuXHJcbiAgLy9Db29sZG93biBmb3IgYXZvaWRpbmcgaW5maW5pdGUgcmVmcmVzaFxyXG4gIHByaXZhdGUgY2FuUmVmcmVzaFRva2VuKCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcclxuICAgIGlmIChub3cgLSB0aGlzLmxhc3RSZWZyZXNoVGltZSA+ICgyICogNjAgKiAxMDAwKSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFzVXNlckJlZW5BY3RpdmUoKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBsYXN0QWN0aXZlID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShTZXNzaW9uSWRzLlVTRVJfTEFTVF9BQ1RJVkUpO1xyXG4gICAgaWYgKCFsYXN0QWN0aXZlKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGNvbnN0IHRpbWVTaW5jZUxhc3RBY3RpdmUgPSBEYXRlLm5vdygpIC0gcGFyc2VJbnQobGFzdEFjdGl2ZSwgMTApO1xyXG4gICAgY29uc3QgaWRsZVRpbWVNcyA9IHRoaXMuY29uZmlnLmlkbGVUaW1lICogNjAgKiAxMDAwO1xyXG4gICAgcmV0dXJuIHRpbWVTaW5jZUxhc3RBY3RpdmUgPD0gaWRsZVRpbWVNcztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9nKG1lc3NhZ2U6IHN0cmluZywgLi4ub3B0aW9uYWxQYXJhbXM6IGFueVtdKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5jb25maWc/LmxvZykge1xyXG4gICAgICBpZiAob3B0aW9uYWxQYXJhbXMpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhtZXNzYWdlLCBvcHRpb25hbFBhcmFtcyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc29sZS5sb2cobWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFVzZXIodG9rZW46IHN0cmluZyk6IGFueSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBbaGVhZGVyLCBwYXlsb2FkLCBzaWduYXR1cmVdID0gdG9rZW4uc3BsaXQoJy4nKTtcclxuICAgICAgY29uc3QgYmFzZTY0VXJsID0gcGF5bG9hZC5yZXBsYWNlKC8tL2csICcrJykucmVwbGFjZSgvXy9nLCAnLycpO1xyXG4gICAgICBjb25zdCBkZWNvZGVkUGF5bG9hZCA9IGF0b2IoYmFzZTY0VXJsKTtcclxuICAgICAgY29uc3QgcGFyc2VkUGF5bG9hZCA9IEpTT04ucGFyc2UoZGVjb2RlZFBheWxvYWQpO1xyXG4gICAgICByZXR1cm4gcGFyc2VkUGF5bG9hZDtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGRlY29kaW5nIEpXVCcsIGVycm9yKTtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbn0iXX0=
|
|
188
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRiLXVzZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FydGRhdGEtc2hhcmVkL3NyYy9saWIvY29tcG9uZW50cy9hZGItdXNlci9hZGItdXNlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSx1QkFBdUIsRUFBd0IsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRixPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRCxPQUFPLEVBQWMsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDOUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs7QUFLdkQsTUFBTSxPQUFPLGNBQWM7SUFVekIsWUFDMEMsTUFBNEIsRUFDNUQsSUFBZ0IsRUFDaEIsTUFBYztRQUZrQixXQUFNLEdBQU4sTUFBTSxDQUFzQjtRQUM1RCxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFYaEIsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ25DLGdCQUFXLEdBQXlCLElBQUksZUFBZSxDQUFNLElBQUksQ0FBQyxDQUFDO1FBQzNFLFVBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXhDLG9CQUFlLEdBQUcsQ0FBQyxDQUFDO1FBRXBCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFNakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsYUFBYSxFQUFFLE1BQU0s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QUM7Z0JBQzdCLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1lBQ3ZDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFhO1FBQ25CLElBQUksQ0FBQztZQUNILE1BQU0sQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLFNBQVMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdEQsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNoRSxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDdkMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNqRCxPQUFPLGFBQWEsQ0FBQztRQUN2QixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0JBQW9CLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDM0MsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ25DLENBQUM7aUlBN0xVLGNBQWMsa0JBV2YsdUJBQXVCO3FJQVh0QixjQUFjOzsyRkFBZCxjQUFjO2tCQUQxQixVQUFVOzswQkFZTixNQUFNOzJCQUFDLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFEQl9VU0VSX1NFUlZJQ0VfQ09ORklHLCBBZGJVc2VyU2VydmljZUNvbmZpZyB9IGZyb20gJy4vYWRiLXVzZXItc2VydmljZS1jb25maWcnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgYWRkU2Vjb25kcywgZm9ybWF0IH0gZnJvbSAnZGF0ZS1mbnMnO1xyXG5pbXBvcnQgeyBVc2VyTW9kdWxlQ29uc3RhbnRzIH0gZnJvbSAnLi91c2VyLWNvbnN0YW50cyc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQWRiVXNlclNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG5cclxuICBwcml2YXRlIHN1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcbiAgcHJpdmF0ZSB1c2VyU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCk7XHJcbiAgdXNlciQgPSB0aGlzLnVzZXJTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBsYXN0UmVmcmVzaFRpbWUgPSAwO1xyXG4gIGludGVydmFsSWQ6IGFueTtcclxuICBoYXNFbWl0dGVkID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdChBREJfVVNFUl9TRVJWSUNFX0NPTkZJRykgcHVibGljIGNvbmZpZzogQWRiVXNlclNlcnZpY2VDb25maWcsXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyKSB7XHJcbiAgICB0aGlzLmNvbmZpZyA9IHsgLi4ueyBzY29wZTogJ3JvbGVzJywgaWRsZVRpbWU6IDMwLCByZXNwb25zZV90eXBlOiAnY29kZScgfSwgLi4uY29uZmlnIH07XHJcbiAgfVxyXG5cclxuICBpbml0KCk6IHZvaWQge1xyXG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFVzZXJNb2R1bGVDb25zdGFudHMuQUNDRVNTX1RPS0VOKTtcclxuICAgIGlmIChhY2Nlc3NUb2tlbikge1xyXG4gICAgICBjb25zdCB1c2VyID0gdGhpcy5nZXRVc2VyKGFjY2Vzc1Rva2VuKTtcclxuICAgICAgdGhpcy51c2VyU3ViamVjdC5uZXh0KHVzZXIpO1xyXG4gICAgICB0aGlzLnN0YXJ0TWFpbkxvb3AoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXJ0TWFpbkxvb3AoKSB7XHJcbiAgICB0aGlzLmNoZWNrU3RhdHVzKCk7XHJcbiAgICB0aGlzLmludGVydmFsSWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB0aGlzLmNoZWNrU3RhdHVzKCksIDYwICogMTAwMCk7IC8vIDYwIHNlY29uZHMgKiAxMDAwIG1pbGxpc2Vjb25kc1xyXG4gIH1cclxuXHJcbiAgbG9naW4oKTogdm9pZCB7XHJcbiAgICB0aGlzLmxvZygndXJsIHdoZW4gbG9naW4nLCB0aGlzLnJvdXRlci51cmwpO1xyXG4gICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShVc2VyTW9kdWxlQ29uc3RhbnRzLkNVUlJFTlRfVVJMLCB0aGlzLnJvdXRlci51cmwpO1xyXG4gICAgdGhpcy5hdXRob3JpemUoKTtcclxuICB9XHJcblxyXG4gIGxvZ291dCgpOiB2b2lkIHtcclxuICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbElkKTtcclxuICAgIHRoaXMuaGFzRW1pdHRlZCA9IGZhbHNlO1xyXG4gICAgc2Vzc2lvblN0b3JhZ2UuY2xlYXIoKTtcclxuICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYCR7dGhpcy5jb25maWcuaXNzdWVyfS9jb25uZWN0L2VuZHNlc3Npb24/cG9zdF9sb2dvdXRfcmVkaXJlY3RfdXJpPSR7dGhpcy5jb25maWcucG9zdExvZ291dFVybH1gO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja1N0YXR1cygpOiB2b2lkIHtcclxuICAgIHRoaXMubG9nKCdjaGVja1N0YXR1cyBydW5zJylcclxuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShVc2VyTW9kdWxlQ29uc3RhbnRzLkFDQ0VTU19UT0tFTik7XHJcbiAgICBpZiAoYWNjZXNzVG9rZW4pIHtcclxuICAgICAgdGhpcy5sb2coJ2hhcyBhY2Nlc3N0b2tlbicpXHJcbiAgICAgIGNvbnN0IHRpbWVUb0xpdmUgPSB0aGlzLmdldFRva2VuVGltZVRvTGl2ZSgpO1xyXG4gICAgICB0aGlzLmxvZygndGltZVRvTGl2ZScsIHRpbWVUb0xpdmUpXHJcbiAgICAgIGlmICh0aW1lVG9MaXZlID09PSAwKSB7XHJcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbShVc2VyTW9kdWxlQ29uc3RhbnRzLkFDQ0VTU19UT0tFTik7XHJcbiAgICAgICAgdGhpcy5hdXRob3JpemUoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAodGhpcy5nZXRUb2tlblRpbWVUb0xpdmUoKSA8PSA2MCAmJiB0aGlzLmhhc1VzZXJCZWVuQWN0aXZlKCkgJiYgdGhpcy5jYW5SZWZyZXNoVG9rZW4oKSkge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ3Rva2VuIGlzIGFib3V0IHRvIHRpbWVvdXQgYnV0IHdlIHdpbGwgcmVmcmVzaCBpdCBiZWNhdXNlIHVzZXIgaGFzIGJlZW4gYWN0aXZlIHRoZSBsYXN0IDVtaW51dGVzJyk7XHJcbiAgICAgICAgICB0aGlzLnJlZnJlc2hUb2tlbigpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmxvZygnaGFzRW1pdHRlZCcsIHRoaXMuaGFzRW1pdHRlZCk7XHJcbiAgICAgICAgaWYgKCF0aGlzLmhhc0VtaXR0ZWQpIHtcclxuICAgICAgICAgIGNvbnN0IHVzZXIgPSB0aGlzLmdldFVzZXIoYWNjZXNzVG9rZW4pO1xyXG4gICAgICAgICAgdGhpcy51c2VyU3ViamVjdC5uZXh0KHVzZXIpO1xyXG4gICAgICAgICAgdGhpcy5oYXNFbWl0dGVkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVmcmVzaFRva2VuKCkge1xyXG4gICAgY29uc3QgYm9keSA9IGBjbGllbnRfaWQ9JHtlbmNvZGVVUklDb21wb25lbnQodGhpcy5jb25maWcuY2xpZW50SWQpfSZgICtcclxuICAgICAgYGdyYW50X3R5cGU9JHtlbmNvZGVVUklDb21wb25lbnQoXCJyZWZyZXNoX3Rva2VuXCIpfSZgICtcclxuICAgICAgYHJlZnJlc2hfdG9rZW49JHtlbmNvZGVVUklDb21wb25lbnQoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShVc2VyTW9kdWxlQ29uc3RhbnRzLlJFRlJFU0hfVE9LRU4pKX1gO1xyXG4gICAgdGhpcy5odHRwLnBvc3Q8YW55PihgJHt0aGlzLmNvbmZpZy5pc3N1ZXJ9L2Nvbm5lY3QvdG9rZW5gLCBib2R5LCB7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyB9KSB9KS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiByZXNwb25zZSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXRUb2tlbnNJblNlc3Npb24ocmVzcG9uc2UpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMubGFzdFJlZnJlc2hUaW1lID0gRGF0ZS5ub3coKTtcclxuICB9XHJcblxyXG4gIHNldFRva2Vuc0luU2Vzc2lvbihwYXJhbXM6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKHBhcmFtcy5yZWZyZXNoX3Rva2VuKSB7XHJcbiAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oVXNlck1vZHVsZUNvbnN0YW50cy5SRUZSRVNIX1RPS0VOLCBwYXJhbXMucmVmcmVzaF90b2tlbik7XHJcbiAgICB9XHJcbiAgICBpZiAocGFyYW1zLmFjY2Vzc190b2tlbikge1xyXG4gICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKFVzZXJNb2R1bGVDb25zdGFudHMuQUNDRVNTX1RPS0VOLCBwYXJhbXMuYWNjZXNzX3Rva2VuKTtcclxuICAgIH1cclxuICAgIGlmIChwYXJhbXMuZXhwaXJlc19pbikge1xyXG4gICAgICBjb25zdCBleHBpcmVUaW1lID0gYWRkU2Vjb25kcyhuZXcgRGF0ZSgpLCBwYXJhbXMuZXhwaXJlc19pbik7XHJcbiAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oVXNlck1vZHVsZUNvbnN0YW50cy5UT0tFTl9FWFBJUkVTLCBmb3JtYXQoZXhwaXJlVGltZSwgJ3l5eXktTU0tZGQgSEg6bW06c3MnKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGF1dGhvcml6ZSgpIHtcclxuICAgIGNvbnN0IGNvZGVWZXJpZmllciA9IEFycmF5LmZyb20oY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDhBcnJheSg2NCkpLCBieXRlID0+XHJcbiAgICAgICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSdbKGJ5dGUgYXMgbnVtYmVyKSAlIDYyXVxyXG4gICAgKS5qb2luKCcnKTtcclxuICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oVXNlck1vZHVsZUNvbnN0YW50cy5DT0RFX1ZFUklGSUVSLCBjb2RlVmVyaWZpZXIpO1xyXG5cclxuICAgIGNvbnN0IGVuY29kZXIgPSBuZXcgVGV4dEVuY29kZXIoKTtcclxuICAgIGNvbnN0IGRhdGEgPSBlbmNvZGVyLmVuY29kZShjb2RlVmVyaWZpZXIpO1xyXG4gICAgY29uc3QgaGFzaEJ1ZmZlciA9IGF3YWl0IGNyeXB0by5zdWJ0bGUuZGlnZXN0KCdTSEEtMjU2JywgZGF0YSk7XHJcbiAgICBjb25zdCBoYXNoQXJyYXkgPSBuZXcgVWludDhBcnJheShoYXNoQnVmZmVyKTtcclxuICAgIGxldCBjb2RlQ2hhbGxlbmdlID0gYnRvYShTdHJpbmcuZnJvbUNoYXJDb2RlKC4uLmhhc2hBcnJheSkpO1xyXG4gICAgY29kZUNoYWxsZW5nZSA9IGNvZGVDaGFsbGVuZ2UucmVwbGFjZSgvPS9nLCAnJylcclxuICAgICAgLnJlcGxhY2UoL1xcKy9nLCAnLScpXHJcbiAgICAgIC5yZXBsYWNlKC9cXC8vZywgJ18nKTtcclxuXHJcbiAgICBjb25zdCBwYXJhbXMgPSB7XHJcbiAgICAgIHJlc3BvbnNlX3R5cGU6IHRoaXMuY29uZmlnLnJlc3BvbnNlVHlwZSxcclxuICAgICAgY2xpZW50X2lkOiB0aGlzLmNvbmZpZy5jbGllbnRJZCxcclxuICAgICAgcmVkaXJlY3RfdXJpOiB0aGlzLmNvbmZpZy5yZWRpcmVjdFVybCxcclxuICAgICAgc2NvcGU6IHRoaXMuY29uZmlnLnNjb3BlLFxyXG4gICAgICBjb2RlX2NoYWxsZW5nZTogY29kZUNoYWxsZW5nZSxcclxuICAgICAgY29kZV9jaGFsbGVuZ2VfbWV0aG9kOiAnUzI1NidcclxuICAgIH07XHJcbiAgICBjb25zdCB1cmwgPSBuZXcgVVJMKHRoaXMuY29uZmlnLmlzc3VlciArICcvY29ubmVjdC9hdXRob3JpemUnKTtcclxuICAgIHVybC5zZWFyY2ggPSB0aGlzLmFkZFF1ZXJ5UGFyYW1zKHBhcmFtcykudG9TdHJpbmcoKTtcclxuICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdXJsLnRvU3RyaW5nKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgcHJpdmF0ZSBhZGRRdWVyeVBhcmFtcyhvYmplY3Q6IGFueSk6IFVSTFNlYXJjaFBhcmFtcyB7XHJcbiAgICBpZiAoIW9iamVjdCkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGNvbnN0IHVybFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcclxuICAgIGZvciAoY29uc3QgcHJvcCBpbiBvYmplY3QpIHtcclxuICAgICAgdXJsUGFyYW1zLmFwcGVuZChwcm9wLCBvYmplY3RbcHJvcF0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHVybFBhcmFtcztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0VG9rZW5UaW1lVG9MaXZlKCk6IG51bWJlciB7XHJcbiAgICBjb25zdCBleHBpcmVzID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShVc2VyTW9kdWxlQ29uc3RhbnRzLlRPS0VOX0VYUElSRVMpO1xyXG4gICAgaWYgKGV4cGlyZXMpIHtcclxuICAgICAgY29uc3QgZXhwaXJlRGF0ZSA9IG5ldyBEYXRlKGV4cGlyZXMpO1xyXG4gICAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICBjb25zdCB0aW1lVG9MaXZlID0gTWF0aC5mbG9vcigoZXhwaXJlRGF0ZS5nZXRUaW1lKCkgLSBub3cuZ2V0VGltZSgpKSAvIDEwMDApO1xyXG4gICAgICByZXR1cm4gdGltZVRvTGl2ZSA8IDAgPyAwIDogdGltZVRvTGl2ZTtcclxuICAgIH1cclxuICAgIHJldHVybiAwO1xyXG4gIH1cclxuXHJcbiAgLy9Db29sZG93biBmb3IgYXZvaWRpbmcgaW5maW5pdGUgcmVmcmVzaFxyXG4gIHByaXZhdGUgY2FuUmVmcmVzaFRva2VuKCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcclxuICAgIGlmIChub3cgLSB0aGlzLmxhc3RSZWZyZXNoVGltZSA+ICgyICogNjAgKiAxMDAwKSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFzVXNlckJlZW5BY3RpdmUoKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBsYXN0QWN0aXZlID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShVc2VyTW9kdWxlQ29uc3RhbnRzLlVTRVJfTEFTVF9BQ1RJVkUpO1xyXG4gICAgaWYgKCFsYXN0QWN0aXZlKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGNvbnN0IHRpbWVTaW5jZUxhc3RBY3RpdmUgPSBEYXRlLm5vdygpIC0gcGFyc2VJbnQobGFzdEFjdGl2ZSwgMTApO1xyXG4gICAgY29uc3QgaWRsZVRpbWVNcyA9IHRoaXMuY29uZmlnLmlkbGVUaW1lICogNjAgKiAxMDAwO1xyXG4gICAgcmV0dXJuIHRpbWVTaW5jZUxhc3RBY3RpdmUgPD0gaWRsZVRpbWVNcztcclxuICB9XHJcblxyXG4gIGxvZyhtZXNzYWdlOiBzdHJpbmcsIC4uLm9wdGlvbmFsUGFyYW1zOiBhbnlbXSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuY29uZmlnPy5sb2cpIHtcclxuICAgICAgaWYgKG9wdGlvbmFsUGFyYW1zPy5sZW5ndGg+MCkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKG1lc3NhZ2UsIG9wdGlvbmFsUGFyYW1zKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhtZXNzYWdlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0VXNlcih0b2tlbjogc3RyaW5nKTogYW55IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IFtoZWFkZXIsIHBheWxvYWQsIHNpZ25hdHVyZV0gPSB0b2tlbi5zcGxpdCgnLicpO1xyXG4gICAgICBjb25zdCBiYXNlNjRVcmwgPSBwYXlsb2FkLnJlcGxhY2UoLy0vZywgJysnKS5yZXBsYWNlKC9fL2csICcvJyk7XHJcbiAgICAgIGNvbnN0IGRlY29kZWRQYXlsb2FkID0gYXRvYihiYXNlNjRVcmwpO1xyXG4gICAgICBjb25zdCBwYXJzZWRQYXlsb2FkID0gSlNPTi5wYXJzZShkZWNvZGVkUGF5bG9hZCk7XHJcbiAgICAgIHJldHVybiBwYXJzZWRQYXlsb2FkO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZGVjb2RpbmcgSldUJywgZXJyb3IpO1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxufSJdfQ==
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Component } from "@angular/core";
|
|
2
2
|
import { Subscription } from "rxjs";
|
|
3
3
|
import { HttpHeaders } from "@angular/common/http";
|
|
4
|
-
import {
|
|
4
|
+
import { UserModuleConstants } from "./user-constants";
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
import * as i1 from "@angular/router";
|
|
7
7
|
import * as i2 from "@angular/common/http";
|
|
@@ -19,21 +19,25 @@ export class AuthCallbackComponent {
|
|
|
19
19
|
if (qParmas.has('code')) {
|
|
20
20
|
const body = `grant_type=authorization_code` +
|
|
21
21
|
`&code=${encodeURIComponent(qParmas.get('code'))}` +
|
|
22
|
-
`&code_verifier=${encodeURIComponent(sessionStorage.getItem(
|
|
22
|
+
`&code_verifier=${encodeURIComponent(sessionStorage.getItem(UserModuleConstants.CODE_VERIFIER))}` +
|
|
23
23
|
`&redirect_uri=${encodeURIComponent(this.adbUserService.config.redirectUrl)}` +
|
|
24
24
|
`&client_id=${encodeURIComponent(this.adbUserService.config.clientId)}`;
|
|
25
25
|
this.http.post(`${this.adbUserService.config.issuer}/connect/token`, body, { headers: new HttpHeaders({ 'Content-Type': 'application/x-www-form-urlencoded' }) }).subscribe({
|
|
26
26
|
next: response => {
|
|
27
27
|
this.adbUserService.setTokensInSession(response);
|
|
28
|
-
let requestedUrl = sessionStorage.getItem(
|
|
29
|
-
this.adbUserService.
|
|
30
|
-
console.log('redirect url', requestedUrl);
|
|
28
|
+
let requestedUrl = sessionStorage.getItem(UserModuleConstants.CURRENT_URL) ?? null;
|
|
29
|
+
this.adbUserService.log('redirect url in auth-callback', requestedUrl);
|
|
31
30
|
if (requestedUrl) {
|
|
32
|
-
this.router.navigate([requestedUrl], { replaceUrl: true })
|
|
33
|
-
|
|
31
|
+
this.router.navigate([requestedUrl], { replaceUrl: true }).then(() => {
|
|
32
|
+
this.adbUserService.startMainLoop();
|
|
33
|
+
});
|
|
34
|
+
sessionStorage.removeItem(UserModuleConstants.CURRENT_URL);
|
|
34
35
|
}
|
|
35
36
|
else {
|
|
36
|
-
this.router.navigate(['/'], { replaceUrl: true })
|
|
37
|
+
this.router.navigate(['/'], { replaceUrl: true }).then(() => {
|
|
38
|
+
this.adbUserService.startMainLoop();
|
|
39
|
+
});
|
|
40
|
+
;
|
|
37
41
|
}
|
|
38
42
|
}
|
|
39
43
|
});
|
|
@@ -49,4 +53,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
|
49
53
|
template: '<div class="loading-dead-spinner"></div>'
|
|
50
54
|
}]
|
|
51
55
|
}], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i1.Router }, { type: i2.HttpClient }, { type: i3.AdbUserService }] });
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1jYWxsYmFjay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnRkYXRhLXNoYXJlZC9zcmMvbGliL2NvbXBvbmVudHMvYWRiLXVzZXIvYXV0aC1jYWxsYmFjay5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBDLE9BQU8sRUFBYyxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7QUFNdkQsTUFBTSxPQUFPLHFCQUFxQjtJQUU5QixZQUNZLGNBQThCLEVBQzlCLE1BQWMsRUFDZCxJQUFnQixFQUNoQixjQUE4QjtRQUg5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBTGxDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUtHLENBQUM7SUFFL0MsUUFBUTtRQUNKLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUN6RSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDdEIsTUFBTSxJQUFJLEdBQUcsK0JBQStCO29CQUN4QyxTQUFTLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRTtvQkFDbEQsa0JBQWtCLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRTtvQkFDakcsaUJBQWlCLGtCQUFrQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFO29CQUM3RSxjQUFjLGtCQUFrQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBRTVFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsRUFBRSxJQUFJLEVBQzFFLEVBQUUsT0FBTyxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsY0FBYyxFQUFFLG1DQUFtQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDO29CQUM3RixJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQUU7d0JBQ2IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsQ0FBQzt3QkFDakQsSUFBSSxZQUFZLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsSUFBSSxJQUFJLENBQUM7d0JBQ25GLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLCtCQUErQixFQUFDLFlBQVksQ0FBQyxDQUFDO3dCQUN0RSxJQUFJLFlBQVksRUFBRSxDQUFDOzRCQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO2dDQUNqRSxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDOzRCQUN4QyxDQUFDLENBQUMsQ0FBQzs0QkFDSCxjQUFjLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxDQUFDO3dCQUMvRCxDQUFDOzZCQUFJLENBQUM7NEJBQ0YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7Z0NBQ3hELElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLENBQUM7NEJBQ3hDLENBQUMsQ0FBQyxDQUFDOzRCQUFBLENBQUM7d0JBQ1IsQ0FBQztvQkFDTCxDQUFDO2lCQUNKLENBQUMsQ0FBQztZQUNYLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztpSUFyQ1EscUJBQXFCO3FIQUFyQixxQkFBcUIsb0RBRnBCLDBDQUEwQzs7MkZBRTNDLHFCQUFxQjtrQkFIakMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsMENBQTBDO2lCQUN2RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHsgVXNlck1vZHVsZUNvbnN0YW50cyB9IGZyb20gXCIuL3VzZXItY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IEFkYlVzZXJTZXJ2aWNlIH0gZnJvbSBcIi4vYWRiLXVzZXIuc2VydmljZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICB0ZW1wbGF0ZTogJzxkaXYgY2xhc3M9XCJsb2FkaW5nLWRlYWQtc3Bpbm5lclwiPjwvZGl2PidcclxufSlcclxuZXhwb3J0IGNsYXNzIEF1dGhDYWxsYmFja0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBwcml2YXRlIHN1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgICAgICBwcml2YXRlIGFkYlVzZXJTZXJ2aWNlOiBBZGJVc2VyU2VydmljZSkgeyB9XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZCh0aGlzLmFjdGl2YXRlZFJvdXRlLnF1ZXJ5UGFyYW1NYXAuc3Vic2NyaWJlKHFQYXJtYXMgPT4ge1xyXG4gICAgICAgICAgICBpZiAocVBhcm1hcy5oYXMoJ2NvZGUnKSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYm9keSA9IGBncmFudF90eXBlPWF1dGhvcml6YXRpb25fY29kZWAgK1xyXG4gICAgICAgICAgICAgICAgICAgIGAmY29kZT0ke2VuY29kZVVSSUNvbXBvbmVudChxUGFybWFzLmdldCgnY29kZScpKX1gICtcclxuICAgICAgICAgICAgICAgICAgICBgJmNvZGVfdmVyaWZpZXI9JHtlbmNvZGVVUklDb21wb25lbnQoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShVc2VyTW9kdWxlQ29uc3RhbnRzLkNPREVfVkVSSUZJRVIpKX1gICtcclxuICAgICAgICAgICAgICAgICAgICBgJnJlZGlyZWN0X3VyaT0ke2VuY29kZVVSSUNvbXBvbmVudCh0aGlzLmFkYlVzZXJTZXJ2aWNlLmNvbmZpZy5yZWRpcmVjdFVybCl9YCArXHJcbiAgICAgICAgICAgICAgICAgICAgYCZjbGllbnRfaWQ9JHtlbmNvZGVVUklDb21wb25lbnQodGhpcy5hZGJVc2VyU2VydmljZS5jb25maWcuY2xpZW50SWQpfWA7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5odHRwLnBvc3Q8YW55PihgJHt0aGlzLmFkYlVzZXJTZXJ2aWNlLmNvbmZpZy5pc3N1ZXJ9L2Nvbm5lY3QvdG9rZW5gLCBib2R5LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnIH0pIH0pLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQ6IHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRiVXNlclNlcnZpY2Uuc2V0VG9rZW5zSW5TZXNzaW9uKHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXF1ZXN0ZWRVcmwgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFVzZXJNb2R1bGVDb25zdGFudHMuQ1VSUkVOVF9VUkwpID8/IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkYlVzZXJTZXJ2aWNlLmxvZygncmVkaXJlY3QgdXJsIGluIGF1dGgtY2FsbGJhY2snLHJlcXVlc3RlZFVybCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVxdWVzdGVkVXJsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3JlcXVlc3RlZFVybF0sIHsgcmVwbGFjZVVybDogdHJ1ZSB9KS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGJVc2VyU2VydmljZS5zdGFydE1haW5Mb29wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbShVc2VyTW9kdWxlQ29uc3RhbnRzLkNVUlJFTlRfVVJMKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLyddLCB7IHJlcGxhY2VVcmw6IHRydWUgfSkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRiVXNlclNlcnZpY2Uuc3RhcnRNYWluTG9vcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSkpO1xyXG4gICAgfVxyXG59Il19
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
export class
|
|
1
|
+
export class UserModuleConstants {
|
|
2
2
|
static { this.CURRENT_URL = "current_url"; }
|
|
3
3
|
static { this.CODE_VERIFIER = 'nonce'; }
|
|
4
4
|
static { this.REFRESH_TOKEN = 'refresh-token'; }
|
|
5
5
|
static { this.TOKEN_EXPIRES = 'token_expires'; }
|
|
6
6
|
static { this.ACCESS_TOKEN = 'access-token'; }
|
|
7
7
|
static { this.USER_LAST_ACTIVE = 'lastActive'; }
|
|
8
|
+
static { this.ONGOING_CODEFLOW = 'ongoing-codeflow'; }
|
|
8
9
|
}
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1jb25zdGFudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnRkYXRhLXNoYXJlZC9zcmMvbGliL2NvbXBvbmVudHMvYWRiLXVzZXIvdXNlci1jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLG1CQUFtQjthQUNyQixnQkFBVyxHQUFHLGFBQWEsQ0FBQzthQUM1QixrQkFBYSxHQUFHLE9BQU8sQ0FBQzthQUN4QixrQkFBYSxHQUFHLGVBQWUsQ0FBQzthQUNoQyxrQkFBYSxHQUFHLGVBQWUsQ0FBQzthQUNoQyxpQkFBWSxHQUFHLGNBQWMsQ0FBQzthQUM5QixxQkFBZ0IsR0FBRyxZQUFZLENBQUE7YUFDL0IscUJBQWdCLEdBQUcsa0JBQWtCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgVXNlck1vZHVsZUNvbnN0YW50cyB7XHJcbiAgICBzdGF0aWMgQ1VSUkVOVF9VUkwgPSBcImN1cnJlbnRfdXJsXCI7XHJcbiAgICBzdGF0aWMgQ09ERV9WRVJJRklFUiA9ICdub25jZSc7XHJcbiAgICBzdGF0aWMgUkVGUkVTSF9UT0tFTiA9ICdyZWZyZXNoLXRva2VuJztcclxuICAgIHN0YXRpYyBUT0tFTl9FWFBJUkVTID0gJ3Rva2VuX2V4cGlyZXMnO1xyXG4gICAgc3RhdGljIEFDQ0VTU19UT0tFTiA9ICdhY2Nlc3MtdG9rZW4nO1xyXG4gICAgc3RhdGljIFVTRVJfTEFTVF9BQ1RJVkUgPSAnbGFzdEFjdGl2ZSdcclxuICAgIHN0YXRpYyBPTkdPSU5HX0NPREVGTE9XID0gJ29uZ29pbmctY29kZWZsb3cnO1xyXG59XHJcbiJdfQ==
|