adb-shared 6.0.15 → 6.0.16
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-config.mjs +8 -0
- package/esm2022/lib/components/adb-user/adb-user.interceptor.mjs +46 -0
- package/esm2022/lib/components/adb-user/adb-user.module.mjs +47 -0
- package/esm2022/lib/components/adb-user/adb-user.service.mjs +169 -0
- package/esm2022/lib/components/adb-user/auth-callback.component.mjs +48 -0
- package/esm2022/lib/components/adb-user/user-constants.mjs +9 -0
- package/esm2022/public-api.mjs +6 -1
- package/fesm2022/adb-shared.mjs +298 -4
- package/fesm2022/adb-shared.mjs.map +1 -1
- package/lib/components/adb-user/adb-user-service-config.d.ts +16 -0
- package/lib/components/adb-user/adb-user.interceptor.d.ts +13 -0
- package/lib/components/adb-user/adb-user.module.d.ts +11 -0
- package/lib/components/adb-user/adb-user.service.d.ts +30 -0
- package/lib/components/adb-user/auth-callback.component.d.ts +16 -0
- package/lib/components/adb-user/user-constants.d.ts +8 -0
- package/package.json +1 -1
- package/public-api.d.ts +5 -0
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { InjectionToken } from "@angular/core";
|
|
2
|
+
export const ADB_USER_SERVICE_CONFIG = new InjectionToken('ADB_DATA_SERVICE_CONFIG');
|
|
3
|
+
export const DEFAULT_ADB_USER_SERVICE_CONFIG = {
|
|
4
|
+
scope: 'roles profile email',
|
|
5
|
+
idleTime: 30,
|
|
6
|
+
response_type: 'code'
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRiLXVzZXItc2VydmljZS1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnRkYXRhLXNoYXJlZC9zcmMvbGliL2NvbXBvbmVudHMvYWRiLXVzZXIvYWRiLXVzZXItc2VydmljZS1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVkvQyxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLGNBQWMsQ0FBdUIseUJBQXlCLENBQUMsQ0FBQztBQUMzRyxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBRztJQUMzQyxLQUFLLEVBQUUscUJBQXFCO0lBQzVCLFFBQVEsRUFBRSxFQUFFO0lBQ1osYUFBYSxFQUFFLE1BQU07Q0FDeEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbi8vIGFkYi1zZXJ2aWNlcy9hZGItZGF0YS1zZXJ2aWNlLWNvbmZpZy50c1xyXG5leHBvcnQgaW50ZXJmYWNlIEFkYlVzZXJTZXJ2aWNlQ29uZmlnIHtcclxuICAgIHJlZGlyZWN0VXJsOiBzdHJpbmc7XHJcbiAgICBjbGllbnRJZDogc3RyaW5nO1xyXG4gICAgaXNzdWVyOiBzdHJpbmc7XHJcbiAgICBzY29wZT86IHN0cmluZztcclxuICAgIHJlc3BvbnNlVHlwZT86IHN0cmluZztcclxuICAgIGlkbGVUaW1lPzogbnVtYmVyO1xyXG4gICAgcG9zdExvZ291dFVybD86IHN0cmluZztcclxufVxyXG5leHBvcnQgY29uc3QgQURCX1VTRVJfU0VSVklDRV9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48QWRiVXNlclNlcnZpY2VDb25maWc+KCdBREJfREFUQV9TRVJWSUNFX0NPTkZJRycpO1xyXG5leHBvcnQgY29uc3QgREVGQVVMVF9BREJfVVNFUl9TRVJWSUNFX0NPTkZJRyA9IHtcclxuICAgIHNjb3BlOiAncm9sZXMgcHJvZmlsZSBlbWFpbCcsXHJcbiAgICBpZGxlVGltZTogMzAsXHJcbiAgICByZXNwb25zZV90eXBlOiAnY29kZSdcclxufTtcclxuIl19
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { catchError, throwError } from 'rxjs';
|
|
3
|
+
import { SessionIds } from './user-constants';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "./adb-user.service";
|
|
6
|
+
export class AdbUserInterceptor {
|
|
7
|
+
static { this.UNAUTHENTIFICATED = 401; }
|
|
8
|
+
constructor(adbUserService) {
|
|
9
|
+
this.adbUserService = adbUserService;
|
|
10
|
+
}
|
|
11
|
+
intercept(req, next) {
|
|
12
|
+
if (req.headers.get('X-System-Request') !== 'true') {
|
|
13
|
+
sessionStorage.setItem(SessionIds.USER_LAST_ACTIVE, Date.now().toString());
|
|
14
|
+
}
|
|
15
|
+
const accessToken = sessionStorage.getItem(SessionIds.ACCESS_TOKEN);
|
|
16
|
+
if (accessToken) {
|
|
17
|
+
const clonedRequest = req.clone({
|
|
18
|
+
setHeaders: {
|
|
19
|
+
Authorization: `Bearer ${accessToken}`
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
return next.handle(clonedRequest).pipe(catchError((err) => this.handleErrors(err)));
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
return next.handle(req).pipe(catchError((err) => this.handleErrors(err)));
|
|
26
|
+
;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
handleErrors(error) {
|
|
30
|
+
if (error.error instanceof ErrorEvent) {
|
|
31
|
+
// Client-side error
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
if (error.status === AdbUserInterceptor.UNAUTHENTIFICATED) {
|
|
35
|
+
this.adbUserService.init();
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return throwError(() => error);
|
|
39
|
+
}
|
|
40
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: AdbUserInterceptor, deps: [{ token: i1.AdbUserService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
41
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: AdbUserInterceptor }); }
|
|
42
|
+
}
|
|
43
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: AdbUserInterceptor, decorators: [{
|
|
44
|
+
type: Injectable
|
|
45
|
+
}], ctorParameters: () => [{ type: i1.AdbUserService }] });
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRiLXVzZXIuaW50ZXJjZXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnRkYXRhLXNoYXJlZC9zcmMvbGliL2NvbXBvbmVudHMvYWRiLXVzZXIvYWRiLXVzZXIuaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsVUFBVSxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7OztBQUk5QyxNQUFNLE9BQU8sa0JBQWtCO2FBQ1osc0JBQWlCLEdBQUcsR0FBRyxBQUFOLENBQU87SUFDdkMsWUFBb0IsY0FBOEI7UUFBOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO0lBQUksQ0FBQztJQUV2RCxTQUFTLENBQUMsR0FBcUIsRUFBRSxJQUFpQjtRQUM5QyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDakQsY0FBYyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDL0UsQ0FBQztRQUNELE1BQU0sV0FBVyxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3BFLElBQUksV0FBVyxFQUFFLENBQUM7WUFDZCxNQUFNLGFBQWEsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO2dCQUM1QixVQUFVLEVBQUU7b0JBQ1IsYUFBYSxFQUFFLFVBQVUsV0FBVyxFQUFFO2lCQUN6QzthQUNKLENBQUMsQ0FBQztZQUNILE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBc0IsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0csQ0FBQzthQUFNLENBQUM7WUFDSixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQXNCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQUEsQ0FBQztRQUNsRyxDQUFDO0lBQ0wsQ0FBQztJQUdPLFlBQVksQ0FBQyxLQUF3QjtRQUN6QyxJQUFJLEtBQUssQ0FBQyxLQUFLLFlBQVksVUFBVSxFQUFFLENBQUM7WUFDcEMsb0JBQW9CO1FBQ3hCLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLGtCQUFrQixDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3hELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDL0IsQ0FBQztRQUNMLENBQUM7UUFDRCxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDO2lJQS9CUSxrQkFBa0I7cUlBQWxCLGtCQUFrQjs7MkZBQWxCLGtCQUFrQjtrQkFEOUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cEludGVyY2VwdG9yLCBIdHRwUmVxdWVzdCwgSHR0cEhhbmRsZXIsIEh0dHBFdmVudCwgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBTZXNzaW9uSWRzIH0gZnJvbSAnLi91c2VyLWNvbnN0YW50cyc7XHJcbmltcG9ydCB7IEFkYlVzZXJTZXJ2aWNlIH0gZnJvbSAnLi9hZGItdXNlci5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEFkYlVzZXJJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XHJcbiAgICBwcml2YXRlIHN0YXRpYyBVTkFVVEhFTlRJRklDQVRFRCA9IDQwMTtcclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgYWRiVXNlclNlcnZpY2U6IEFkYlVzZXJTZXJ2aWNlKSB7IH1cclxuXHJcbiAgICBpbnRlcmNlcHQocmVxOiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcik6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcclxuICAgICAgICBpZiAocmVxLmhlYWRlcnMuZ2V0KCdYLVN5c3RlbS1SZXF1ZXN0JykgIT09ICd0cnVlJykge1xyXG4gICAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKFNlc3Npb25JZHMuVVNFUl9MQVNUX0FDVElWRSwgRGF0ZS5ub3coKS50b1N0cmluZygpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgYWNjZXNzVG9rZW4gPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFNlc3Npb25JZHMuQUNDRVNTX1RPS0VOKTtcclxuICAgICAgICBpZiAoYWNjZXNzVG9rZW4pIHtcclxuICAgICAgICAgICAgY29uc3QgY2xvbmVkUmVxdWVzdCA9IHJlcS5jbG9uZSh7XHJcbiAgICAgICAgICAgICAgICBzZXRIZWFkZXJzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke2FjY2Vzc1Rva2VufWBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXh0LmhhbmRsZShjbG9uZWRSZXF1ZXN0KS5waXBlKGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3JzKGVycikpKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxKS5waXBlKGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3JzKGVycikpKTs7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICBwcml2YXRlIGhhbmRsZUVycm9ycyhlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpIHtcclxuICAgICAgICBpZiAoZXJyb3IuZXJyb3IgaW5zdGFuY2VvZiBFcnJvckV2ZW50KSB7XHJcbiAgICAgICAgICAgIC8vIENsaWVudC1zaWRlIGVycm9yXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PT0gQWRiVXNlckludGVyY2VwdG9yLlVOQVVUSEVOVElGSUNBVEVEKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFkYlVzZXJTZXJ2aWNlLmluaXQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { CommonModule } from "@angular/common";
|
|
2
|
+
import { HTTP_INTERCEPTORS } from "@angular/common/http";
|
|
3
|
+
import { NgModule } from "@angular/core";
|
|
4
|
+
import { TranslateModule } from "@ngx-translate/core";
|
|
5
|
+
import { AdbUserInterceptor } from "./adb-user.interceptor";
|
|
6
|
+
import { ADB_USER_SERVICE_CONFIG, DEFAULT_ADB_USER_SERVICE_CONFIG } from "./adb-user-service-config";
|
|
7
|
+
import { AdbUserService } from "./adb-user.service";
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "@ngx-translate/core";
|
|
10
|
+
export class AdbUserModule {
|
|
11
|
+
static forRoot(config) {
|
|
12
|
+
return {
|
|
13
|
+
ngModule: AdbUserModule,
|
|
14
|
+
providers: [
|
|
15
|
+
{
|
|
16
|
+
provide: ADB_USER_SERVICE_CONFIG,
|
|
17
|
+
useValue: { ...DEFAULT_ADB_USER_SERVICE_CONFIG, ...config },
|
|
18
|
+
},
|
|
19
|
+
],
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: AdbUserModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
23
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.8", ngImport: i0, type: AdbUserModule, imports: [CommonModule, i1.TranslateModule] }); }
|
|
24
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: AdbUserModule, providers: [
|
|
25
|
+
AdbUserService,
|
|
26
|
+
{
|
|
27
|
+
provide: HTTP_INTERCEPTORS,
|
|
28
|
+
useClass: AdbUserInterceptor,
|
|
29
|
+
multi: true
|
|
30
|
+
}
|
|
31
|
+
], imports: [CommonModule, TranslateModule.forChild()] }); }
|
|
32
|
+
}
|
|
33
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: AdbUserModule, decorators: [{
|
|
34
|
+
type: NgModule,
|
|
35
|
+
args: [{
|
|
36
|
+
imports: [CommonModule, TranslateModule.forChild()],
|
|
37
|
+
providers: [
|
|
38
|
+
AdbUserService,
|
|
39
|
+
{
|
|
40
|
+
provide: HTTP_INTERCEPTORS,
|
|
41
|
+
useClass: AdbUserInterceptor,
|
|
42
|
+
multi: true
|
|
43
|
+
}
|
|
44
|
+
]
|
|
45
|
+
}]
|
|
46
|
+
}] });
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRiLXVzZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJ0ZGF0YS1zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL2FkYi11c2VyL2FkYi11c2VyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSx1QkFBdUIsRUFBd0IsK0JBQStCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzSCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7OztBQWFwRCxNQUFNLE9BQU8sYUFBYTtJQUN0QixNQUFNLENBQUMsT0FBTyxDQUFDLE1BQTZCO1FBQ3hDLE9BQU87WUFDTCxRQUFRLEVBQUUsYUFBYTtZQUN2QixTQUFTLEVBQUU7Z0JBQ1Q7b0JBQ0UsT0FBTyxFQUFFLHVCQUF1QjtvQkFDaEMsUUFBUSxFQUFFLEVBQUUsR0FBRywrQkFBK0IsRUFBRSxHQUFHLE1BQU0sRUFBRTtpQkFDNUQ7YUFDRjtTQUNGLENBQUM7SUFDSixDQUFDO2lJQVhNLGFBQWE7a0lBQWIsYUFBYSxZQVZaLFlBQVk7a0lBVWIsYUFBYSxhQVRYO1lBQ1AsY0FBYztZQUNkO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFFBQVEsRUFBRSxrQkFBa0I7Z0JBQzVCLEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRixZQVJPLFlBQVksRUFBRSxlQUFlLENBQUMsUUFBUSxFQUFFOzsyRkFVekMsYUFBYTtrQkFYekIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsZUFBZSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUNuRCxTQUFTLEVBQUU7d0JBQ1AsY0FBYzt3QkFDZDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixRQUFRLEVBQUUsa0JBQWtCOzRCQUM1QixLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtpQkFDTiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHsgSFRUUF9JTlRFUkNFUFRPUlMgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xyXG5pbXBvcnQgeyBBZGJVc2VySW50ZXJjZXB0b3IgfSBmcm9tIFwiLi9hZGItdXNlci5pbnRlcmNlcHRvclwiO1xyXG5pbXBvcnQgeyBBREJfVVNFUl9TRVJWSUNFX0NPTkZJRywgQWRiVXNlclNlcnZpY2VDb25maWcsIERFRkFVTFRfQURCX1VTRVJfU0VSVklDRV9DT05GSUcgfSBmcm9tIFwiLi9hZGItdXNlci1zZXJ2aWNlLWNvbmZpZ1wiO1xyXG5pbXBvcnQgeyBBZGJVc2VyU2VydmljZSB9IGZyb20gXCIuL2FkYi11c2VyLnNlcnZpY2VcIjtcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGUuZm9yQ2hpbGQoKV0sXHJcbiAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICBBZGJVc2VyU2VydmljZSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUyxcclxuICAgICAgICAgIHVzZUNsYXNzOiBBZGJVc2VySW50ZXJjZXB0b3IsXHJcbiAgICAgICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgICAgIH1cclxuICAgICAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWRiVXNlck1vZHVsZSB7XHJcbiAgICBzdGF0aWMgZm9yUm9vdChjb25maWc/OiBBZGJVc2VyU2VydmljZUNvbmZpZyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8QWRiVXNlck1vZHVsZT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBuZ01vZHVsZTogQWRiVXNlck1vZHVsZSxcclxuICAgICAgICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgcHJvdmlkZTogQURCX1VTRVJfU0VSVklDRV9DT05GSUcsXHJcbiAgICAgICAgICAgICAgdXNlVmFsdWU6IHsgLi4uREVGQVVMVF9BREJfVVNFUl9TRVJWSUNFX0NPTkZJRywgLi4uY29uZmlnIH0sIFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgXSxcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiB9Il19
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import { Inject, Injectable } from '@angular/core';
|
|
2
|
+
import { ADB_USER_SERVICE_CONFIG } from './adb-user-service-config';
|
|
3
|
+
import { BehaviorSubject, Subscription } from 'rxjs';
|
|
4
|
+
import { HttpHeaders } from '@angular/common/http';
|
|
5
|
+
import { addSeconds, format } from 'date-fns';
|
|
6
|
+
import { SessionIds } from './user-constants';
|
|
7
|
+
import { NavigationEnd } from '@angular/router';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "@angular/common/http";
|
|
10
|
+
import * as i2 from "@angular/router";
|
|
11
|
+
export class AdbUserService {
|
|
12
|
+
constructor(config, http, router) {
|
|
13
|
+
this.config = config;
|
|
14
|
+
this.http = http;
|
|
15
|
+
this.router = router;
|
|
16
|
+
this.subscriptions = new Subscription();
|
|
17
|
+
this.userSubject = new BehaviorSubject(null);
|
|
18
|
+
this.user$ = this.userSubject.asObservable();
|
|
19
|
+
this.lastRefreshTime = 0;
|
|
20
|
+
this.config = { ...{ scope: 'roles', idleTime: 30, response_type: 'code' }, ...config };
|
|
21
|
+
}
|
|
22
|
+
init() {
|
|
23
|
+
this.router.events.subscribe((event) => {
|
|
24
|
+
if (event instanceof NavigationEnd) {
|
|
25
|
+
if (event.url.includes('auth-callback')) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
if (event.url && event.url !== '/') {
|
|
29
|
+
sessionStorage.setItem(SessionIds.CURRENT_URL, event.url);
|
|
30
|
+
}
|
|
31
|
+
this.mainLoop();
|
|
32
|
+
this.intervalId = setInterval(() => this.mainLoop(), 60 * 1000); // 60 seconds * 1000 milliseconds
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
logout() {
|
|
37
|
+
clearInterval(this.intervalId);
|
|
38
|
+
sessionStorage.clear();
|
|
39
|
+
window.location.href = `${this.config.issuer}/connect/endsession?post_logout_redirect_uri=${this.config.postLogoutUrl}`;
|
|
40
|
+
}
|
|
41
|
+
mainLoop() {
|
|
42
|
+
const accessToken = sessionStorage.getItem(SessionIds.ACCESS_TOKEN);
|
|
43
|
+
if (accessToken) {
|
|
44
|
+
const timeToLive = this.getTokenTimeToLive();
|
|
45
|
+
if (timeToLive === 0) {
|
|
46
|
+
this.authorize();
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
if (this.getTokenTimeToLive() <= 60 && this.hasUserBeenActive() && this.canRefreshToken()) {
|
|
50
|
+
console.log('token is about to timeout but we will refresh it because user has been active the last 5minutes');
|
|
51
|
+
this.refreshToken();
|
|
52
|
+
}
|
|
53
|
+
const user = this.getUser(accessToken);
|
|
54
|
+
this.userSubject.next(user);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
this.authorize();
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
refreshToken() {
|
|
62
|
+
const body = `client_id=${encodeURIComponent(this.config.clientId)}&` +
|
|
63
|
+
`grant_type=${encodeURIComponent("refresh_token")}&` +
|
|
64
|
+
`refresh_token=${encodeURIComponent(sessionStorage.getItem(SessionIds.REFRESH_TOKEN))}`;
|
|
65
|
+
this.http.post(`${this.config.issuer}/connect/token`, body, { headers: new HttpHeaders({ 'Content-Type': 'application/x-www-form-urlencoded' }) }).subscribe({
|
|
66
|
+
next: response => {
|
|
67
|
+
this.setTokensInSession(response);
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
this.lastRefreshTime = Date.now();
|
|
71
|
+
}
|
|
72
|
+
setTokensInSession(params) {
|
|
73
|
+
if (params.refresh_token) {
|
|
74
|
+
sessionStorage.setItem(SessionIds.REFRESH_TOKEN, params.refresh_token);
|
|
75
|
+
}
|
|
76
|
+
if (params.access_token) {
|
|
77
|
+
sessionStorage.setItem(SessionIds.ACCESS_TOKEN, params.access_token);
|
|
78
|
+
}
|
|
79
|
+
if (params.expires_in) {
|
|
80
|
+
const expireTime = addSeconds(new Date(), params.expires_in);
|
|
81
|
+
sessionStorage.setItem(SessionIds.TOKEN_EXPIRES, format(expireTime, 'yyyy-MM-dd HH:mm:ss'));
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
async authorize() {
|
|
85
|
+
const codeVerifier = Array.from(crypto.getRandomValues(new Uint8Array(64)), byte => 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'[byte % 62]).join('');
|
|
86
|
+
sessionStorage.setItem(SessionIds.CODE_VERIFIER, codeVerifier);
|
|
87
|
+
const encoder = new TextEncoder();
|
|
88
|
+
const data = encoder.encode(codeVerifier);
|
|
89
|
+
const hashBuffer = await crypto.subtle.digest('SHA-256', data);
|
|
90
|
+
const hashArray = new Uint8Array(hashBuffer);
|
|
91
|
+
let codeChallenge = btoa(String.fromCharCode(...hashArray));
|
|
92
|
+
codeChallenge = codeChallenge.replace(/=/g, '')
|
|
93
|
+
.replace(/\+/g, '-')
|
|
94
|
+
.replace(/\//g, '_');
|
|
95
|
+
const params = {
|
|
96
|
+
response_type: this.config.responseType,
|
|
97
|
+
client_id: this.config.clientId,
|
|
98
|
+
redirect_uri: this.config.redirectUrl,
|
|
99
|
+
scope: this.config.scope,
|
|
100
|
+
code_challenge: codeChallenge,
|
|
101
|
+
code_challenge_method: 'S256'
|
|
102
|
+
};
|
|
103
|
+
const url = new URL(this.config.issuer + '/connect/authorize');
|
|
104
|
+
url.search = this.addQueryParams(params).toString();
|
|
105
|
+
window.location.href = url.toString();
|
|
106
|
+
}
|
|
107
|
+
addQueryParams(object) {
|
|
108
|
+
if (!object) {
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
const urlParams = new URLSearchParams();
|
|
112
|
+
for (const prop in object) {
|
|
113
|
+
urlParams.append(prop, object[prop]);
|
|
114
|
+
}
|
|
115
|
+
return urlParams;
|
|
116
|
+
}
|
|
117
|
+
getTokenTimeToLive() {
|
|
118
|
+
const expires = sessionStorage.getItem(SessionIds.TOKEN_EXPIRES);
|
|
119
|
+
if (expires) {
|
|
120
|
+
const expireDate = new Date(expires);
|
|
121
|
+
const now = new Date();
|
|
122
|
+
const timeToLive = Math.floor((expireDate.getTime() - now.getTime()) / 1000);
|
|
123
|
+
return timeToLive < 0 ? 0 : timeToLive;
|
|
124
|
+
}
|
|
125
|
+
return 0;
|
|
126
|
+
}
|
|
127
|
+
//Cooldown for avoiding infinite refresh
|
|
128
|
+
canRefreshToken() {
|
|
129
|
+
const now = Date.now();
|
|
130
|
+
if (now - this.lastRefreshTime > (2 * 60 * 1000)) {
|
|
131
|
+
return true;
|
|
132
|
+
}
|
|
133
|
+
return false;
|
|
134
|
+
}
|
|
135
|
+
hasUserBeenActive() {
|
|
136
|
+
const lastActive = sessionStorage.getItem(SessionIds.USER_LAST_ACTIVE);
|
|
137
|
+
if (!lastActive) {
|
|
138
|
+
return false;
|
|
139
|
+
}
|
|
140
|
+
const timeSinceLastActive = Date.now() - parseInt(lastActive, 10);
|
|
141
|
+
const idleTimeMs = this.config.idleTime * 60 * 1000;
|
|
142
|
+
return timeSinceLastActive <= idleTimeMs;
|
|
143
|
+
}
|
|
144
|
+
getUser(token) {
|
|
145
|
+
try {
|
|
146
|
+
const [header, payload, signature] = token.split('.');
|
|
147
|
+
const base64Url = payload.replace(/-/g, '+').replace(/_/g, '/');
|
|
148
|
+
const decodedPayload = atob(base64Url);
|
|
149
|
+
const parsedPayload = JSON.parse(decodedPayload);
|
|
150
|
+
return parsedPayload;
|
|
151
|
+
}
|
|
152
|
+
catch (error) {
|
|
153
|
+
console.error('Error decoding JWT', error);
|
|
154
|
+
return null;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
ngOnDestroy() {
|
|
158
|
+
this.subscriptions.unsubscribe();
|
|
159
|
+
}
|
|
160
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: AdbUserService, deps: [{ token: ADB_USER_SERVICE_CONFIG }, { token: i1.HttpClient }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
161
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: AdbUserService }); }
|
|
162
|
+
}
|
|
163
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: AdbUserService, decorators: [{
|
|
164
|
+
type: Injectable
|
|
165
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
166
|
+
type: Inject,
|
|
167
|
+
args: [ADB_USER_SERVICE_CONFIG]
|
|
168
|
+
}] }, { type: i1.HttpClient }, { type: i2.Router }] });
|
|
169
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRiLXVzZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FydGRhdGEtc2hhcmVkL3NyYy9saWIvY29tcG9uZW50cy9hZGItdXNlci9hZGItdXNlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSx1QkFBdUIsRUFBd0IsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRixPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRCxPQUFPLEVBQWMsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBUyxhQUFhLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQzs7OztBQUkvRCxNQUFNLE9BQU8sY0FBYztJQVF6QixZQUMwQyxNQUE0QixFQUM1RCxJQUFnQixFQUNoQixNQUFjO1FBRmtCLFdBQU0sR0FBTixNQUFNLENBQXNCO1FBQzVELFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQVZoQixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbkMsZ0JBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBTSxJQUFJLENBQUMsQ0FBQztRQUNyRCxVQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUV4QyxvQkFBZSxHQUFHLENBQUMsQ0FBQztRQU9sQixJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxh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dUI7cUlBVHRCLGNBQWM7OzJGQUFkLGNBQWM7a0JBRDFCLFVBQVU7OzBCQVVOLE1BQU07MkJBQUMsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQURCX1VTRVJfU0VSVklDRV9DT05GSUcsIEFkYlVzZXJTZXJ2aWNlQ29uZmlnIH0gZnJvbSAnLi9hZGItdXNlci1zZXJ2aWNlLWNvbmZpZyc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBhZGRTZWNvbmRzLCBmb3JtYXQgfSBmcm9tICdkYXRlLWZucyc7XHJcbmltcG9ydCB7IFNlc3Npb25JZHMgfSBmcm9tICcuL3VzZXItY29uc3RhbnRzJztcclxuaW1wb3J0IHsgRXZlbnQsIE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQWRiVXNlclNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuICBwcml2YXRlIHVzZXJTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG51bGwpO1xyXG4gIHVzZXIkID0gdGhpcy51c2VyU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgbGFzdFJlZnJlc2hUaW1lID0gMDtcclxuICBpbnRlcnZhbElkOiBhbnk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdChBREJfVVNFUl9TRVJWSUNFX0NPTkZJRykgcHVibGljIGNvbmZpZzogQWRiVXNlclNlcnZpY2VDb25maWcsXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyKSB7XHJcbiAgICB0aGlzLmNvbmZpZyA9IHsgLi4ueyBzY29wZTogJ3JvbGVzJywgaWRsZVRpbWU6IDMwLCByZXNwb25zZV90eXBlOiAnY29kZScgfSwgLi4uY29uZmlnIH07XHJcbiAgfVxyXG5cclxuICBpbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZSgoZXZlbnQ6IEV2ZW50KSA9PiB7XHJcbiAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcclxuICAgICAgICBpZiAoZXZlbnQudXJsLmluY2x1ZGVzKCdhdXRoLWNhbGxiYWNrJykpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYoZXZlbnQudXJsJiZldmVudC51cmwhPT0nLycpe1xyXG4gICAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShTZXNzaW9uSWRzLkNVUlJFTlRfVVJMLGV2ZW50LnVybCk7XHJcbiAgICAgICAgfSAgICAgICAgXHJcbiAgICAgICAgdGhpcy5tYWluTG9vcCgpO1xyXG4gICAgICAgIHRoaXMuaW50ZXJ2YWxJZCA9IHNldEludGVydmFsKCgpID0+IHRoaXMubWFpbkxvb3AoKSwgNjAgKiAxMDAwKTsgLy8gNjAgc2Vjb25kcyAqIDEwMDAgbWlsbGlzZWNvbmRzXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbG9nb3V0KCk6IHZvaWQge1xyXG4gICAgY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsSWQpO1xyXG4gICAgc2Vzc2lvblN0b3JhZ2UuY2xlYXIoKTtcclxuICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYCR7dGhpcy5jb25maWcuaXNzdWVyfS9jb25uZWN0L2VuZHNlc3Npb24/cG9zdF9sb2dvdXRfcmVkaXJlY3RfdXJpPSR7dGhpcy5jb25maWcucG9zdExvZ291dFVybH1gO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBtYWluTG9vcCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShTZXNzaW9uSWRzLkFDQ0VTU19UT0tFTik7XHJcbiAgICBpZiAoYWNjZXNzVG9rZW4pIHtcclxuICAgICAgY29uc3QgdGltZVRvTGl2ZSA9IHRoaXMuZ2V0VG9rZW5UaW1lVG9MaXZlKCk7XHJcbiAgICAgIGlmICh0aW1lVG9MaXZlID09PSAwKSB7XHJcbiAgICAgICAgdGhpcy5hdXRob3JpemUoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAodGhpcy5nZXRUb2tlblRpbWVUb0xpdmUoKSA8PSA2MCAmJiB0aGlzLmhhc1VzZXJCZWVuQWN0aXZlKCkgJiYgdGhpcy5jYW5SZWZyZXNoVG9rZW4oKSkge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ3Rva2VuIGlzIGFib3V0IHRvIHRpbWVvdXQgYnV0IHdlIHdpbGwgcmVmcmVzaCBpdCBiZWNhdXNlIHVzZXIgaGFzIGJlZW4gYWN0aXZlIHRoZSBsYXN0IDVtaW51dGVzJyk7XHJcbiAgICAgICAgICB0aGlzLnJlZnJlc2hUb2tlbigpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB1c2VyID0gdGhpcy5nZXRVc2VyKGFjY2Vzc1Rva2VuKTtcclxuICAgICAgICB0aGlzLnVzZXJTdWJqZWN0Lm5leHQodXNlcik7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYXV0aG9yaXplKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlZnJlc2hUb2tlbigpIHtcclxuICAgIGNvbnN0IGJvZHkgPSBgY2xpZW50X2lkPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMuY29uZmlnLmNsaWVudElkKX0mYCArXHJcbiAgICAgIGBncmFudF90eXBlPSR7ZW5jb2RlVVJJQ29tcG9uZW50KFwicmVmcmVzaF90b2tlblwiKX0mYCArXHJcbiAgICAgIGByZWZyZXNoX3Rva2VuPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oU2Vzc2lvbklkcy5SRUZSRVNIX1RPS0VOKSl9YDtcclxuICAgIHRoaXMuaHR0cC5wb3N0PGFueT4oYCR7dGhpcy5jb25maWcuaXNzdWVyfS9jb25uZWN0L3Rva2VuYCwgYm9keSwgeyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcgfSkgfSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogcmVzcG9uc2UgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0VG9rZW5zSW5TZXNzaW9uKHJlc3BvbnNlKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmxhc3RSZWZyZXNoVGltZSA9IERhdGUubm93KCk7XHJcbiAgfVxyXG5cclxuICBzZXRUb2tlbnNJblNlc3Npb24ocGFyYW1zOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChwYXJhbXMucmVmcmVzaF90b2tlbikge1xyXG4gICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKFNlc3Npb25JZHMuUkVGUkVTSF9UT0tFTiwgcGFyYW1zLnJlZnJlc2hfdG9rZW4pO1xyXG4gICAgfVxyXG4gICAgaWYgKHBhcmFtcy5hY2Nlc3NfdG9rZW4pIHtcclxuICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShTZXNzaW9uSWRzLkFDQ0VTU19UT0tFTiwgcGFyYW1zLmFjY2Vzc190b2tlbik7XHJcbiAgICB9XHJcbiAgICBpZiAocGFyYW1zLmV4cGlyZXNfaW4pIHtcclxuICAgICAgY29uc3QgZXhwaXJlVGltZSA9IGFkZFNlY29uZHMobmV3IERhdGUoKSwgcGFyYW1zLmV4cGlyZXNfaW4pO1xyXG4gICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKFNlc3Npb25JZHMuVE9LRU5fRVhQSVJFUywgZm9ybWF0KGV4cGlyZVRpbWUsICd5eXl5LU1NLWRkIEhIOm1tOnNzJykpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBhdXRob3JpemUoKSB7XHJcbiAgICBjb25zdCBjb2RlVmVyaWZpZXIgPSBBcnJheS5mcm9tKGNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQ4QXJyYXkoNjQpKSwgYnl0ZSA9PlxyXG4gICAgICAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODknWyhieXRlIGFzIG51bWJlcikgJSA2Ml1cclxuICAgICkuam9pbignJyk7XHJcbiAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKFNlc3Npb25JZHMuQ09ERV9WRVJJRklFUiwgY29kZVZlcmlmaWVyKTtcclxuXHJcbiAgICBjb25zdCBlbmNvZGVyID0gbmV3IFRleHRFbmNvZGVyKCk7XHJcbiAgICBjb25zdCBkYXRhID0gZW5jb2Rlci5lbmNvZGUoY29kZVZlcmlmaWVyKTtcclxuICAgIGNvbnN0IGhhc2hCdWZmZXIgPSBhd2FpdCBjcnlwdG8uc3VidGxlLmRpZ2VzdCgnU0hBLTI1NicsIGRhdGEpO1xyXG4gICAgY29uc3QgaGFzaEFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoaGFzaEJ1ZmZlcik7XHJcbiAgICBsZXQgY29kZUNoYWxsZW5nZSA9IGJ0b2EoU3RyaW5nLmZyb21DaGFyQ29kZSguLi5oYXNoQXJyYXkpKTtcclxuICAgIGNvZGVDaGFsbGVuZ2UgPSBjb2RlQ2hhbGxlbmdlLnJlcGxhY2UoLz0vZywgJycpXHJcbiAgICAgIC5yZXBsYWNlKC9cXCsvZywgJy0nKVxyXG4gICAgICAucmVwbGFjZSgvXFwvL2csICdfJyk7XHJcblxyXG4gICAgY29uc3QgcGFyYW1zID0ge1xyXG4gICAgICByZXNwb25zZV90eXBlOiB0aGlzLmNvbmZpZy5yZXNwb25zZVR5cGUsXHJcbiAgICAgIGNsaWVudF9pZDogdGhpcy5jb25maWcuY2xpZW50SWQsXHJcbiAgICAgIHJlZGlyZWN0X3VyaTogdGhpcy5jb25maWcucmVkaXJlY3RVcmwsXHJcbiAgICAgIHNjb3BlOiB0aGlzLmNvbmZpZy5zY29wZSxcclxuICAgICAgY29kZV9jaGFsbGVuZ2U6IGNvZGVDaGFsbGVuZ2UsXHJcbiAgICAgIGNvZGVfY2hhbGxlbmdlX21ldGhvZDogJ1MyNTYnXHJcbiAgICB9O1xyXG4gICAgY29uc3QgdXJsID0gbmV3IFVSTCh0aGlzLmNvbmZpZy5pc3N1ZXIgKyAnL2Nvbm5lY3QvYXV0aG9yaXplJyk7XHJcbiAgICB1cmwuc2VhcmNoID0gdGhpcy5hZGRRdWVyeVBhcmFtcyhwYXJhbXMpLnRvU3RyaW5nKCk7XHJcbiAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHVybC50b1N0cmluZygpO1xyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgYWRkUXVlcnlQYXJhbXMob2JqZWN0OiBhbnkpOiBVUkxTZWFyY2hQYXJhbXMge1xyXG4gICAgaWYgKCFvYmplY3QpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBjb25zdCB1cmxQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XHJcbiAgICBmb3IgKGNvbnN0IHByb3AgaW4gb2JqZWN0KSB7XHJcbiAgICAgIHVybFBhcmFtcy5hcHBlbmQocHJvcCwgb2JqZWN0W3Byb3BdKTtcclxuICAgIH1cclxuICAgIHJldHVybiB1cmxQYXJhbXM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFRva2VuVGltZVRvTGl2ZSgpOiBudW1iZXIge1xyXG4gICAgY29uc3QgZXhwaXJlcyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oU2Vzc2lvbklkcy5UT0tFTl9FWFBJUkVTKTtcclxuICAgIGlmIChleHBpcmVzKSB7XHJcbiAgICAgIGNvbnN0IGV4cGlyZURhdGUgPSBuZXcgRGF0ZShleHBpcmVzKTtcclxuICAgICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcclxuICAgICAgY29uc3QgdGltZVRvTGl2ZSA9IE1hdGguZmxvb3IoKGV4cGlyZURhdGUuZ2V0VGltZSgpIC0gbm93LmdldFRpbWUoKSkgLyAxMDAwKTtcclxuICAgICAgcmV0dXJuIHRpbWVUb0xpdmUgPCAwID8gMCA6IHRpbWVUb0xpdmU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gMDtcclxuICB9XHJcblxyXG4gIC8vQ29vbGRvd24gZm9yIGF2b2lkaW5nIGluZmluaXRlIHJlZnJlc2hcclxuICBwcml2YXRlIGNhblJlZnJlc2hUb2tlbigpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XHJcbiAgICBpZiAobm93IC0gdGhpcy5sYXN0UmVmcmVzaFRpbWUgPiAoMiAqIDYwICogMTAwMCkpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhc1VzZXJCZWVuQWN0aXZlKCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgbGFzdEFjdGl2ZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oU2Vzc2lvbklkcy5VU0VSX0xBU1RfQUNUSVZFKTtcclxuICAgIGlmICghbGFzdEFjdGl2ZSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBjb25zdCB0aW1lU2luY2VMYXN0QWN0aXZlID0gRGF0ZS5ub3coKSAtIHBhcnNlSW50KGxhc3RBY3RpdmUsIDEwKTtcclxuICAgIGNvbnN0IGlkbGVUaW1lTXMgPSB0aGlzLmNvbmZpZy5pZGxlVGltZSAqIDYwICogMTAwMDtcclxuICAgIHJldHVybiB0aW1lU2luY2VMYXN0QWN0aXZlIDw9IGlkbGVUaW1lTXM7XHJcbiAgfVxyXG5cclxuICBnZXRVc2VyKHRva2VuOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgW2hlYWRlciwgcGF5bG9hZCwgc2lnbmF0dXJlXSA9IHRva2VuLnNwbGl0KCcuJyk7XHJcbiAgICAgIGNvbnN0IGJhc2U2NFVybCA9IHBheWxvYWQucmVwbGFjZSgvLS9nLCAnKycpLnJlcGxhY2UoL18vZywgJy8nKTtcclxuICAgICAgY29uc3QgZGVjb2RlZFBheWxvYWQgPSBhdG9iKGJhc2U2NFVybCk7XHJcbiAgICAgIGNvbnN0IHBhcnNlZFBheWxvYWQgPSBKU09OLnBhcnNlKGRlY29kZWRQYXlsb2FkKTtcclxuICAgICAgcmV0dXJuIHBhcnNlZFBheWxvYWQ7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBkZWNvZGluZyBKV1QnLCBlcnJvcik7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG59Il19
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { Component } from "@angular/core";
|
|
2
|
+
import { Subscription } from "rxjs";
|
|
3
|
+
import { HttpHeaders } from "@angular/common/http";
|
|
4
|
+
import { SessionIds } from "./user-constants";
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/router";
|
|
7
|
+
import * as i2 from "@angular/common/http";
|
|
8
|
+
import * as i3 from "./adb-user.service";
|
|
9
|
+
export class AuthCallbackComponent {
|
|
10
|
+
constructor(activatedRoute, router, http, adbUserService) {
|
|
11
|
+
this.activatedRoute = activatedRoute;
|
|
12
|
+
this.router = router;
|
|
13
|
+
this.http = http;
|
|
14
|
+
this.adbUserService = adbUserService;
|
|
15
|
+
this.subscriptions = new Subscription();
|
|
16
|
+
}
|
|
17
|
+
ngOnInit() {
|
|
18
|
+
this.subscriptions.add(this.activatedRoute.queryParamMap.subscribe(qParmas => {
|
|
19
|
+
if (qParmas.has('code')) {
|
|
20
|
+
const body = `grant_type=authorization_code` +
|
|
21
|
+
`&code=${encodeURIComponent(qParmas.get('code'))}` +
|
|
22
|
+
`&code_verifier=${encodeURIComponent(sessionStorage.getItem(SessionIds.CODE_VERIFIER))}` +
|
|
23
|
+
`&redirect_uri=${encodeURIComponent(this.adbUserService.config.redirectUrl)}` +
|
|
24
|
+
`&client_id=${encodeURIComponent(this.adbUserService.config.clientId)}`;
|
|
25
|
+
this.http.post(`${this.adbUserService.config.issuer}/connect/token`, body, { headers: new HttpHeaders({ 'Content-Type': 'application/x-www-form-urlencoded' }) }).subscribe({
|
|
26
|
+
next: response => {
|
|
27
|
+
this.adbUserService.setTokensInSession(response);
|
|
28
|
+
let requestedUrl = sessionStorage.getItem(SessionIds.CURRENT_URL);
|
|
29
|
+
if (requestedUrl && requestedUrl !== 'null') {
|
|
30
|
+
this.router.navigate([requestedUrl], { replaceUrl: true });
|
|
31
|
+
sessionStorage.removeItem(SessionIds.CURRENT_URL);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
}));
|
|
37
|
+
}
|
|
38
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: AuthCallbackComponent, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }, { token: i2.HttpClient }, { token: i3.AdbUserService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
39
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: AuthCallbackComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: '<div class="loading-dead-spinner"></div>', isInline: true }); }
|
|
40
|
+
}
|
|
41
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: AuthCallbackComponent, decorators: [{
|
|
42
|
+
type: Component,
|
|
43
|
+
args: [{
|
|
44
|
+
template: '<div class="loading-dead-spinner"></div>',
|
|
45
|
+
standalone: true,
|
|
46
|
+
}]
|
|
47
|
+
}], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i1.Router }, { type: i2.HttpClient }, { type: i3.AdbUserService }] });
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1jYWxsYmFjay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnRkYXRhLXNoYXJlZC9zcmMvbGliL2NvbXBvbmVudHMvYWRiLXVzZXIvYXV0aC1jYWxsYmFjay5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUVsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBDLE9BQU8sRUFBYyxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs7O0FBTTlDLE1BQU0sT0FBTyxxQkFBcUI7SUFFOUIsWUFDWSxjQUE4QixFQUM5QixNQUFjLEVBQ2QsSUFBZ0IsRUFDaEIsY0FBOEI7UUFIOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUxsQyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFLRyxDQUFDO0lBRS9DLFFBQVE7UUFDSixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDekUsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7Z0JBQ3RCLE1BQU0sSUFBSSxHQUFHLCtCQUErQjtvQkFDeEMsU0FBUyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUU7b0JBQ2xELGtCQUFrQixrQkFBa0IsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFO29CQUN4RixpQkFBaUIsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUU7b0JBQzdFLGNBQWMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFFNUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixFQUFFLElBQUksRUFDMUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxjQUFjLEVBQUUsbUNBQW1DLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUM7b0JBQzdGLElBQUksRUFBRSxRQUFRLENBQUMsRUFBRTt3QkFDYixJQUFJLENBQUMsY0FBYyxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDO3dCQUNqRCxJQUFJLFlBQVksR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQzt3QkFDbEUsSUFBSSxZQUFZLElBQUksWUFBWSxLQUFLLE1BQU0sRUFBRSxDQUFDOzRCQUMxQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7NEJBQzNELGNBQWMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO3dCQUN0RCxDQUFDO29CQUNMLENBQUM7aUJBQ0osQ0FBQyxDQUFDO1lBQ1gsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDO2lJQTlCUSxxQkFBcUI7cUhBQXJCLHFCQUFxQix3RUFIcEIsMENBQTBDOzsyRkFHM0MscUJBQXFCO2tCQUpqQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSwwQ0FBMEM7b0JBQ3BELFVBQVUsRUFBRSxJQUFJO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQWRiVXNlclNlcnZpY2UgfSBmcm9tIFwiLi9hZGItdXNlci5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7IFNlc3Npb25JZHMgfSBmcm9tIFwiLi91c2VyLWNvbnN0YW50c1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICB0ZW1wbGF0ZTogJzxkaXYgY2xhc3M9XCJsb2FkaW5nLWRlYWQtc3Bpbm5lclwiPjwvZGl2PicsXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXV0aENhbGxiYWNrQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIHByaXZhdGUgc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICAgICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgICAgIHByaXZhdGUgYWRiVXNlclNlcnZpY2U6IEFkYlVzZXJTZXJ2aWNlKSB7IH1cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHRoaXMuYWN0aXZhdGVkUm91dGUucXVlcnlQYXJhbU1hcC5zdWJzY3JpYmUocVBhcm1hcyA9PiB7XHJcbiAgICAgICAgICAgIGlmIChxUGFybWFzLmhhcygnY29kZScpKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBib2R5ID0gYGdyYW50X3R5cGU9YXV0aG9yaXphdGlvbl9jb2RlYCArXHJcbiAgICAgICAgICAgICAgICAgICAgYCZjb2RlPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHFQYXJtYXMuZ2V0KCdjb2RlJykpfWAgK1xyXG4gICAgICAgICAgICAgICAgICAgIGAmY29kZV92ZXJpZmllcj0ke2VuY29kZVVSSUNvbXBvbmVudChzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFNlc3Npb25JZHMuQ09ERV9WRVJJRklFUikpfWAgK1xyXG4gICAgICAgICAgICAgICAgICAgIGAmcmVkaXJlY3RfdXJpPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMuYWRiVXNlclNlcnZpY2UuY29uZmlnLnJlZGlyZWN0VXJsKX1gICtcclxuICAgICAgICAgICAgICAgICAgICBgJmNsaWVudF9pZD0ke2VuY29kZVVSSUNvbXBvbmVudCh0aGlzLmFkYlVzZXJTZXJ2aWNlLmNvbmZpZy5jbGllbnRJZCl9YDtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmh0dHAucG9zdDxhbnk+KGAke3RoaXMuYWRiVXNlclNlcnZpY2UuY29uZmlnLmlzc3Vlcn0vY29ubmVjdC90b2tlbmAsIGJvZHksXHJcbiAgICAgICAgICAgICAgICAgICAgeyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcgfSkgfSkuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dDogcmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGJVc2VyU2VydmljZS5zZXRUb2tlbnNJblNlc3Npb24ocmVzcG9uc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlcXVlc3RlZFVybCA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oU2Vzc2lvbklkcy5DVVJSRU5UX1VSTCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVxdWVzdGVkVXJsICYmIHJlcXVlc3RlZFVybCAhPT0gJ251bGwnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3JlcXVlc3RlZFVybF0sIHsgcmVwbGFjZVVybDogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKFNlc3Npb25JZHMuQ1VSUkVOVF9VUkwpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KSk7XHJcbiAgICB9XHJcbn0iXX0=
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export class SessionIds {
|
|
2
|
+
static { this.CURRENT_URL = "current_url"; }
|
|
3
|
+
static { this.CODE_VERIFIER = 'nonce'; }
|
|
4
|
+
static { this.REFRESH_TOKEN = 'refresh-token'; }
|
|
5
|
+
static { this.TOKEN_EXPIRES = 'token_expires'; }
|
|
6
|
+
static { this.ACCESS_TOKEN = 'access-token'; }
|
|
7
|
+
static { this.USER_LAST_ACTIVE = 'lastActive'; }
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1jb25zdGFudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnRkYXRhLXNoYXJlZC9zcmMvbGliL2NvbXBvbmVudHMvYWRiLXVzZXIvdXNlci1jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLFVBQVU7YUFDWixnQkFBVyxHQUFHLGFBQWEsQ0FBQzthQUM1QixrQkFBYSxHQUFHLE9BQU8sQ0FBQzthQUN4QixrQkFBYSxHQUFHLGVBQWUsQ0FBQzthQUNoQyxrQkFBYSxHQUFHLGVBQWUsQ0FBQzthQUNoQyxpQkFBWSxHQUFHLGNBQWMsQ0FBQzthQUM5QixxQkFBZ0IsR0FBRyxZQUFZLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgU2Vzc2lvbklkcyB7XHJcbiAgICBzdGF0aWMgQ1VSUkVOVF9VUkwgPSBcImN1cnJlbnRfdXJsXCI7XHJcbiAgICBzdGF0aWMgQ09ERV9WRVJJRklFUiA9ICdub25jZSc7XHJcbiAgICBzdGF0aWMgUkVGUkVTSF9UT0tFTiA9ICdyZWZyZXNoLXRva2VuJztcclxuICAgIHN0YXRpYyBUT0tFTl9FWFBJUkVTID0gJ3Rva2VuX2V4cGlyZXMnO1xyXG4gICAgc3RhdGljIEFDQ0VTU19UT0tFTiA9ICdhY2Nlc3MtdG9rZW4nO1xyXG4gICAgc3RhdGljIFVTRVJfTEFTVF9BQ1RJVkUgPSAnbGFzdEFjdGl2ZSdcclxufSJdfQ==
|
package/esm2022/public-api.mjs
CHANGED
|
@@ -41,4 +41,9 @@ export * from './lib/components/adb-rich-editor/adb-rich-editor.component';
|
|
|
41
41
|
export * from './lib/components/adb-rich-editor/adb-rich-text';
|
|
42
42
|
export * from './lib/components/adb-filter-section/adb-filter-section.module';
|
|
43
43
|
export * from './lib/components/adb-filter-section/filter-section.component';
|
|
44
|
-
|
|
44
|
+
export * from './lib/components/adb-user/adb-user.module';
|
|
45
|
+
export * from './lib/components/adb-user/adb-user.service';
|
|
46
|
+
export * from './lib/components/adb-user/adb-user.interceptor';
|
|
47
|
+
export * from './lib/components/adb-user/auth-callback.component';
|
|
48
|
+
export * from './lib/components/adb-user/user-constants';
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FydGRhdGEtc2hhcmVkL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBR0gsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLCtDQUErQyxDQUFDO0FBRTlELGNBQWMsaUVBQWlFLENBQUM7QUFDaEYsY0FBYyxvRUFBb0UsQ0FBQztBQUNuRixjQUFjLHVFQUF1RSxDQUFDO0FBRXRGLGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLHdDQUF3QyxDQUFDO0FBRXZELGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsc0NBQXNDLENBQUM7QUFFckQsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsNkJBQTZCLENBQUM7QUFFNUMsY0FBYyxxREFBcUQsQ0FBQztBQUNwRSxjQUFjLHdEQUF3RCxDQUFDO0FBQ3ZFLGNBQWMsd0RBQXdELENBQUM7QUFFdkUsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLHNEQUFzRCxDQUFDO0FBQ3JFLGNBQWMsdURBQXVELENBQUM7QUFFdEUsY0FBYyxxREFBcUQsQ0FBQztBQUNwRSxjQUFjLHNEQUFzRCxDQUFDO0FBQ3JFLGNBQWMsc0RBQXNELENBQUM7QUFFckUsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsOENBQThDLENBQUM7QUFFN0QsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLG9EQUFvRCxDQUFDO0FBRW5FLGNBQWMseURBQXlELENBQUM7QUFDeEUsY0FBYyw0REFBNEQsQ0FBQztBQUMzRSxjQUFjLGdEQUFnRCxDQUFDO0FBRS9ELGNBQWMsK0RBQStELENBQUM7QUFDOUUsY0FBYyw4REFBOEQsQ0FBQztBQUU3RSxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMsMENBQTBDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgYXJ0ZGF0YS1zaGFyZWRcclxuICovXHJcblxyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9hZGItaGVhZGVyL2FkYi1oZWFkZXIubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9hZGItaGVhZGVyL2FkYi1uYXYuY29tcG9uZW50JztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYWRiLWFydHBvcnRhbGVuLW5hdi9hZGItYXJ0cG9ydGFsZW4tbmF2Lm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYWRiLWFydHBvcnRhbGVuLW5hdi9hZGItYXJ0cG9ydGFsZW4tbmF2LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYWRiLWFydHBvcnRhbGVuLW5hdi9hZGItYXJ0cG9ydGFsZW4tZm9vdGVyLmNvbXBvbmVudCc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL2RpcmVjdGl2ZXMubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9jbGljay1vdXRzaWRlLmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZXMvZm9jdXMuZGlyZWN0aXZlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9yZWRsaXN0LWJhZGdlLWNsYXNzLmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZXMvcmlzay1jbGFzcy5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL2ZpbGUtdXBsb2FkLmRpcmVjdGl2ZSc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3BhZ2Vycy9wYWdlcnMubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9wYWdlcnMvaW5maW5pdGUtc2Nyb2xsLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvcGFnZXJzL3BhZ2VyJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9wYWdlcnMvcGFnZXItaW5saW5lJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BpcGVzL3BpcGVzLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BpcGVzL2hpZ2hsaWdodC5waXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlwZXMvaGlnaGxpZ2h0LWh0bWwucGlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BpcGVzL251bWJlci1zcGFjaW5nLnBpcGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9waXBlcy9kYXRlLnBpcGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9waXBlcy9lbXB0eVZhbHVlLnBpcGUnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9kYXRlLXBpY2tlci9hZGItZGF0ZS1waWNrZXIubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9kYXRlLXBpY2tlci9hZGItZGF0ZS1waWNrZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9kYXRlLXBpY2tlci9hZGItZGF0ZS1waWNrZXIuZGlyZWN0aXZlJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYWRiLWRyb3Bkb3duL2FkYi1kcm9wZG93bi5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2FkYi1kcm9wZG93bi9hZGItZHJvcGRvd24uZGlyZWN0aXZlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9hZGItZHJvcGRvd24vYWRiLWRyb3Bkb3duMi5kaXJlY3RpdmUnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9hZGItY29uZmlybS1tb2RhbC9hZGItbW9kYWwubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9hZGItY29uZmlybS1tb2RhbC9hZGItY29uZmlybS1tb2RhbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYWRiLWNvbmZpcm0tbW9kYWwvYWRiLW1vZGFsLnNlcnZpY2UnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9hZGItdG9hc3QvYWRiLXRvYXN0Lm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYWRiLXRvYXN0L2FkYi10b2FzdCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYWRiLXRvYXN0L2FkYi10b2FzdC5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYWRiLWJ1dHRvbnMvYWRiLWJ1dHRvbnMubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9hZGItYnV0dG9ucy9oZWxwLWJ1dHRvbi5jb21wb25lbnQnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9hZGItcmljaC1lZGl0b3IvYWRiLXJpY2gtZWRpdG9yLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYWRiLXJpY2gtZWRpdG9yL2FkYi1yaWNoLWVkaXRvci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2FkYi1yaWNoLWVkaXRvci9hZGItcmljaC10ZXh0JztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYWRiLWZpbHRlci1zZWN0aW9uL2FkYi1maWx0ZXItc2VjdGlvbi5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2FkYi1maWx0ZXItc2VjdGlvbi9maWx0ZXItc2VjdGlvbi5jb21wb25lbnQnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9hZGItdXNlci9hZGItdXNlci5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2FkYi11c2VyL2FkYi11c2VyLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2FkYi11c2VyL2FkYi11c2VyLmludGVyY2VwdG9yJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9hZGItdXNlci9hdXRoLWNhbGxiYWNrLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYWRiLXVzZXIvdXNlci1jb25zdGFudHMnOyJdfQ==
|