@dangl/angular-dangl-identity-client 6.2.0 → 6.3.0-beta0021

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.
Files changed (29) hide show
  1. package/README.md +25 -0
  2. package/api-client.d.ts +178 -178
  3. package/dangl-identity.module.d.ts +6 -7
  4. package/{fesm2020 → fesm2022}/dangl-angular-dangl-identity-client.mjs +905 -873
  5. package/fesm2022/dangl-angular-dangl-identity-client.mjs.map +1 -0
  6. package/index.d.ts +5 -5
  7. package/interceptors/dangl-identity-request-validator.d.ts +4 -4
  8. package/interceptors/jwt-interceptor.service.d.ts +16 -16
  9. package/messengers/authentication.messenger.d.ts +28 -26
  10. package/models/jwt-storage.d.ts +5 -5
  11. package/models/user-info.d.ts +11 -11
  12. package/package.json +5 -13
  13. package/public_api.d.ts +8 -8
  14. package/services/authentication.service.d.ts +14 -14
  15. package/services/jwt-token.service.d.ts +28 -28
  16. package/esm2020/api-client.mjs +0 -551
  17. package/esm2020/dangl-angular-dangl-identity-client.mjs +0 -5
  18. package/esm2020/dangl-identity.module.mjs +0 -29
  19. package/esm2020/interceptors/dangl-identity-request-validator.mjs +0 -2
  20. package/esm2020/interceptors/jwt-interceptor.service.mjs +0 -47
  21. package/esm2020/messengers/authentication.messenger.mjs +0 -146
  22. package/esm2020/models/jwt-storage.mjs +0 -2
  23. package/esm2020/models/user-info.mjs +0 -2
  24. package/esm2020/public_api.mjs +0 -12
  25. package/esm2020/services/authentication.service.mjs +0 -39
  26. package/esm2020/services/jwt-token.service.mjs +0 -101
  27. package/fesm2015/dangl-angular-dangl-identity-client.mjs +0 -896
  28. package/fesm2015/dangl-angular-dangl-identity-client.mjs.map +0 -1
  29. package/fesm2020/dangl-angular-dangl-identity-client.mjs.map +0 -1
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public_api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFuZ2wtYW5ndWxhci1kYW5nbC1pZGVudGl0eS1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWRhbmdsLWlkZW50aXR5LWNsaWVudC9zcmMvZGFuZ2wtYW5ndWxhci1kYW5nbC1pZGVudGl0eS1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWNfYXBpJztcbiJdfQ==
@@ -1,29 +0,0 @@
1
- import { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';
2
- import { JwtInterceptorService } from './interceptors/jwt-interceptor.service';
3
- import { NgModule } from '@angular/core';
4
- import * as i0 from "@angular/core";
5
- export class DanglIdentityModule {
6
- }
7
- DanglIdentityModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: DanglIdentityModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
8
- DanglIdentityModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.4", ngImport: i0, type: DanglIdentityModule, imports: [HttpClientModule] });
9
- DanglIdentityModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: DanglIdentityModule, providers: [
10
- {
11
- provide: HTTP_INTERCEPTORS,
12
- useClass: JwtInterceptorService,
13
- multi: true,
14
- },
15
- ], imports: [HttpClientModule] });
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: DanglIdentityModule, decorators: [{
17
- type: NgModule,
18
- args: [{
19
- imports: [HttpClientModule],
20
- providers: [
21
- {
22
- provide: HTTP_INTERCEPTORS,
23
- useClass: JwtInterceptorService,
24
- multi: true,
25
- },
26
- ],
27
- }]
28
- }] });
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFuZ2wtaWRlbnRpdHkubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1kYW5nbC1pZGVudGl0eS1jbGllbnQvc3JjL2RhbmdsLWlkZW50aXR5Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUzRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVl6QyxNQUFNLE9BQU8sbUJBQW1COztnSEFBbkIsbUJBQW1CO2lIQUFuQixtQkFBbUIsWUFUcEIsZ0JBQWdCO2lIQVNmLG1CQUFtQixhQVJuQjtRQUNUO1lBQ0UsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixRQUFRLEVBQUUscUJBQXFCO1lBQy9CLEtBQUssRUFBRSxJQUFJO1NBQ1o7S0FDRixZQVBTLGdCQUFnQjsyRkFTZixtQkFBbUI7a0JBVi9CLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7b0JBQzNCLFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixRQUFRLEVBQUUscUJBQXFCOzRCQUMvQixLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEhUVFBfSU5URVJDRVBUT1JTLCBIdHRwQ2xpZW50TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5cclxuaW1wb3J0IHsgSnd0SW50ZXJjZXB0b3JTZXJ2aWNlIH0gZnJvbSAnLi9pbnRlcmNlcHRvcnMvand0LWludGVyY2VwdG9yLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbSHR0cENsaWVudE1vZHVsZV0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IEhUVFBfSU5URVJDRVBUT1JTLFxyXG4gICAgICB1c2VDbGFzczogSnd0SW50ZXJjZXB0b3JTZXJ2aWNlLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIERhbmdsSWRlbnRpdHlNb2R1bGUge31cclxuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFuZ2wtaWRlbnRpdHktcmVxdWVzdC12YWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWRhbmdsLWlkZW50aXR5LWNsaWVudC9zcmMvaW50ZXJjZXB0b3JzL2RhbmdsLWlkZW50aXR5LXJlcXVlc3QtdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwUmVxdWVzdCB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJRGFuZ2xJZGVudGl0eVJlcXVlc3RWYWxpZGF0b3Ige1xyXG4gIHZhbGlkYXRlUmVxdWVzdChodHRwUmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55Pik6IGJvb2xlYW47XHJcbn1cclxuIl19
@@ -1,47 +0,0 @@
1
- import { Inject, Injectable, InjectionToken, Optional } from '@angular/core';
2
- import { mergeMap } from 'rxjs/operators';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "../services/jwt-token.service";
5
- export const DANGL_IDENTITY_REQUEST_VALIDATOR = new InjectionToken('Validator to decide whether to include JWT tokens in requests');
6
- export class JwtInterceptorService {
7
- constructor(jwtTokenService, requestValidator) {
8
- this.jwtTokenService = jwtTokenService;
9
- this.requestValidator = requestValidator;
10
- }
11
- intercept(request, next) {
12
- if (request.url.startsWith('/identity')) {
13
- // Requests to the authentication endpoint should not be intercepted
14
- return next.handle(request.clone());
15
- }
16
- if (this.requestValidator &&
17
- !this.requestValidator.validateRequest(request)) {
18
- // In case a request validator is provided but doesn't return true for the
19
- // current request, we're not appending a token
20
- return next.handle(request);
21
- }
22
- return this.jwtTokenService
23
- .getToken()
24
- .pipe(mergeMap((f) => next.handle(this.getHttpRequestWithToken(request, f && f.accessToken))));
25
- }
26
- getHttpRequestWithToken(request, token) {
27
- if (token) {
28
- return request.clone({
29
- setHeaders: {
30
- Authorization: `Bearer ${token}`,
31
- },
32
- });
33
- }
34
- return request.clone();
35
- }
36
- }
37
- JwtInterceptorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: JwtInterceptorService, deps: [{ token: i1.JwtTokenService }, { token: DANGL_IDENTITY_REQUEST_VALIDATOR, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
38
- JwtInterceptorService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: JwtInterceptorService });
39
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: JwtInterceptorService, decorators: [{
40
- type: Injectable
41
- }], ctorParameters: function () { return [{ type: i1.JwtTokenService }, { type: undefined, decorators: [{
42
- type: Optional
43
- }, {
44
- type: Inject,
45
- args: [DANGL_IDENTITY_REQUEST_VALIDATOR]
46
- }] }]; } });
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiand0LWludGVyY2VwdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWRhbmdsLWlkZW50aXR5LWNsaWVudC9zcmMvaW50ZXJjZXB0b3JzL2p3dC1pbnRlcmNlcHRvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHN0UsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFHMUMsTUFBTSxDQUFDLE1BQU0sZ0NBQWdDLEdBQzNDLElBQUksY0FBYyxDQUNoQiwrREFBK0QsQ0FDaEUsQ0FBQztBQUVKLE1BQU0sT0FBTyxxQkFBcUI7SUFDaEMsWUFDUyxlQUFnQyxFQUcvQixnQkFBZ0Q7UUFIakQsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBRy9CLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBZ0M7SUFDdkQsQ0FBQztJQUNKLFNBQVMsQ0FDUCxPQUF5QixFQUN6QixJQUFpQjtRQUVqQixJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQ3ZDLG9FQUFvRTtZQUNwRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7U0FDckM7UUFFRCxJQUNFLElBQUksQ0FBQyxnQkFBZ0I7WUFDckIsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxFQUMvQztZQUNBLDBFQUEwRTtZQUMxRSwrQ0FBK0M7WUFDL0MsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzdCO1FBRUQsT0FBTyxJQUFJLENBQUMsZUFBZTthQUN4QixRQUFRLEVBQUU7YUFDVixJQUFJLENBQ0gsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDYixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUN2RSxDQUNGLENBQUM7SUFDTixDQUFDO0lBRU8sdUJBQXVCLENBQzdCLE9BQXlCLEVBQ3pCLEtBQWM7UUFFZCxJQUFJLEtBQUssRUFBRTtZQUNULE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQztnQkFDbkIsVUFBVSxFQUFFO29CQUNWLGFBQWEsRUFBRSxVQUFVLEtBQUssRUFBRTtpQkFDakM7YUFDRixDQUFDLENBQUM7U0FDSjtRQUNELE9BQU8sT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3pCLENBQUM7O2tIQTlDVSxxQkFBcUIsaURBSXRCLGdDQUFnQztzSEFKL0IscUJBQXFCOzJGQUFyQixxQkFBcUI7a0JBRGpDLFVBQVU7OzBCQUlOLFFBQVE7OzBCQUNSLE1BQU07MkJBQUMsZ0NBQWdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBIdHRwRXZlbnQsXHJcbiAgSHR0cEhhbmRsZXIsXHJcbiAgSHR0cEludGVyY2VwdG9yLFxyXG4gIEh0dHBSZXF1ZXN0LFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuXHJcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEp3dFRva2VuU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2p3dC10b2tlbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtZXJnZU1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgSURhbmdsSWRlbnRpdHlSZXF1ZXN0VmFsaWRhdG9yIH0gZnJvbSAnLi9kYW5nbC1pZGVudGl0eS1yZXF1ZXN0LXZhbGlkYXRvcic7XHJcblxyXG5leHBvcnQgY29uc3QgREFOR0xfSURFTlRJVFlfUkVRVUVTVF9WQUxJREFUT1IgPVxyXG4gIG5ldyBJbmplY3Rpb25Ub2tlbjxJRGFuZ2xJZGVudGl0eVJlcXVlc3RWYWxpZGF0b3I+KFxyXG4gICAgJ1ZhbGlkYXRvciB0byBkZWNpZGUgd2hldGhlciB0byBpbmNsdWRlIEpXVCB0b2tlbnMgaW4gcmVxdWVzdHMnXHJcbiAgKTtcclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgSnd0SW50ZXJjZXB0b3JTZXJ2aWNlIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBqd3RUb2tlblNlcnZpY2U6IEp3dFRva2VuU2VydmljZSxcclxuICAgIEBPcHRpb25hbCgpXHJcbiAgICBASW5qZWN0KERBTkdMX0lERU5USVRZX1JFUVVFU1RfVkFMSURBVE9SKVxyXG4gICAgcHJpdmF0ZSByZXF1ZXN0VmFsaWRhdG9yOiBJRGFuZ2xJZGVudGl0eVJlcXVlc3RWYWxpZGF0b3JcclxuICApIHt9XHJcbiAgaW50ZXJjZXB0KFxyXG4gICAgcmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PixcclxuICAgIG5leHQ6IEh0dHBIYW5kbGVyXHJcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xyXG4gICAgaWYgKHJlcXVlc3QudXJsLnN0YXJ0c1dpdGgoJy9pZGVudGl0eScpKSB7XHJcbiAgICAgIC8vIFJlcXVlc3RzIHRvIHRoZSBhdXRoZW50aWNhdGlvbiBlbmRwb2ludCBzaG91bGQgbm90IGJlIGludGVyY2VwdGVkXHJcbiAgICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXF1ZXN0LmNsb25lKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5yZXF1ZXN0VmFsaWRhdG9yICYmXHJcbiAgICAgICF0aGlzLnJlcXVlc3RWYWxpZGF0b3IudmFsaWRhdGVSZXF1ZXN0KHJlcXVlc3QpXHJcbiAgICApIHtcclxuICAgICAgLy8gSW4gY2FzZSBhIHJlcXVlc3QgdmFsaWRhdG9yIGlzIHByb3ZpZGVkIGJ1dCBkb2Vzbid0IHJldHVybiB0cnVlIGZvciB0aGVcclxuICAgICAgLy8gY3VycmVudCByZXF1ZXN0LCB3ZSdyZSBub3QgYXBwZW5kaW5nIGEgdG9rZW5cclxuICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcXVlc3QpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLmp3dFRva2VuU2VydmljZVxyXG4gICAgICAuZ2V0VG9rZW4oKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtZXJnZU1hcCgoZikgPT5cclxuICAgICAgICAgIG5leHQuaGFuZGxlKHRoaXMuZ2V0SHR0cFJlcXVlc3RXaXRoVG9rZW4ocmVxdWVzdCwgZiAmJiBmLmFjY2Vzc1Rva2VuKSlcclxuICAgICAgICApXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEh0dHBSZXF1ZXN0V2l0aFRva2VuKFxyXG4gICAgcmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PixcclxuICAgIHRva2VuPzogc3RyaW5nXHJcbiAgKTogSHR0cFJlcXVlc3Q8YW55PiB7XHJcbiAgICBpZiAodG9rZW4pIHtcclxuICAgICAgcmV0dXJuIHJlcXVlc3QuY2xvbmUoe1xyXG4gICAgICAgIHNldEhlYWRlcnM6IHtcclxuICAgICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHt0b2tlbn1gLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlcXVlc3QuY2xvbmUoKTtcclxuICB9XHJcbn1cclxuIl19
@@ -1,146 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { ReplaySubject, Subject } from 'rxjs';
3
- import { JwtHelperService } from '@auth0/angular-jwt';
4
- import { takeUntil } from 'rxjs/operators';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "../services/jwt-token.service";
7
- import * as i2 from "../api-client";
8
- export class AuthenticationMessenger {
9
- constructor(jwtTokenService, danglIdentityClient) {
10
- this.jwtTokenService = jwtTokenService;
11
- this.danglIdentityClient = danglIdentityClient;
12
- this.jwtHelperService = new JwtHelperService();
13
- this.$destroyed = new Subject();
14
- this.isAuthenticated = new ReplaySubject(1);
15
- this.username = new ReplaySubject(1);
16
- this.email = new ReplaySubject(1);
17
- this.identiconId = new ReplaySubject(1);
18
- this.userInfo = new ReplaySubject(1);
19
- this.tokenRefreshStarted = new Subject();
20
- this.tokenRefreshFinished = new Subject();
21
- jwtTokenService.tokenRefreshStarted
22
- .pipe(takeUntil(this.$destroyed))
23
- .subscribe(() => this.tokenRefreshStarted.next());
24
- jwtTokenService.tokenRefreshFinished
25
- .pipe(takeUntil(this.$destroyed))
26
- .subscribe((successfulRefresh) => this.tokenRefreshFinished.next(successfulRefresh));
27
- jwtTokenService.tokenStored
28
- .pipe(takeUntil(this.$destroyed))
29
- .subscribe((jwtToken) => this.refreshAuthenticationStatus(jwtToken));
30
- jwtTokenService
31
- .getToken()
32
- .subscribe((token) => this.refreshAuthenticationStatus(token));
33
- }
34
- ngOnDestroy() {
35
- this.isAuthenticated.complete();
36
- this.username.complete();
37
- this.email.complete();
38
- this.identiconId.complete();
39
- this.userInfo.complete();
40
- this.tokenRefreshStarted.complete();
41
- this.tokenRefreshFinished.complete();
42
- this.$destroyed.next();
43
- this.$destroyed.complete();
44
- }
45
- refreshUserInfoFromServer() {
46
- this.danglIdentityClient.getUserInfo().subscribe({
47
- next: (serverUserInfo) => {
48
- if (serverUserInfo.userIsAuthenticated) {
49
- const userInfo = {
50
- deserializedToken: null,
51
- email: serverUserInfo.currentUserEmail,
52
- id: serverUserInfo.currentUserId,
53
- identiconId: serverUserInfo.currentUserIdenticonId,
54
- roles: [],
55
- claims: {},
56
- username: serverUserInfo.currentUserName,
57
- };
58
- serverUserInfo.userClaims.forEach((claim) => {
59
- if (claim.type === 'role') {
60
- userInfo.roles.push(claim.value);
61
- }
62
- else if (userInfo.claims[claim.type] === undefined) {
63
- userInfo.claims[claim.type] = [claim.value];
64
- }
65
- else {
66
- userInfo.claims[claim.type].push(claim.value);
67
- }
68
- });
69
- this.isAuthenticated.next(true);
70
- this.username.next(serverUserInfo.currentUserName);
71
- this.email.next(serverUserInfo.currentUserEmail);
72
- this.identiconId.next(serverUserInfo.currentUserIdenticonId);
73
- this.userInfo.next(userInfo);
74
- }
75
- else {
76
- this.isAuthenticated.next(false);
77
- this.username.next(null);
78
- this.email.next(null);
79
- this.identiconId.next(null);
80
- this.userInfo.next(null);
81
- }
82
- },
83
- });
84
- }
85
- refreshAuthenticationStatus(jwtToken) {
86
- if (jwtToken) {
87
- const isValidToken = jwtToken.expiresAt > new Date().getTime() / 1000;
88
- if (this.lastBroadcastAccessToken === jwtToken.accessToken) {
89
- return;
90
- }
91
- this.lastBroadcastAccessToken = jwtToken.accessToken;
92
- if (isValidToken) {
93
- this.isAuthenticated.next(true);
94
- const decodedToken = this.jwtHelperService.decodeToken(jwtToken.accessToken);
95
- this.username.next(decodedToken['name']);
96
- this.email.next(decodedToken['email']);
97
- this.identiconId.next(decodedToken['identicon_id']);
98
- const tokenClaims = {};
99
- for (const tokenProp in decodedToken) {
100
- if (decodedToken.hasOwnProperty(tokenProp)) {
101
- const property = decodedToken[tokenProp];
102
- if (typeof property === 'string') {
103
- if (tokenClaims[tokenProp] === undefined) {
104
- tokenClaims[tokenProp] = [];
105
- }
106
- tokenClaims[tokenProp].push(property);
107
- }
108
- }
109
- }
110
- this.userInfo.next({
111
- id: decodedToken['sub'],
112
- claims: tokenClaims,
113
- deserializedToken: decodedToken,
114
- email: decodedToken['email'],
115
- identiconId: decodedToken['identicon_id'],
116
- username: decodedToken['name'],
117
- roles: decodedToken['role'],
118
- });
119
- }
120
- else {
121
- this.isAuthenticated.next(false);
122
- this.jwtTokenService.refreshToken().subscribe(() => { });
123
- }
124
- }
125
- else {
126
- if (this.lastBroadcastAccessToken === null) {
127
- return;
128
- }
129
- this.lastBroadcastAccessToken = null;
130
- this.isAuthenticated.next(false);
131
- this.username.next(null);
132
- this.email.next(null);
133
- this.identiconId.next(null);
134
- this.userInfo.next(null);
135
- }
136
- }
137
- }
138
- AuthenticationMessenger.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: AuthenticationMessenger, deps: [{ token: i1.JwtTokenService }, { token: i2.DanglIdentityClient }], target: i0.ɵɵFactoryTarget.Injectable });
139
- AuthenticationMessenger.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: AuthenticationMessenger, providedIn: 'root' });
140
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: AuthenticationMessenger, decorators: [{
141
- type: Injectable,
142
- args: [{
143
- providedIn: 'root',
144
- }]
145
- }], ctorParameters: function () { return [{ type: i1.JwtTokenService }, { type: i2.DanglIdentityClient }]; } });
146
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24ubWVzc2VuZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1kYW5nbC1pZGVudGl0eS1jbGllbnQvc3JjL21lc3NlbmdlcnMvYXV0aGVudGljYXRpb24ubWVzc2VuZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFJdEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBSzNDLE1BQU0sT0FBTyx1QkFBdUI7SUFhbEMsWUFDVSxlQUFnQyxFQUNoQyxtQkFBd0M7UUFEeEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFkMUMscUJBQWdCLEdBQUcsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1FBRTFDLGVBQVUsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRTFCLG9CQUFlLEdBQUcsSUFBSSxhQUFhLENBQVUsQ0FBQyxDQUFDLENBQUM7UUFDaEQsYUFBUSxHQUFHLElBQUksYUFBYSxDQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ3hDLFVBQUssR0FBRyxJQUFJLGFBQWEsQ0FBUyxDQUFDLENBQUMsQ0FBQztRQUNyQyxnQkFBVyxHQUFHLElBQUksYUFBYSxDQUFTLENBQUMsQ0FBQyxDQUFDO1FBQzNDLGFBQVEsR0FBRyxJQUFJLGFBQWEsQ0FBVyxDQUFDLENBQUMsQ0FBQztRQUMxQyx3QkFBbUIsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ3BDLHlCQUFvQixHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7UUFNckQsZUFBZSxDQUFDLG1CQUFtQjth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WSxDQUFDLE1BQU0sQ0FBQztpQkFDNUIsQ0FBQyxDQUFDO2FBQ0o7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQyxDQUFDO2FBQ3pEO1NBQ0Y7YUFBTTtZQUNMLElBQUksSUFBSSxDQUFDLHdCQUF3QixLQUFLLElBQUksRUFBRTtnQkFDMUMsT0FBTzthQUNSO1lBQ0QsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQztZQUNyQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN6QixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM1QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMxQjtJQUNILENBQUM7O29IQTdJVSx1QkFBdUI7d0hBQXZCLHVCQUF1QixjQUZ0QixNQUFNOzJGQUVQLHVCQUF1QjtrQkFIbkMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmVwbGF5U3ViamVjdCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgRGFuZ2xJZGVudGl0eUNsaWVudCB9IGZyb20gJy4uL2FwaS1jbGllbnQnO1xyXG5pbXBvcnQgeyBKd3RIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnQGF1dGgwL2FuZ3VsYXItand0JztcclxuaW1wb3J0IHsgSnd0U3RvcmFnZSB9IGZyb20gJy4uL21vZGVscy9qd3Qtc3RvcmFnZSc7XHJcbmltcG9ydCB7IEp3dFRva2VuU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2p3dC10b2tlbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXNlckluZm8gfSBmcm9tICcuLi9tb2RlbHMvdXNlci1pbmZvJztcclxuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEF1dGhlbnRpY2F0aW9uTWVzc2VuZ2VyIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICBwcml2YXRlIGp3dEhlbHBlclNlcnZpY2UgPSBuZXcgSnd0SGVscGVyU2VydmljZSgpO1xyXG4gIHByaXZhdGUgbGFzdEJyb2FkY2FzdEFjY2Vzc1Rva2VuOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSAkZGVzdHJveWVkID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgcmVhZG9ubHkgaXNBdXRoZW50aWNhdGVkID0gbmV3IFJlcGxheVN1YmplY3Q8Ym9vbGVhbj4oMSk7XHJcbiAgcmVhZG9ubHkgdXNlcm5hbWUgPSBuZXcgUmVwbGF5U3ViamVjdDxzdHJpbmc+KDEpO1xyXG4gIHJlYWRvbmx5IGVtYWlsID0gbmV3IFJlcGxheVN1YmplY3Q8c3RyaW5nPigxKTtcclxuICByZWFkb25seSBpZGVudGljb25JZCA9IG5ldyBSZXBsYXlTdWJqZWN0PHN0cmluZz4oMSk7XHJcbiAgcmVhZG9ubHkgdXNlckluZm8gPSBuZXcgUmVwbGF5U3ViamVjdDxVc2VySW5mbz4oMSk7XHJcbiAgcmVhZG9ubHkgdG9rZW5SZWZyZXNoU3RhcnRlZCA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgcmVhZG9ubHkgdG9rZW5SZWZyZXNoRmluaXNoZWQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgand0VG9rZW5TZXJ2aWNlOiBKd3RUb2tlblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGRhbmdsSWRlbnRpdHlDbGllbnQ6IERhbmdsSWRlbnRpdHlDbGllbnRcclxuICApIHtcclxuICAgIGp3dFRva2VuU2VydmljZS50b2tlblJlZnJlc2hTdGFydGVkXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiRkZXN0cm95ZWQpKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMudG9rZW5SZWZyZXNoU3RhcnRlZC5uZXh0KCkpO1xyXG5cclxuICAgIGp3dFRva2VuU2VydmljZS50b2tlblJlZnJlc2hGaW5pc2hlZFxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4kZGVzdHJveWVkKSlcclxuICAgICAgLnN1YnNjcmliZSgoc3VjY2Vzc2Z1bFJlZnJlc2gpID0+XHJcbiAgICAgICAgdGhpcy50b2tlblJlZnJlc2hGaW5pc2hlZC5uZXh0KHN1Y2Nlc3NmdWxSZWZyZXNoKVxyXG4gICAgICApO1xyXG5cclxuICAgIGp3dFRva2VuU2VydmljZS50b2tlblN0b3JlZFxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4kZGVzdHJveWVkKSlcclxuICAgICAgLnN1YnNjcmliZSgoand0VG9rZW4pID0+IHRoaXMucmVmcmVzaEF1dGhlbnRpY2F0aW9uU3RhdHVzKGp3dFRva2VuKSk7XHJcblxyXG4gICAgand0VG9rZW5TZXJ2aWNlXHJcbiAgICAgIC5nZXRUb2tlbigpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHRva2VuKSA9PiB0aGlzLnJlZnJlc2hBdXRoZW50aWNhdGlvblN0YXR1cyh0b2tlbikpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzQXV0aGVudGljYXRlZC5jb21wbGV0ZSgpO1xyXG4gICAgdGhpcy51c2VybmFtZS5jb21wbGV0ZSgpO1xyXG4gICAgdGhpcy5lbWFpbC5jb21wbGV0ZSgpO1xyXG4gICAgdGhpcy5pZGVudGljb25JZC5jb21wbGV0ZSgpO1xyXG4gICAgdGhpcy51c2VySW5mby5jb21wbGV0ZSgpO1xyXG4gICAgdGhpcy50b2tlblJlZnJlc2hTdGFydGVkLmNvbXBsZXRlKCk7XHJcbiAgICB0aGlzLnRva2VuUmVmcmVzaEZpbmlzaGVkLmNvbXBsZXRlKCk7XHJcbiAgICB0aGlzLiRkZXN0cm95ZWQubmV4dCgpO1xyXG4gICAgdGhpcy4kZGVzdHJveWVkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICByZWZyZXNoVXNlckluZm9Gcm9tU2VydmVyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kYW5nbElkZW50aXR5Q2xpZW50LmdldFVzZXJJbmZvKCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHNlcnZlclVzZXJJbmZvKSA9PiB7XHJcbiAgICAgICAgaWYgKHNlcnZlclVzZXJJbmZvLnVzZXJJc0F1dGhlbnRpY2F0ZWQpIHtcclxuICAgICAgICAgIGNvbnN0IHVzZXJJbmZvOiBVc2VySW5mbyA9IHtcclxuICAgICAgICAgICAgZGVzZXJpYWxpemVkVG9rZW46IG51bGwsXHJcbiAgICAgICAgICAgIGVtYWlsOiBzZXJ2ZXJVc2VySW5mby5jdXJyZW50VXNlckVtYWlsLFxyXG4gICAgICAgICAgICBpZDogc2VydmVyVXNlckluZm8uY3VycmVudFVzZXJJZCxcclxuICAgICAgICAgICAgaWRlbnRpY29uSWQ6IHNlcnZlclVzZXJJbmZvLmN1cnJlbnRVc2VySWRlbnRpY29uSWQsXHJcbiAgICAgICAgICAgIHJvbGVzOiBbXSxcclxuICAgICAgICAgICAgY2xhaW1zOiB7fSxcclxuICAgICAgICAgICAgdXNlcm5hbWU6IHNlcnZlclVzZXJJbmZvLmN1cnJlbnRVc2VyTmFtZSxcclxuICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgc2VydmVyVXNlckluZm8udXNlckNsYWltcy5mb3JFYWNoKChjbGFpbSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoY2xhaW0udHlwZSA9PT0gJ3JvbGUnKSB7XHJcbiAgICAgICAgICAgICAgdXNlckluZm8ucm9sZXMucHVzaChjbGFpbS52YWx1ZSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodXNlckluZm8uY2xhaW1zW2NsYWltLnR5cGVdID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICB1c2VySW5mby5jbGFpbXNbY2xhaW0udHlwZV0gPSBbY2xhaW0udmFsdWVdO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHVzZXJJbmZvLmNsYWltc1tjbGFpbS50eXBlXS5wdXNoKGNsYWltLnZhbHVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmlzQXV0aGVudGljYXRlZC5uZXh0KHRydWUpO1xyXG4gICAgICAgICAgdGhpcy51c2VybmFtZS5uZXh0KHNlcnZlclVzZXJJbmZvLmN1cnJlbnRVc2VyTmFtZSk7XHJcbiAgICAgICAgICB0aGlzLmVtYWlsLm5leHQoc2VydmVyVXNlckluZm8uY3VycmVudFVzZXJFbWFpbCk7XHJcbiAgICAgICAgICB0aGlzLmlkZW50aWNvbklkLm5leHQoc2VydmVyVXNlckluZm8uY3VycmVudFVzZXJJZGVudGljb25JZCk7XHJcbiAgICAgICAgICB0aGlzLnVzZXJJbmZvLm5leHQodXNlckluZm8pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmlzQXV0aGVudGljYXRlZC5uZXh0KGZhbHNlKTtcclxuICAgICAgICAgIHRoaXMudXNlcm5hbWUubmV4dChudWxsKTtcclxuICAgICAgICAgIHRoaXMuZW1haWwubmV4dChudWxsKTtcclxuICAgICAgICAgIHRoaXMuaWRlbnRpY29uSWQubmV4dChudWxsKTtcclxuICAgICAgICAgIHRoaXMudXNlckluZm8ubmV4dChudWxsKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVmcmVzaEF1dGhlbnRpY2F0aW9uU3RhdHVzKGp3dFRva2VuPzogSnd0U3RvcmFnZSkge1xyXG4gICAgaWYgKGp3dFRva2VuKSB7XHJcbiAgICAgIGNvbnN0IGlzVmFsaWRUb2tlbiA9IGp3dFRva2VuLmV4cGlyZXNBdCA+IG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMDtcclxuICAgICAgaWYgKHRoaXMubGFzdEJyb2FkY2FzdEFjY2Vzc1Rva2VuID09PSBqd3RUb2tlbi5hY2Nlc3NUb2tlbikge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmxhc3RCcm9hZGNhc3RBY2Nlc3NUb2tlbiA9IGp3dFRva2VuLmFjY2Vzc1Rva2VuO1xyXG4gICAgICBpZiAoaXNWYWxpZFRva2VuKSB7XHJcbiAgICAgICAgdGhpcy5pc0F1dGhlbnRpY2F0ZWQubmV4dCh0cnVlKTtcclxuICAgICAgICBjb25zdCBkZWNvZGVkVG9rZW4gPSB0aGlzLmp3dEhlbHBlclNlcnZpY2UuZGVjb2RlVG9rZW4oXHJcbiAgICAgICAgICBqd3RUb2tlbi5hY2Nlc3NUb2tlblxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy51c2VybmFtZS5uZXh0KGRlY29kZWRUb2tlblsnbmFtZSddKTtcclxuICAgICAgICB0aGlzLmVtYWlsLm5leHQoZGVjb2RlZFRva2VuWydlbWFpbCddKTtcclxuICAgICAgICB0aGlzLmlkZW50aWNvbklkLm5leHQoZGVjb2RlZFRva2VuWydpZGVudGljb25faWQnXSk7XHJcblxyXG4gICAgICAgIGNvbnN0IHRva2VuQ2xhaW1zOiB7IFtjbGFpbTogc3RyaW5nXTogc3RyaW5nW10gfSA9IHt9O1xyXG4gICAgICAgIGZvciAoY29uc3QgdG9rZW5Qcm9wIGluIGRlY29kZWRUb2tlbikge1xyXG4gICAgICAgICAgaWYgKGRlY29kZWRUb2tlbi5oYXNPd25Qcm9wZXJ0eSh0b2tlblByb3ApKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHByb3BlcnR5ID0gZGVjb2RlZFRva2VuW3Rva2VuUHJvcF07XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgcHJvcGVydHkgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHRva2VuQ2xhaW1zW3Rva2VuUHJvcF0gPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgdG9rZW5DbGFpbXNbdG9rZW5Qcm9wXSA9IFtdO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgdG9rZW5DbGFpbXNbdG9rZW5Qcm9wXS5wdXNoKHByb3BlcnR5KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy51c2VySW5mby5uZXh0KHtcclxuICAgICAgICAgIGlkOiBkZWNvZGVkVG9rZW5bJ3N1YiddLFxyXG4gICAgICAgICAgY2xhaW1zOiB0b2tlbkNsYWltcyxcclxuICAgICAgICAgIGRlc2VyaWFsaXplZFRva2VuOiBkZWNvZGVkVG9rZW4sXHJcbiAgICAgICAgICBlbWFpbDogZGVjb2RlZFRva2VuWydlbWFpbCddLFxyXG4gICAgICAgICAgaWRlbnRpY29uSWQ6IGRlY29kZWRUb2tlblsnaWRlbnRpY29uX2lkJ10sXHJcbiAgICAgICAgICB1c2VybmFtZTogZGVjb2RlZFRva2VuWyduYW1lJ10sXHJcbiAgICAgICAgICByb2xlczogZGVjb2RlZFRva2VuWydyb2xlJ10sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5pc0F1dGhlbnRpY2F0ZWQubmV4dChmYWxzZSk7XHJcbiAgICAgICAgdGhpcy5qd3RUb2tlblNlcnZpY2UucmVmcmVzaFRva2VuKCkuc3Vic2NyaWJlKCgpID0+IHt9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMubGFzdEJyb2FkY2FzdEFjY2Vzc1Rva2VuID09PSBudWxsKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubGFzdEJyb2FkY2FzdEFjY2Vzc1Rva2VuID0gbnVsbDtcclxuICAgICAgdGhpcy5pc0F1dGhlbnRpY2F0ZWQubmV4dChmYWxzZSk7XHJcbiAgICAgIHRoaXMudXNlcm5hbWUubmV4dChudWxsKTtcclxuICAgICAgdGhpcy5lbWFpbC5uZXh0KG51bGwpO1xyXG4gICAgICB0aGlzLmlkZW50aWNvbklkLm5leHQobnVsbCk7XHJcbiAgICAgIHRoaXMudXNlckluZm8ubmV4dChudWxsKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiand0LXN0b3JhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWRhbmdsLWlkZW50aXR5LWNsaWVudC9zcmMvbW9kZWxzL2p3dC1zdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEp3dFN0b3JhZ2Uge1xyXG4gIGFjY2Vzc1Rva2VuOiBzdHJpbmc7XHJcbiAgcmVmcmVzaFRva2VuPzogc3RyaW5nO1xyXG4gIGV4cGlyZXNBdDogbnVtYmVyO1xyXG59XHJcbiJdfQ==
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1pbmZvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1kYW5nbC1pZGVudGl0eS1jbGllbnQvc3JjL21vZGVscy91c2VyLWluZm8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgVXNlckluZm8ge1xyXG4gICAgaWQ6IHN0cmluZztcclxuICAgIHVzZXJuYW1lOiBzdHJpbmc7XHJcbiAgICBlbWFpbDogc3RyaW5nO1xyXG4gICAgaWRlbnRpY29uSWQ6IHN0cmluZztcclxuICAgIHJvbGVzOiBzdHJpbmdbXTtcclxuICAgIGNsYWltczoge1tjbGFpbTogc3RyaW5nXTogc3RyaW5nW119O1xyXG4gICAgZGVzZXJpYWxpemVkVG9rZW46IGFueTtcclxufVxyXG4iXX0=
@@ -1,12 +0,0 @@
1
- /*
2
- * Public API Surface of angular-dangl-identity-client
3
- */
4
- export * from "./dangl-identity.module";
5
- export * from "./api-client";
6
- export * from "./interceptors/jwt-interceptor.service";
7
- export * from "./interceptors/dangl-identity-request-validator";
8
- export * from "./models/jwt-storage";
9
- export * from "./services/authentication.service";
10
- export * from "./services/jwt-token.service";
11
- export * from "./messengers/authentication.messenger";
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItZGFuZ2wtaWRlbnRpdHktY2xpZW50L3NyYy9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyx1Q0FBdUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBhbmd1bGFyLWRhbmdsLWlkZW50aXR5LWNsaWVudFxyXG4gKi9cclxuXHJcbmV4cG9ydCAqIGZyb20gXCIuL2RhbmdsLWlkZW50aXR5Lm1vZHVsZVwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9hcGktY2xpZW50XCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2ludGVyY2VwdG9ycy9qd3QtaW50ZXJjZXB0b3Iuc2VydmljZVwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9pbnRlcmNlcHRvcnMvZGFuZ2wtaWRlbnRpdHktcmVxdWVzdC12YWxpZGF0b3JcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vbW9kZWxzL2p3dC1zdG9yYWdlXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL3NlcnZpY2VzL2F1dGhlbnRpY2F0aW9uLnNlcnZpY2VcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vc2VydmljZXMvand0LXRva2VuLnNlcnZpY2VcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vbWVzc2VuZ2Vycy9hdXRoZW50aWNhdGlvbi5tZXNzZW5nZXJcIjtcclxuIl19
@@ -1,39 +0,0 @@
1
- import { of } from 'rxjs';
2
- import { catchError, map } from 'rxjs/operators';
3
- import { Injectable } from '@angular/core';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "../api-client";
6
- import * as i2 from "./jwt-token.service";
7
- export class AuthenticationService {
8
- constructor(danglIdentityClient, jwtTokenService) {
9
- this.danglIdentityClient = danglIdentityClient;
10
- this.jwtTokenService = jwtTokenService;
11
- }
12
- loginWithToken(identifier, password) {
13
- return this.danglIdentityClient
14
- .loginAndReturnToken({
15
- identifier: identifier,
16
- password: password,
17
- })
18
- .pipe(map((r) => this.storeJwtTokenIfValid(r)), catchError((e) => of(false)));
19
- }
20
- storeJwtTokenIfValid(token) {
21
- if (!token.accessToken || !token.refreshToken || !token.expiresIn) {
22
- return false;
23
- }
24
- this.jwtTokenService.storeToken(token);
25
- return true;
26
- }
27
- logout() {
28
- this.jwtTokenService.deleteToken();
29
- }
30
- }
31
- AuthenticationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: AuthenticationService, deps: [{ token: i1.DanglIdentityClient }, { token: i2.JwtTokenService }], target: i0.ɵɵFactoryTarget.Injectable });
32
- AuthenticationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: AuthenticationService, providedIn: 'root' });
33
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: AuthenticationService, decorators: [{
34
- type: Injectable,
35
- args: [{
36
- providedIn: 'root',
37
- }]
38
- }], ctorParameters: function () { return [{ type: i1.DanglIdentityClient }, { type: i2.JwtTokenService }]; } });
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItZGFuZ2wtaWRlbnRpdHktY2xpZW50L3NyYy9zZXJ2aWNlcy9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBTTNDLE1BQU0sT0FBTyxxQkFBcUI7SUFDaEMsWUFDVSxtQkFBd0MsRUFDeEMsZUFBZ0M7UUFEaEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7SUFDdkMsQ0FBQztJQUVKLGNBQWMsQ0FBQyxVQUFrQixFQUFFLFFBQWdCO1FBQ2pELE9BQU8sSUFBSSxDQUFDLG1CQUFtQjthQUM1QixtQkFBbUIsQ0FBQztZQUNuQixVQUFVLEVBQUUsVUFBVTtZQUN0QixRQUFRLEVBQUUsUUFBUTtTQUNuQixDQUFDO2FBQ0QsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ3hDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQzdCLENBQUM7SUFDTixDQUFDO0lBRU8sb0JBQW9CLENBQUMsS0FBdUI7UUFDbEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRTtZQUNqRSxPQUFPLEtBQUssQ0FBQztTQUNkO1FBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckMsQ0FBQzs7a0hBNUJVLHFCQUFxQjtzSEFBckIscUJBQXFCLGNBRnBCLE1BQU07MkZBRVAscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhbmdsSWRlbnRpdHlDbGllbnQsIFRva2VuUmVzcG9uc2VHZXQgfSBmcm9tICcuLi9hcGktY2xpZW50JztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBKd3RUb2tlblNlcnZpY2UgfSBmcm9tICcuL2p3dC10b2tlbi5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdXRoZW50aWNhdGlvblNlcnZpY2Uge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBkYW5nbElkZW50aXR5Q2xpZW50OiBEYW5nbElkZW50aXR5Q2xpZW50LFxyXG4gICAgcHJpdmF0ZSBqd3RUb2tlblNlcnZpY2U6IEp3dFRva2VuU2VydmljZVxyXG4gICkge31cclxuXHJcbiAgbG9naW5XaXRoVG9rZW4oaWRlbnRpZmllcjogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICByZXR1cm4gdGhpcy5kYW5nbElkZW50aXR5Q2xpZW50XHJcbiAgICAgIC5sb2dpbkFuZFJldHVyblRva2VuKHtcclxuICAgICAgICBpZGVudGlmaWVyOiBpZGVudGlmaWVyLFxyXG4gICAgICAgIHBhc3N3b3JkOiBwYXNzd29yZCxcclxuICAgICAgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyKSA9PiB0aGlzLnN0b3JlSnd0VG9rZW5JZlZhbGlkKHIpKSxcclxuICAgICAgICBjYXRjaEVycm9yKChlKSA9PiBvZihmYWxzZSkpXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0b3JlSnd0VG9rZW5JZlZhbGlkKHRva2VuOiBUb2tlblJlc3BvbnNlR2V0KTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRva2VuLmFjY2Vzc1Rva2VuIHx8ICF0b2tlbi5yZWZyZXNoVG9rZW4gfHwgIXRva2VuLmV4cGlyZXNJbikge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICB0aGlzLmp3dFRva2VuU2VydmljZS5zdG9yZVRva2VuKHRva2VuKTtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgbG9nb3V0KCkge1xyXG4gICAgdGhpcy5qd3RUb2tlblNlcnZpY2UuZGVsZXRlVG9rZW4oKTtcclxuICB9XHJcbn1cclxuIl19
@@ -1,101 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { Subject, of, ReplaySubject } from 'rxjs';
3
- import { map, tap, first } from 'rxjs/operators';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "../api-client";
6
- export class JwtTokenService {
7
- constructor(danglIdentityClient) {
8
- this.danglIdentityClient = danglIdentityClient;
9
- this.storage_identifier = 'dangl_identity_integration_jwt_token';
10
- this.isRefreshing = false;
11
- this.refreshTokenSource = new Subject();
12
- this.tokenStoredSource = new ReplaySubject(1);
13
- this.tokenStored = this.tokenStoredSource.asObservable();
14
- this.tokenRefreshStartedSource = new Subject();
15
- this.tokenRefreshStarted = this.tokenRefreshStartedSource.asObservable();
16
- this.tokenRefreshFinishedSource = new Subject();
17
- this.tokenRefreshFinished = this.tokenRefreshFinishedSource.asObservable();
18
- }
19
- ngOnDestroy() {
20
- this.tokenRefreshStartedSource.complete();
21
- this.tokenRefreshFinishedSource.complete();
22
- this.tokenStoredSource.complete();
23
- this.refreshTokenSource.complete();
24
- }
25
- deleteToken() {
26
- localStorage.removeItem(this.storage_identifier);
27
- this.tokenStoredSource.next(null);
28
- }
29
- storeCustomToken(tokenToStore) {
30
- localStorage.setItem(this.storage_identifier, JSON.stringify(tokenToStore));
31
- this.tokenStoredSource.next(tokenToStore);
32
- }
33
- storeToken(token) {
34
- const tokenToStore = this.transformTokenResponse(token);
35
- localStorage.setItem(this.storage_identifier, JSON.stringify(tokenToStore));
36
- this.tokenStoredSource.next(tokenToStore);
37
- }
38
- getTokenFromStorage() {
39
- const storedString = localStorage.getItem(this.storage_identifier);
40
- if (storedString) {
41
- const storedToken = JSON.parse(storedString);
42
- return storedToken;
43
- }
44
- return null;
45
- }
46
- refreshToken() {
47
- if (this.isRefreshing) {
48
- return this.refreshTokenSource.pipe(first());
49
- }
50
- this.isRefreshing = true;
51
- this.tokenRefreshStartedSource.next();
52
- const refreshToken = this.getTokenFromStorage().refreshToken;
53
- if (!refreshToken) {
54
- this.isRefreshing = false;
55
- return of(null);
56
- }
57
- this.danglIdentityClient
58
- .refreshToken({
59
- refreshToken: refreshToken,
60
- })
61
- .pipe(tap((r) => this.storeToken(r)), map((r) => this.transformTokenResponse(r)))
62
- .subscribe((refreshTokenResponse) => {
63
- this.isRefreshing = false;
64
- this.tokenRefreshFinishedSource.next(true);
65
- this.refreshTokenSource.next(refreshTokenResponse);
66
- }, (error) => {
67
- this.isRefreshing = false;
68
- this.tokenRefreshFinishedSource.next(false);
69
- this.refreshTokenSource.next(null);
70
- console.error('Internal error while refreshing Dangl.Identity token', error);
71
- });
72
- return this.refreshTokenSource.pipe(first());
73
- }
74
- getToken() {
75
- const token = this.getTokenFromStorage();
76
- if (!token) {
77
- return of(null);
78
- }
79
- const isValidToken = token.expiresAt > new Date().getTime() / 1000;
80
- if (isValidToken) {
81
- return of(token);
82
- }
83
- return this.refreshToken();
84
- }
85
- transformTokenResponse(token) {
86
- return {
87
- accessToken: token.accessToken,
88
- refreshToken: token.refreshToken,
89
- expiresAt: new Date().getTime() / 1000 + token.expiresIn,
90
- };
91
- }
92
- }
93
- JwtTokenService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: JwtTokenService, deps: [{ token: i1.DanglIdentityClient }], target: i0.ɵɵFactoryTarget.Injectable });
94
- JwtTokenService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: JwtTokenService, providedIn: 'root' });
95
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: JwtTokenService, decorators: [{
96
- type: Injectable,
97
- args: [{
98
- providedIn: 'root',
99
- }]
100
- }], ctorParameters: function () { return [{ type: i1.DanglIdentityClient }]; } });
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiand0LXRva2VuLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWRhbmdsLWlkZW50aXR5LWNsaWVudC9zcmMvc2VydmljZXMvand0LXRva2VuLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUd0RCxPQUFPLEVBQUUsT0FBTyxFQUFjLEVBQUUsRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUQsT0FBTyxFQUFFLEdBQUcsRUFBYyxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQU03RCxNQUFNLE9BQU8sZUFBZTtJQVcxQixZQUFvQixtQkFBd0M7UUFBeEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQVYzQyx1QkFBa0IsR0FBRyxzQ0FBc0MsQ0FBQztRQUNyRSxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQix1QkFBa0IsR0FBRyxJQUFJLE9BQU8sRUFBYyxDQUFDO1FBQy9DLHNCQUFpQixHQUFHLElBQUksYUFBYSxDQUFhLENBQUMsQ0FBQyxDQUFDO1FBQzdELGdCQUFXLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzVDLDhCQUF5QixHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDbEQsd0JBQW1CLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzVELCtCQUEwQixHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7UUFDNUQseUJBQW9CLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBRVAsQ0FBQztJQUVoRSxXQUFXO1FBQ1QsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxRQUFRLEVB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QyxPQUFPLENBQUMsS0FBSyxDQUNYLHNEQUFzRCxFQUN0RCxLQUFLLENBQ04sQ0FBQztRQUNKLENBQUMsQ0FDRixDQUFDO1FBRUosT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELFFBQVE7UUFDTixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUN6QyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1YsT0FBTyxFQUFFLENBQWEsSUFBSSxDQUFDLENBQUM7U0FDN0I7UUFDRCxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsU0FBUyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQ25FLElBQUksWUFBWSxFQUFFO1lBQ2hCLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2xCO1FBQ0QsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVPLHNCQUFzQixDQUFDLEtBQXVCO1FBQ3BELE9BQU87WUFDTCxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7WUFDOUIsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZO1lBQ2hDLFNBQVMsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksR0FBRyxLQUFLLENBQUMsU0FBUztTQUN6RCxDQUFDO0lBQ0osQ0FBQzs7NEdBeEdVLGVBQWU7Z0hBQWYsZUFBZSxjQUZkLE1BQU07MkZBRVAsZUFBZTtrQkFIM0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGFuZ2xJZGVudGl0eUNsaWVudCwgVG9rZW5SZXNwb25zZUdldCB9IGZyb20gJy4uL2FwaS1jbGllbnQnO1xyXG5pbXBvcnQgeyBKd3RTdG9yYWdlIH0gZnJvbSAnLi4vbW9kZWxzL2p3dC1zdG9yYWdlJztcclxuaW1wb3J0IHsgU3ViamVjdCwgT2JzZXJ2YWJsZSwgb2YsIFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwLCBjYXRjaEVycm9yLCB0YXAsIGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvbk1lc3NlbmdlciB9IGZyb20gJy4uL21lc3NlbmdlcnMvYXV0aGVudGljYXRpb24ubWVzc2VuZ2VyJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBKd3RUb2tlblNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgc3RvcmFnZV9pZGVudGlmaWVyID0gJ2RhbmdsX2lkZW50aXR5X2ludGVncmF0aW9uX2p3dF90b2tlbic7XHJcbiAgcHJpdmF0ZSBpc1JlZnJlc2hpbmcgPSBmYWxzZTtcclxuICBwcml2YXRlIHJlZnJlc2hUb2tlblNvdXJjZSA9IG5ldyBTdWJqZWN0PEp3dFN0b3JhZ2U+KCk7XHJcbiAgcHJpdmF0ZSB0b2tlblN0b3JlZFNvdXJjZSA9IG5ldyBSZXBsYXlTdWJqZWN0PEp3dFN0b3JhZ2U+KDEpO1xyXG4gIHRva2VuU3RvcmVkID0gdGhpcy50b2tlblN0b3JlZFNvdXJjZS5hc09ic2VydmFibGUoKTtcclxuICBwcml2YXRlIHRva2VuUmVmcmVzaFN0YXJ0ZWRTb3VyY2UgPSBuZXcgU3ViamVjdCgpO1xyXG4gIHRva2VuUmVmcmVzaFN0YXJ0ZWQgPSB0aGlzLnRva2VuUmVmcmVzaFN0YXJ0ZWRTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XHJcbiAgcHJpdmF0ZSB0b2tlblJlZnJlc2hGaW5pc2hlZFNvdXJjZSA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XHJcbiAgdG9rZW5SZWZyZXNoRmluaXNoZWQgPSB0aGlzLnRva2VuUmVmcmVzaEZpbmlzaGVkU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhbmdsSWRlbnRpdHlDbGllbnQ6IERhbmdsSWRlbnRpdHlDbGllbnQpIHt9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy50b2tlblJlZnJlc2hTdGFydGVkU291cmNlLmNvbXBsZXRlKCk7XHJcbiAgICB0aGlzLnRva2VuUmVmcmVzaEZpbmlzaGVkU291cmNlLmNvbXBsZXRlKCk7XHJcbiAgICB0aGlzLnRva2VuU3RvcmVkU291cmNlLmNvbXBsZXRlKCk7XHJcbiAgICB0aGlzLnJlZnJlc2hUb2tlblNvdXJjZS5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlVG9rZW4oKSB7XHJcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLnN0b3JhZ2VfaWRlbnRpZmllcik7XHJcbiAgICB0aGlzLnRva2VuU3RvcmVkU291cmNlLm5leHQobnVsbCk7XHJcbiAgfVxyXG5cclxuICBzdG9yZUN1c3RvbVRva2VuKHRva2VuVG9TdG9yZTogSnd0U3RvcmFnZSkge1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdG9yYWdlX2lkZW50aWZpZXIsIEpTT04uc3RyaW5naWZ5KHRva2VuVG9TdG9yZSkpO1xyXG4gICAgdGhpcy50b2tlblN0b3JlZFNvdXJjZS5uZXh0KHRva2VuVG9TdG9yZSk7XHJcbiAgfVxyXG5cclxuICBzdG9yZVRva2VuKHRva2VuOiBUb2tlblJlc3BvbnNlR2V0KSB7XHJcbiAgICBjb25zdCB0b2tlblRvU3RvcmUgPSB0aGlzLnRyYW5zZm9ybVRva2VuUmVzcG9uc2UodG9rZW4pO1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdG9yYWdlX2lkZW50aWZpZXIsIEpTT04uc3RyaW5naWZ5KHRva2VuVG9TdG9yZSkpO1xyXG4gICAgdGhpcy50b2tlblN0b3JlZFNvdXJjZS5uZXh0KHRva2VuVG9TdG9yZSk7XHJcbiAgfVxyXG5cclxuICBnZXRUb2tlbkZyb21TdG9yYWdlKCk6IEp3dFN0b3JhZ2Uge1xyXG4gICAgY29uc3Qgc3RvcmVkU3RyaW5nID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5zdG9yYWdlX2lkZW50aWZpZXIpO1xyXG4gICAgaWYgKHN0b3JlZFN0cmluZykge1xyXG4gICAgICBjb25zdCBzdG9yZWRUb2tlbiA9IDxKd3RTdG9yYWdlPkpTT04ucGFyc2Uoc3RvcmVkU3RyaW5nKTtcclxuICAgICAgcmV0dXJuIHN0b3JlZFRva2VuO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICByZWZyZXNoVG9rZW4oKTogT2JzZXJ2YWJsZTxKd3RTdG9yYWdlPiB7XHJcbiAgICBpZiAodGhpcy5pc1JlZnJlc2hpbmcpIHtcclxuICAgICAgcmV0dXJuIHRoaXMucmVmcmVzaFRva2VuU291cmNlLnBpcGUoZmlyc3QoKSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmlzUmVmcmVzaGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnRva2VuUmVmcmVzaFN0YXJ0ZWRTb3VyY2UubmV4dCgpO1xyXG4gICAgY29uc3QgcmVmcmVzaFRva2VuID0gdGhpcy5nZXRUb2tlbkZyb21TdG9yYWdlKCkucmVmcmVzaFRva2VuO1xyXG5cclxuICAgIGlmICghcmVmcmVzaFRva2VuKSB7XHJcbiAgICAgIHRoaXMuaXNSZWZyZXNoaW5nID0gZmFsc2U7XHJcbiAgICAgIHJldHVybiBvZjxKd3RTdG9yYWdlPihudWxsKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRhbmdsSWRlbnRpdHlDbGllbnRcclxuICAgICAgLnJlZnJlc2hUb2tlbih7XHJcbiAgICAgICAgcmVmcmVzaFRva2VuOiByZWZyZXNoVG9rZW4sXHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRhcCgocikgPT4gdGhpcy5zdG9yZVRva2VuKHIpKSxcclxuICAgICAgICBtYXAoKHIpID0+IHRoaXMudHJhbnNmb3JtVG9rZW5SZXNwb25zZShyKSlcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgIChyZWZyZXNoVG9rZW5SZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5pc1JlZnJlc2hpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMudG9rZW5SZWZyZXNoRmluaXNoZWRTb3VyY2UubmV4dCh0cnVlKTtcclxuICAgICAgICAgIHRoaXMucmVmcmVzaFRva2VuU291cmNlLm5leHQocmVmcmVzaFRva2VuUmVzcG9uc2UpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmlzUmVmcmVzaGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy50b2tlblJlZnJlc2hGaW5pc2hlZFNvdXJjZS5uZXh0KGZhbHNlKTtcclxuICAgICAgICAgIHRoaXMucmVmcmVzaFRva2VuU291cmNlLm5leHQobnVsbCk7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFxyXG4gICAgICAgICAgICAnSW50ZXJuYWwgZXJyb3Igd2hpbGUgcmVmcmVzaGluZyBEYW5nbC5JZGVudGl0eSB0b2tlbicsXHJcbiAgICAgICAgICAgIGVycm9yXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5yZWZyZXNoVG9rZW5Tb3VyY2UucGlwZShmaXJzdCgpKTtcclxuICB9XHJcblxyXG4gIGdldFRva2VuKCk6IE9ic2VydmFibGU8Snd0U3RvcmFnZT4ge1xyXG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLmdldFRva2VuRnJvbVN0b3JhZ2UoKTtcclxuICAgIGlmICghdG9rZW4pIHtcclxuICAgICAgcmV0dXJuIG9mPEp3dFN0b3JhZ2U+KG51bGwpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaXNWYWxpZFRva2VuID0gdG9rZW4uZXhwaXJlc0F0ID4gbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwO1xyXG4gICAgaWYgKGlzVmFsaWRUb2tlbikge1xyXG4gICAgICByZXR1cm4gb2YodG9rZW4pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMucmVmcmVzaFRva2VuKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRyYW5zZm9ybVRva2VuUmVzcG9uc2UodG9rZW46IFRva2VuUmVzcG9uc2VHZXQpOiBKd3RTdG9yYWdlIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGFjY2Vzc1Rva2VuOiB0b2tlbi5hY2Nlc3NUb2tlbixcclxuICAgICAgcmVmcmVzaFRva2VuOiB0b2tlbi5yZWZyZXNoVG9rZW4sXHJcbiAgICAgIGV4cGlyZXNBdDogbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwICsgdG9rZW4uZXhwaXJlc0luLFxyXG4gICAgfTtcclxuICB9XHJcbn1cclxuIl19