@dangl/angular-dangl-identity-client 6.2.0 → 6.2.1-beta0010

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 (31) 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/{esm2020 → esm2022}/api-client.mjs +551 -551
  5. package/{esm2020 → esm2022}/dangl-angular-dangl-identity-client.mjs +4 -4
  6. package/esm2022/dangl-identity.module.mjs +30 -0
  7. package/{esm2020 → esm2022}/interceptors/dangl-identity-request-validator.mjs +1 -1
  8. package/{esm2020 → esm2022}/interceptors/jwt-interceptor.service.mjs +47 -47
  9. package/esm2022/messengers/authentication.messenger.mjs +170 -0
  10. package/{esm2020 → esm2022}/models/jwt-storage.mjs +1 -1
  11. package/{esm2020 → esm2022}/models/user-info.mjs +1 -1
  12. package/{esm2020 → esm2022}/public_api.mjs +11 -11
  13. package/{esm2020 → esm2022}/services/authentication.service.mjs +39 -39
  14. package/{esm2020 → esm2022}/services/jwt-token.service.mjs +101 -101
  15. package/{fesm2020 → fesm2022}/dangl-angular-dangl-identity-client.mjs +905 -873
  16. package/fesm2022/dangl-angular-dangl-identity-client.mjs.map +1 -0
  17. package/index.d.ts +5 -5
  18. package/interceptors/dangl-identity-request-validator.d.ts +4 -4
  19. package/interceptors/jwt-interceptor.service.d.ts +16 -16
  20. package/messengers/authentication.messenger.d.ts +28 -26
  21. package/models/jwt-storage.d.ts +5 -5
  22. package/models/user-info.d.ts +11 -11
  23. package/package.json +7 -13
  24. package/public_api.d.ts +8 -8
  25. package/services/authentication.service.d.ts +14 -14
  26. package/services/jwt-token.service.d.ts +28 -28
  27. package/esm2020/dangl-identity.module.mjs +0 -29
  28. package/esm2020/messengers/authentication.messenger.mjs +0 -146
  29. package/fesm2015/dangl-angular-dangl-identity-client.mjs +0 -896
  30. package/fesm2015/dangl-angular-dangl-identity-client.mjs.map +0 -1
  31. package/fesm2020/dangl-angular-dangl-identity-client.mjs.map +0 -1
@@ -1,5 +1,5 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public_api';
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public_api';
5
5
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFuZ2wtYW5ndWxhci1kYW5nbC1pZGVudGl0eS1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWRhbmdsLWlkZW50aXR5LWNsaWVudC9zcmMvZGFuZ2wtYW5ndWxhci1kYW5nbC1pZGVudGl0eS1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWNfYXBpJztcbiJdfQ==
@@ -0,0 +1,30 @@
1
+ import { HTTP_INTERCEPTORS, provideHttpClient, withInterceptorsFromDi } 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
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: DanglIdentityModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.9", ngImport: i0, type: DanglIdentityModule }); }
8
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: DanglIdentityModule, providers: [
9
+ provideHttpClient(withInterceptorsFromDi()),
10
+ {
11
+ provide: HTTP_INTERCEPTORS,
12
+ useClass: JwtInterceptorService,
13
+ multi: true,
14
+ },
15
+ ] }); }
16
+ }
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: DanglIdentityModule, decorators: [{
18
+ type: NgModule,
19
+ args: [{
20
+ providers: [
21
+ provideHttpClient(withInterceptorsFromDi()),
22
+ {
23
+ provide: HTTP_INTERCEPTORS,
24
+ useClass: JwtInterceptorService,
25
+ multi: true,
26
+ },
27
+ ],
28
+ }]
29
+ }] });
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFuZ2wtaWRlbnRpdHkubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1kYW5nbC1pZGVudGl0eS1jbGllbnQvc3JjL2RhbmdsLWlkZW50aXR5Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVwRyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVl6QyxNQUFNLE9BQU8sbUJBQW1COzhHQUFuQixtQkFBbUI7K0dBQW5CLG1CQUFtQjsrR0FBbkIsbUJBQW1CLGFBVG5CO1lBQ1QsaUJBQWlCLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUMzQztnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixRQUFRLEVBQUUscUJBQXFCO2dCQUMvQixLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0Y7OzJGQUVVLG1CQUFtQjtrQkFWL0IsUUFBUTttQkFBQztvQkFDUixTQUFTLEVBQUU7d0JBQ1QsaUJBQWlCLENBQUMsc0JBQXNCLEVBQUUsQ0FBQzt3QkFDM0M7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsUUFBUSxFQUFFLHFCQUFxQjs0QkFDL0IsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIVFRQX0lOVEVSQ0VQVE9SUywgcHJvdmlkZUh0dHBDbGllbnQsIHdpdGhJbnRlcmNlcHRvcnNGcm9tRGkgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcblxyXG5pbXBvcnQgeyBKd3RJbnRlcmNlcHRvclNlcnZpY2UgfSBmcm9tICcuL2ludGVyY2VwdG9ycy9qd3QtaW50ZXJjZXB0b3Iuc2VydmljZSc7XHJcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgcHJvdmlkZUh0dHBDbGllbnQod2l0aEludGVyY2VwdG9yc0Zyb21EaSgpKSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogSFRUUF9JTlRFUkNFUFRPUlMsXHJcbiAgICAgIHVzZUNsYXNzOiBKd3RJbnRlcmNlcHRvclNlcnZpY2UsXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGFuZ2xJZGVudGl0eU1vZHVsZSB7fVxyXG4iXX0=
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFuZ2wtaWRlbnRpdHktcmVxdWVzdC12YWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWRhbmdsLWlkZW50aXR5LWNsaWVudC9zcmMvaW50ZXJjZXB0b3JzL2RhbmdsLWlkZW50aXR5LXJlcXVlc3QtdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwUmVxdWVzdCB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJRGFuZ2xJZGVudGl0eVJlcXVlc3RWYWxpZGF0b3Ige1xyXG4gIHZhbGlkYXRlUmVxdWVzdChodHRwUmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55Pik6IGJvb2xlYW47XHJcbn1cclxuIl19
@@ -1,47 +1,47 @@
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
- JwtInterceptorServicefac = 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
+ 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
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: JwtInterceptorService, deps: [{ token: i1.JwtTokenService }, { token: DANGL_IDENTITY_REQUEST_VALIDATOR, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
37
+ static { thisprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: JwtInterceptorService }); }
38
+ }
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: JwtInterceptorService, decorators: [{
40
+ type: Injectable
41
+ }], ctorParameters: () => [{ 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiand0LWludGVyY2VwdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWRhbmdsLWlkZW50aXR5LWNsaWVudC9zcmMvaW50ZXJjZXB0b3JzL2p3dC1pbnRlcmNlcHRvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHN0UsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFHMUMsTUFBTSxDQUFDLE1BQU0sZ0NBQWdDLEdBQzNDLElBQUksY0FBYyxDQUNoQiwrREFBK0QsQ0FDaEUsQ0FBQztBQUVKLE1BQU0sT0FBTyxxQkFBcUI7SUFDaEMsWUFDUyxlQUFnQyxFQUcvQixnQkFBZ0Q7UUFIakQsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBRy9CLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBZ0M7SUFDdkQsQ0FBQztJQUNKLFNBQVMsQ0FDUCxPQUF5QixFQUN6QixJQUFpQjtRQUVqQixJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQ3ZDLG9FQUFvRTtZQUNwRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7U0FDckM7UUFFRCxJQUNFLElBQUksQ0FBQyxnQkFBZ0I7WUFDckIsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxFQUMvQztZQUNBLDBFQUEwRTtZQUMxRSwrQ0FBK0M7WUFDL0MsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzdCO1FBRUQsT0FBTyxJQUFJLENBQUMsZUFBZTthQUN4QixRQUFRLEVBQUU7YUFDVixJQUFJLENBQ0gsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDYixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUN2RSxDQUNGLENBQUM7SUFDTixDQUFDO0lBRU8sdUJBQXVCLENBQzdCLE9BQXlCLEVBQ3pCLEtBQWM7UUFFZCxJQUFJLEtBQUssRUFBRTtZQUNULE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQztnQkFDbkIsVUFBVSxFQUFFO29CQUNWLGFBQWEsRUFBRSxVQUFVLEtBQUssRUFBRTtpQkFDakM7YUFDRixDQUFDLENBQUM7U0FDSjtRQUNELE9BQU8sT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3pCLENBQUM7OEdBOUNVLHFCQUFxQixpREFJdEIsZ0NBQWdDO2tIQUovQixxQkFBcUI7OzJGQUFyQixxQkFBcUI7a0JBRGpDLFVBQVU7OzBCQUlOLFFBQVE7OzBCQUNSLE1BQU07MkJBQUMsZ0NBQWdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBIdHRwRXZlbnQsXHJcbiAgSHR0cEhhbmRsZXIsXHJcbiAgSHR0cEludGVyY2VwdG9yLFxyXG4gIEh0dHBSZXF1ZXN0LFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuXHJcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEp3dFRva2VuU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2p3dC10b2tlbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtZXJnZU1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgSURhbmdsSWRlbnRpdHlSZXF1ZXN0VmFsaWRhdG9yIH0gZnJvbSAnLi9kYW5nbC1pZGVudGl0eS1yZXF1ZXN0LXZhbGlkYXRvcic7XHJcblxyXG5leHBvcnQgY29uc3QgREFOR0xfSURFTlRJVFlfUkVRVUVTVF9WQUxJREFUT1IgPVxyXG4gIG5ldyBJbmplY3Rpb25Ub2tlbjxJRGFuZ2xJZGVudGl0eVJlcXVlc3RWYWxpZGF0b3I+KFxyXG4gICAgJ1ZhbGlkYXRvciB0byBkZWNpZGUgd2hldGhlciB0byBpbmNsdWRlIEpXVCB0b2tlbnMgaW4gcmVxdWVzdHMnXHJcbiAgKTtcclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgSnd0SW50ZXJjZXB0b3JTZXJ2aWNlIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBqd3RUb2tlblNlcnZpY2U6IEp3dFRva2VuU2VydmljZSxcclxuICAgIEBPcHRpb25hbCgpXHJcbiAgICBASW5qZWN0KERBTkdMX0lERU5USVRZX1JFUVVFU1RfVkFMSURBVE9SKVxyXG4gICAgcHJpdmF0ZSByZXF1ZXN0VmFsaWRhdG9yOiBJRGFuZ2xJZGVudGl0eVJlcXVlc3RWYWxpZGF0b3JcclxuICApIHt9XHJcbiAgaW50ZXJjZXB0KFxyXG4gICAgcmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PixcclxuICAgIG5leHQ6IEh0dHBIYW5kbGVyXHJcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xyXG4gICAgaWYgKHJlcXVlc3QudXJsLnN0YXJ0c1dpdGgoJy9pZGVudGl0eScpKSB7XHJcbiAgICAgIC8vIFJlcXVlc3RzIHRvIHRoZSBhdXRoZW50aWNhdGlvbiBlbmRwb2ludCBzaG91bGQgbm90IGJlIGludGVyY2VwdGVkXHJcbiAgICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXF1ZXN0LmNsb25lKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5yZXF1ZXN0VmFsaWRhdG9yICYmXHJcbiAgICAgICF0aGlzLnJlcXVlc3RWYWxpZGF0b3IudmFsaWRhdGVSZXF1ZXN0KHJlcXVlc3QpXHJcbiAgICApIHtcclxuICAgICAgLy8gSW4gY2FzZSBhIHJlcXVlc3QgdmFsaWRhdG9yIGlzIHByb3ZpZGVkIGJ1dCBkb2Vzbid0IHJldHVybiB0cnVlIGZvciB0aGVcclxuICAgICAgLy8gY3VycmVudCByZXF1ZXN0LCB3ZSdyZSBub3QgYXBwZW5kaW5nIGEgdG9rZW5cclxuICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcXVlc3QpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLmp3dFRva2VuU2VydmljZVxyXG4gICAgICAuZ2V0VG9rZW4oKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtZXJnZU1hcCgoZikgPT5cclxuICAgICAgICAgIG5leHQuaGFuZGxlKHRoaXMuZ2V0SHR0cFJlcXVlc3RXaXRoVG9rZW4ocmVxdWVzdCwgZiAmJiBmLmFjY2Vzc1Rva2VuKSlcclxuICAgICAgICApXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEh0dHBSZXF1ZXN0V2l0aFRva2VuKFxyXG4gICAgcmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PixcclxuICAgIHRva2VuPzogc3RyaW5nXHJcbiAgKTogSHR0cFJlcXVlc3Q8YW55PiB7XHJcbiAgICBpZiAodG9rZW4pIHtcclxuICAgICAgcmV0dXJuIHJlcXVlc3QuY2xvbmUoe1xyXG4gICAgICAgIHNldEhlYWRlcnM6IHtcclxuICAgICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHt0b2tlbn1gLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlcXVlc3QuY2xvbmUoKTtcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,170 @@
1
+ import { inject, Injectable } from '@angular/core';
2
+ import { ReplaySubject, Subject, timer } from 'rxjs';
3
+ import { DanglIdentityClient } from '../api-client';
4
+ import { JwtHelperService } from '@auth0/angular-jwt';
5
+ import { JwtTokenService } from '../services/jwt-token.service';
6
+ import { takeUntil } from 'rxjs/operators';
7
+ import * as i0 from "@angular/core";
8
+ export class AuthenticationMessenger {
9
+ constructor() {
10
+ this.jwtHelperService = new JwtHelperService();
11
+ this.$destroyed = new Subject();
12
+ this.isAuthenticated = new ReplaySubject(1);
13
+ this.username = new ReplaySubject(1);
14
+ this.email = new ReplaySubject(1);
15
+ this.identiconId = new ReplaySubject(1);
16
+ this.userInfo = new ReplaySubject(1);
17
+ this.tokenRefreshStarted = new Subject();
18
+ this.tokenRefreshFinished = new Subject();
19
+ this.jwtTokenService = inject(JwtTokenService);
20
+ this.danglIdentityClient = inject(DanglIdentityClient);
21
+ }
22
+ ngOnInit() {
23
+ this.jwtTokenService.tokenRefreshStarted
24
+ .pipe(takeUntil(this.$destroyed))
25
+ .subscribe(() => this.tokenRefreshStarted.next());
26
+ this.jwtTokenService.tokenRefreshFinished
27
+ .pipe(takeUntil(this.$destroyed))
28
+ .subscribe((successfulRefresh) => this.tokenRefreshFinished.next(successfulRefresh));
29
+ this.jwtTokenService.tokenStored
30
+ .pipe(takeUntil(this.$destroyed))
31
+ .subscribe((jwtToken) => this.refreshAuthenticationStatus(jwtToken));
32
+ this.jwtTokenService
33
+ .getToken()
34
+ .subscribe((token) => this.refreshAuthenticationStatus(token));
35
+ }
36
+ ngOnDestroy() {
37
+ this.isAuthenticated.complete();
38
+ this.username.complete();
39
+ this.email.complete();
40
+ this.identiconId.complete();
41
+ this.userInfo.complete();
42
+ this.tokenRefreshStarted.complete();
43
+ this.tokenRefreshFinished.complete();
44
+ this.$destroyed.next();
45
+ this.$destroyed.complete();
46
+ this.clearLogoutTimer();
47
+ }
48
+ refreshUserInfoFromServer() {
49
+ this.danglIdentityClient.getUserInfo().subscribe({
50
+ next: (serverUserInfo) => {
51
+ if (serverUserInfo.userIsAuthenticated) {
52
+ const userInfo = {
53
+ deserializedToken: null,
54
+ email: serverUserInfo.currentUserEmail,
55
+ id: serverUserInfo.currentUserId,
56
+ identiconId: serverUserInfo.currentUserIdenticonId,
57
+ roles: [],
58
+ claims: {},
59
+ username: serverUserInfo.currentUserName,
60
+ };
61
+ serverUserInfo.userClaims.forEach((claim) => {
62
+ if (claim.type === 'role') {
63
+ userInfo.roles.push(claim.value);
64
+ }
65
+ else if (userInfo.claims[claim.type] === undefined) {
66
+ userInfo.claims[claim.type] = [claim.value];
67
+ }
68
+ else {
69
+ userInfo.claims[claim.type].push(claim.value);
70
+ }
71
+ });
72
+ this.isAuthenticated.next(true);
73
+ this.username.next(serverUserInfo.currentUserName);
74
+ this.email.next(serverUserInfo.currentUserEmail);
75
+ this.identiconId.next(serverUserInfo.currentUserIdenticonId);
76
+ this.userInfo.next(userInfo);
77
+ }
78
+ else {
79
+ this.isAuthenticated.next(false);
80
+ this.username.next(null);
81
+ this.email.next(null);
82
+ this.identiconId.next(null);
83
+ this.userInfo.next(null);
84
+ }
85
+ },
86
+ });
87
+ }
88
+ refreshAuthenticationStatus(jwtToken) {
89
+ if (jwtToken) {
90
+ const isValidToken = jwtToken.expiresAt > new Date().getTime() / 1000;
91
+ if (this.lastBroadcastAccessToken === jwtToken.accessToken) {
92
+ return;
93
+ }
94
+ this.lastBroadcastAccessToken = jwtToken.accessToken;
95
+ if (isValidToken) {
96
+ this.isAuthenticated.next(true);
97
+ this.startTokenExpirationWatcher(jwtToken);
98
+ const decodedToken = this.jwtHelperService.decodeToken(jwtToken.accessToken);
99
+ this.username.next(decodedToken['name']);
100
+ this.email.next(decodedToken['email']);
101
+ this.identiconId.next(decodedToken['identicon_id']);
102
+ const tokenClaims = {};
103
+ for (const tokenProp in decodedToken) {
104
+ if (decodedToken.hasOwnProperty(tokenProp)) {
105
+ const property = decodedToken[tokenProp];
106
+ if (typeof property === 'string') {
107
+ if (tokenClaims[tokenProp] === undefined) {
108
+ tokenClaims[tokenProp] = [];
109
+ }
110
+ tokenClaims[tokenProp].push(property);
111
+ }
112
+ }
113
+ }
114
+ this.userInfo.next({
115
+ id: decodedToken['sub'],
116
+ claims: tokenClaims,
117
+ deserializedToken: decodedToken,
118
+ email: decodedToken['email'],
119
+ identiconId: decodedToken['identicon_id'],
120
+ username: decodedToken['name'],
121
+ roles: decodedToken['role'],
122
+ });
123
+ }
124
+ else {
125
+ this.isAuthenticated.next(false);
126
+ this.jwtTokenService.refreshToken().subscribe(() => { });
127
+ }
128
+ }
129
+ else {
130
+ if (this.lastBroadcastAccessToken === null) {
131
+ return;
132
+ }
133
+ this.lastBroadcastAccessToken = null;
134
+ this.isAuthenticated.next(false);
135
+ this.username.next(null);
136
+ this.email.next(null);
137
+ this.identiconId.next(null);
138
+ this.userInfo.next(null);
139
+ }
140
+ }
141
+ startTokenExpirationWatcher(jwtToken) {
142
+ const expirationTime = jwtToken.expiresAt * 1000;
143
+ const currentTime = Date.now();
144
+ const timeUntilExpiration = expirationTime - currentTime;
145
+ this.clearLogoutTimer();
146
+ if (timeUntilExpiration > 0) {
147
+ this.expirationSubscription = timer(timeUntilExpiration).subscribe(() => {
148
+ this.isAuthenticated.next(false);
149
+ });
150
+ }
151
+ else {
152
+ this.isAuthenticated.next(false);
153
+ }
154
+ }
155
+ clearLogoutTimer() {
156
+ if (this.expirationSubscription) {
157
+ this.expirationSubscription.unsubscribe();
158
+ this.expirationSubscription = undefined;
159
+ }
160
+ }
161
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: AuthenticationMessenger, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
162
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: AuthenticationMessenger, providedIn: 'root' }); }
163
+ }
164
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: AuthenticationMessenger, decorators: [{
165
+ type: Injectable,
166
+ args: [{
167
+ providedIn: 'root',
168
+ }]
169
+ }], ctorParameters: () => [] });
170
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24ubWVzc2VuZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1kYW5nbC1pZGVudGl0eS1jbGllbnQvc3JjL21lc3NlbmdlcnMvYXV0aGVudGljYXRpb24ubWVzc2VuZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBZ0IsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRW5FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUszQyxNQUFNLE9BQU8sdUJBQXVCO0lBZWxDO1FBZFEscUJBQWdCLEdBQUcsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1FBRTFDLGVBQVUsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRzFCLG9CQUFlLEdBQUcsSUFBSSxhQUFhLENBQVUsQ0FBQyxDQUFDLENBQUM7UUFDaEQsYUFBUSxHQUFHLElBQUksYUFBYSxDQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ3hDLFVBQUssR0FBRyxJQUFJLGFBQWEsQ0FBUyxDQUFDLENBQUMsQ0FBQztRQUNyQyxnQkFBVyxHQUFHLElBQUksYUFBYSxDQUFTLENBQUMsQ0FBQyxDQUFDO1FBQzNDLGFBQVEsR0FBRyxJQUFJLGFBQWEsQ0FBVyxDQUFDLENBQUMsQ0FBQztRQUMxQyx3QkFBbUIsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ3BDLHlCQUFvQixHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7UUFJ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UUFDakQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQy9CLE1BQU0sbUJBQW1CLEdBQUcsY0FBYyxHQUFHLFdBQVcsQ0FBQztRQUV6RCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUV4QixJQUFJLG1CQUFtQixHQUFHLENBQUMsRUFBRTtZQUMzQixJQUFJLENBQUMsc0JBQXNCLEdBQUcsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDdEUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbkMsQ0FBQyxDQUFDLENBQUM7U0FDSjthQUFNO1lBQ0wsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDbEM7SUFDSCxDQUFDO0lBRU8sZ0JBQWdCO1FBQ3RCLElBQUksSUFBSSxDQUFDLHNCQUFzQixFQUFFO1lBQy9CLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUMxQyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsU0FBUyxDQUFDO1NBQ3pDO0lBQ0gsQ0FBQzs4R0ExS1UsdUJBQXVCO2tIQUF2Qix1QkFBdUIsY0FGdEIsTUFBTTs7MkZBRVAsdUJBQXVCO2tCQUhuQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmVwbGF5U3ViamVjdCwgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCB0aW1lciB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgRGFuZ2xJZGVudGl0eUNsaWVudCB9IGZyb20gJy4uL2FwaS1jbGllbnQnO1xyXG5pbXBvcnQgeyBKd3RIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnQGF1dGgwL2FuZ3VsYXItand0JztcclxuaW1wb3J0IHsgSnd0U3RvcmFnZSB9IGZyb20gJy4uL21vZGVscy9qd3Qtc3RvcmFnZSc7XHJcbmltcG9ydCB7IEp3dFRva2VuU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2p3dC10b2tlbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXNlckluZm8gfSBmcm9tICcuLi9tb2RlbHMvdXNlci1pbmZvJztcclxuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEF1dGhlbnRpY2F0aW9uTWVzc2VuZ2VyIGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQge1xyXG4gIHByaXZhdGUgand0SGVscGVyU2VydmljZSA9IG5ldyBKd3RIZWxwZXJTZXJ2aWNlKCk7XHJcbiAgcHJpdmF0ZSBsYXN0QnJvYWRjYXN0QWNjZXNzVG9rZW46IHN0cmluZztcclxuICBwcml2YXRlICRkZXN0cm95ZWQgPSBuZXcgU3ViamVjdCgpO1xyXG4gIHByaXZhdGUgZXhwaXJhdGlvblN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgcmVhZG9ubHkgaXNBdXRoZW50aWNhdGVkID0gbmV3IFJlcGxheVN1YmplY3Q8Ym9vbGVhbj4oMSk7XHJcbiAgcmVhZG9ubHkgdXNlcm5hbWUgPSBuZXcgUmVwbGF5U3ViamVjdDxzdHJpbmc+KDEpO1xyXG4gIHJlYWRvbmx5IGVtYWlsID0gbmV3IFJlcGxheVN1YmplY3Q8c3RyaW5nPigxKTtcclxuICByZWFkb25seSBpZGVudGljb25JZCA9IG5ldyBSZXBsYXlTdWJqZWN0PHN0cmluZz4oMSk7XHJcbiAgcmVhZG9ubHkgdXNlckluZm8gPSBuZXcgUmVwbGF5U3ViamVjdDxVc2VySW5mbz4oMSk7XHJcbiAgcmVhZG9ubHkgdG9rZW5SZWZyZXNoU3RhcnRlZCA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgcmVhZG9ubHkgdG9rZW5SZWZyZXNoRmluaXNoZWQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG4gIHByaXZhdGUgand0VG9rZW5TZXJ2aWNlOiBKd3RUb2tlblNlcnZpY2UgfCB1bmRlZmluZWQ7XHJcbiAgcHJpdmF0ZSBkYW5nbElkZW50aXR5Q2xpZW50OiBEYW5nbElkZW50aXR5Q2xpZW50IHwgdW5kZWZpbmVkO1xyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5qd3RUb2tlblNlcnZpY2UgPSBpbmplY3QoSnd0VG9rZW5TZXJ2aWNlKTtcclxuICAgIHRoaXMuZGFuZ2xJZGVudGl0eUNsaWVudCA9IGluamVjdChEYW5nbElkZW50aXR5Q2xpZW50KTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5qd3RUb2tlblNlcnZpY2UudG9rZW5SZWZyZXNoU3RhcnRlZFxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4kZGVzdHJveWVkKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnRva2VuUmVmcmVzaFN0YXJ0ZWQubmV4dCgpKTtcclxuXHJcbiAgICB0aGlzLmp3dFRva2VuU2VydmljZS50b2tlblJlZnJlc2hGaW5pc2hlZFxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4kZGVzdHJveWVkKSlcclxuICAgICAgLnN1YnNjcmliZSgoc3VjY2Vzc2Z1bFJlZnJlc2gpID0+XHJcbiAgICAgICAgdGhpcy50b2tlblJlZnJlc2hGaW5pc2hlZC5uZXh0KHN1Y2Nlc3NmdWxSZWZyZXNoKVxyXG4gICAgICApO1xyXG5cclxuICAgIHRoaXMuand0VG9rZW5TZXJ2aWNlLnRva2VuU3RvcmVkXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiRkZXN0cm95ZWQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChqd3RUb2tlbikgPT4gdGhpcy5yZWZyZXNoQXV0aGVudGljYXRpb25TdGF0dXMoand0VG9rZW4pKTtcclxuXHJcbiAgICB0aGlzLmp3dFRva2VuU2VydmljZVxyXG4gICAgICAuZ2V0VG9rZW4oKVxyXG4gICAgICAuc3Vic2NyaWJlKCh0b2tlbikgPT4gdGhpcy5yZWZyZXNoQXV0aGVudGljYXRpb25TdGF0dXModG9rZW4pKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc0F1dGhlbnRpY2F0ZWQuY29tcGxldGUoKTtcclxuICAgIHRoaXMudXNlcm5hbWUuY29tcGxldGUoKTtcclxuICAgIHRoaXMuZW1haWwuY29tcGxldGUoKTtcclxuICAgIHRoaXMuaWRlbnRpY29uSWQuY29tcGxldGUoKTtcclxuICAgIHRoaXMudXNlckluZm8uY29tcGxldGUoKTtcclxuICAgIHRoaXMudG9rZW5SZWZyZXNoU3RhcnRlZC5jb21wbGV0ZSgpO1xyXG4gICAgdGhpcy50b2tlblJlZnJlc2hGaW5pc2hlZC5jb21wbGV0ZSgpO1xyXG4gICAgdGhpcy4kZGVzdHJveWVkLm5leHQoKTtcclxuICAgIHRoaXMuJGRlc3Ryb3llZC5jb21wbGV0ZSgpO1xyXG4gICAgdGhpcy5jbGVhckxvZ291dFRpbWVyKCk7XHJcbiAgfVxyXG5cclxuICByZWZyZXNoVXNlckluZm9Gcm9tU2VydmVyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kYW5nbElkZW50aXR5Q2xpZW50LmdldFVzZXJJbmZvKCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHNlcnZlclVzZXJJbmZvKSA9PiB7XHJcbiAgICAgICAgaWYgKHNlcnZlclVzZXJJbmZvLnVzZXJJc0F1dGhlbnRpY2F0ZWQpIHtcclxuICAgICAgICAgIGNvbnN0IHVzZXJJbmZvOiBVc2VySW5mbyA9IHtcclxuICAgICAgICAgICAgZGVzZXJpYWxpemVkVG9rZW46IG51bGwsXHJcbiAgICAgICAgICAgIGVtYWlsOiBzZXJ2ZXJVc2VySW5mby5jdXJyZW50VXNlckVtYWlsLFxyXG4gICAgICAgICAgICBpZDogc2VydmVyVXNlckluZm8uY3VycmVudFVzZXJJZCxcclxuICAgICAgICAgICAgaWRlbnRpY29uSWQ6IHNlcnZlclVzZXJJbmZvLmN1cnJlbnRVc2VySWRlbnRpY29uSWQsXHJcbiAgICAgICAgICAgIHJvbGVzOiBbXSxcclxuICAgICAgICAgICAgY2xhaW1zOiB7fSxcclxuICAgICAgICAgICAgdXNlcm5hbWU6IHNlcnZlclVzZXJJbmZvLmN1cnJlbnRVc2VyTmFtZSxcclxuICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgc2VydmVyVXNlckluZm8udXNlckNsYWltcy5mb3JFYWNoKChjbGFpbSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoY2xhaW0udHlwZSA9PT0gJ3JvbGUnKSB7XHJcbiAgICAgICAgICAgICAgdXNlckluZm8ucm9sZXMucHVzaChjbGFpbS52YWx1ZSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodXNlckluZm8uY2xhaW1zW2NsYWltLnR5cGVdID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICB1c2VySW5mby5jbGFpbXNbY2xhaW0udHlwZV0gPSBbY2xhaW0udmFsdWVdO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHVzZXJJbmZvLmNsYWltc1tjbGFpbS50eXBlXS5wdXNoKGNsYWltLnZhbHVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmlzQXV0aGVudGljYXRlZC5uZXh0KHRydWUpO1xyXG4gICAgICAgICAgdGhpcy51c2VybmFtZS5uZXh0KHNlcnZlclVzZXJJbmZvLmN1cnJlbnRVc2VyTmFtZSk7XHJcbiAgICAgICAgICB0aGlzLmVtYWlsLm5leHQoc2VydmVyVXNlckluZm8uY3VycmVudFVzZXJFbWFpbCk7XHJcbiAgICAgICAgICB0aGlzLmlkZW50aWNvbklkLm5leHQoc2VydmVyVXNlckluZm8uY3VycmVudFVzZXJJZGVudGljb25JZCk7XHJcbiAgICAgICAgICB0aGlzLnVzZXJJbmZvLm5leHQodXNlckluZm8pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmlzQXV0aGVudGljYXRlZC5uZXh0KGZhbHNlKTtcclxuICAgICAgICAgIHRoaXMudXNlcm5hbWUubmV4dChudWxsKTtcclxuICAgICAgICAgIHRoaXMuZW1haWwubmV4dChudWxsKTtcclxuICAgICAgICAgIHRoaXMuaWRlbnRpY29uSWQubmV4dChudWxsKTtcclxuICAgICAgICAgIHRoaXMudXNlckluZm8ubmV4dChudWxsKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVmcmVzaEF1dGhlbnRpY2F0aW9uU3RhdHVzKGp3dFRva2VuPzogSnd0U3RvcmFnZSkge1xyXG4gICAgaWYgKGp3dFRva2VuKSB7XHJcbiAgICAgIGNvbnN0IGlzVmFsaWRUb2tlbiA9IGp3dFRva2VuLmV4cGlyZXNBdCA+IG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMDtcclxuICAgICAgaWYgKHRoaXMubGFzdEJyb2FkY2FzdEFjY2Vzc1Rva2VuID09PSBqd3RUb2tlbi5hY2Nlc3NUb2tlbikge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmxhc3RCcm9hZGNhc3RBY2Nlc3NUb2tlbiA9IGp3dFRva2VuLmFjY2Vzc1Rva2VuO1xyXG4gICAgICBpZiAoaXNWYWxpZFRva2VuKSB7XHJcbiAgICAgICAgdGhpcy5pc0F1dGhlbnRpY2F0ZWQubmV4dCh0cnVlKTtcclxuICAgICAgICB0aGlzLnN0YXJ0VG9rZW5FeHBpcmF0aW9uV2F0Y2hlcihqd3RUb2tlbik7XHJcbiAgICAgICAgY29uc3QgZGVjb2RlZFRva2VuID0gdGhpcy5qd3RIZWxwZXJTZXJ2aWNlLmRlY29kZVRva2VuKFxyXG4gICAgICAgICAgand0VG9rZW4uYWNjZXNzVG9rZW5cclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMudXNlcm5hbWUubmV4dChkZWNvZGVkVG9rZW5bJ25hbWUnXSk7XHJcbiAgICAgICAgdGhpcy5lbWFpbC5uZXh0KGRlY29kZWRUb2tlblsnZW1haWwnXSk7XHJcbiAgICAgICAgdGhpcy5pZGVudGljb25JZC5uZXh0KGRlY29kZWRUb2tlblsnaWRlbnRpY29uX2lkJ10pO1xyXG5cclxuICAgICAgICBjb25zdCB0b2tlbkNsYWltczogeyBbY2xhaW06IHN0cmluZ106IHN0cmluZ1tdIH0gPSB7fTtcclxuICAgICAgICBmb3IgKGNvbnN0IHRva2VuUHJvcCBpbiBkZWNvZGVkVG9rZW4pIHtcclxuICAgICAgICAgIGlmIChkZWNvZGVkVG9rZW4uaGFzT3duUHJvcGVydHkodG9rZW5Qcm9wKSkge1xyXG4gICAgICAgICAgICBjb25zdCBwcm9wZXJ0eSA9IGRlY29kZWRUb2tlblt0b2tlblByb3BdO1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIHByb3BlcnR5ID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICAgIGlmICh0b2tlbkNsYWltc1t0b2tlblByb3BdID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIHRva2VuQ2xhaW1zW3Rva2VuUHJvcF0gPSBbXTtcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIHRva2VuQ2xhaW1zW3Rva2VuUHJvcF0ucHVzaChwcm9wZXJ0eSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMudXNlckluZm8ubmV4dCh7XHJcbiAgICAgICAgICBpZDogZGVjb2RlZFRva2VuWydzdWInXSxcclxuICAgICAgICAgIGNsYWltczogdG9rZW5DbGFpbXMsXHJcbiAgICAgICAgICBkZXNlcmlhbGl6ZWRUb2tlbjogZGVjb2RlZFRva2VuLFxyXG4gICAgICAgICAgZW1haWw6IGRlY29kZWRUb2tlblsnZW1haWwnXSxcclxuICAgICAgICAgIGlkZW50aWNvbklkOiBkZWNvZGVkVG9rZW5bJ2lkZW50aWNvbl9pZCddLFxyXG4gICAgICAgICAgdXNlcm5hbWU6IGRlY29kZWRUb2tlblsnbmFtZSddLFxyXG4gICAgICAgICAgcm9sZXM6IGRlY29kZWRUb2tlblsncm9sZSddLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuaXNBdXRoZW50aWNhdGVkLm5leHQoZmFsc2UpO1xyXG4gICAgICAgIHRoaXMuand0VG9rZW5TZXJ2aWNlLnJlZnJlc2hUb2tlbigpLnN1YnNjcmliZSgoKSA9PiB7fSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmxhc3RCcm9hZGNhc3RBY2Nlc3NUb2tlbiA9PT0gbnVsbCkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmxhc3RCcm9hZGNhc3RBY2Nlc3NUb2tlbiA9IG51bGw7XHJcbiAgICAgIHRoaXMuaXNBdXRoZW50aWNhdGVkLm5leHQoZmFsc2UpO1xyXG4gICAgICB0aGlzLnVzZXJuYW1lLm5leHQobnVsbCk7XHJcbiAgICAgIHRoaXMuZW1haWwubmV4dChudWxsKTtcclxuICAgICAgdGhpcy5pZGVudGljb25JZC5uZXh0KG51bGwpO1xyXG4gICAgICB0aGlzLnVzZXJJbmZvLm5leHQobnVsbCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXJ0VG9rZW5FeHBpcmF0aW9uV2F0Y2hlcihqd3RUb2tlbj86IEp3dFN0b3JhZ2UpOiB2b2lkIHtcclxuICAgIGNvbnN0IGV4cGlyYXRpb25UaW1lID0gand0VG9rZW4uZXhwaXJlc0F0ICogMTAwMDtcclxuICAgIGNvbnN0IGN1cnJlbnRUaW1lID0gRGF0ZS5ub3coKTtcclxuICAgIGNvbnN0IHRpbWVVbnRpbEV4cGlyYXRpb24gPSBleHBpcmF0aW9uVGltZSAtIGN1cnJlbnRUaW1lO1xyXG5cclxuICAgIHRoaXMuY2xlYXJMb2dvdXRUaW1lcigpO1xyXG5cclxuICAgIGlmICh0aW1lVW50aWxFeHBpcmF0aW9uID4gMCkge1xyXG4gICAgICB0aGlzLmV4cGlyYXRpb25TdWJzY3JpcHRpb24gPSB0aW1lcih0aW1lVW50aWxFeHBpcmF0aW9uKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuaXNBdXRoZW50aWNhdGVkLm5leHQoZmFsc2UpO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaXNBdXRoZW50aWNhdGVkLm5leHQoZmFsc2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjbGVhckxvZ291dFRpbWVyKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZXhwaXJhdGlvblN1YnNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLmV4cGlyYXRpb25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgdGhpcy5leHBpcmF0aW9uU3Vic2NyaXB0aW9uID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiand0LXN0b3JhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWRhbmdsLWlkZW50aXR5LWNsaWVudC9zcmMvbW9kZWxzL2p3dC1zdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEp3dFN0b3JhZ2Uge1xyXG4gIGFjY2Vzc1Rva2VuOiBzdHJpbmc7XHJcbiAgcmVmcmVzaFRva2VuPzogc3RyaW5nO1xyXG4gIGV4cGlyZXNBdDogbnVtYmVyO1xyXG59XHJcbiJdfQ==
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1pbmZvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1kYW5nbC1pZGVudGl0eS1jbGllbnQvc3JjL21vZGVscy91c2VyLWluZm8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgVXNlckluZm8ge1xyXG4gICAgaWQ6IHN0cmluZztcclxuICAgIHVzZXJuYW1lOiBzdHJpbmc7XHJcbiAgICBlbWFpbDogc3RyaW5nO1xyXG4gICAgaWRlbnRpY29uSWQ6IHN0cmluZztcclxuICAgIHJvbGVzOiBzdHJpbmdbXTtcclxuICAgIGNsYWltczoge1tjbGFpbTogc3RyaW5nXTogc3RyaW5nW119O1xyXG4gICAgZGVzZXJpYWxpemVkVG9rZW46IGFueTtcclxufVxyXG4iXX0=
@@ -1,12 +1,12 @@
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";
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
12
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItZGFuZ2wtaWRlbnRpdHktY2xpZW50L3NyYy9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyx1Q0FBdUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBhbmd1bGFyLWRhbmdsLWlkZW50aXR5LWNsaWVudFxyXG4gKi9cclxuXHJcbmV4cG9ydCAqIGZyb20gXCIuL2RhbmdsLWlkZW50aXR5Lm1vZHVsZVwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9hcGktY2xpZW50XCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2ludGVyY2VwdG9ycy9qd3QtaW50ZXJjZXB0b3Iuc2VydmljZVwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9pbnRlcmNlcHRvcnMvZGFuZ2wtaWRlbnRpdHktcmVxdWVzdC12YWxpZGF0b3JcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vbW9kZWxzL2p3dC1zdG9yYWdlXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL3NlcnZpY2VzL2F1dGhlbnRpY2F0aW9uLnNlcnZpY2VcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vc2VydmljZXMvand0LXRva2VuLnNlcnZpY2VcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vbWVzc2VuZ2Vycy9hdXRoZW50aWNhdGlvbi5tZXNzZW5nZXJcIjtcclxuIl19
@@ -1,39 +1,39 @@
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
- AuthenticationServicefac = 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
+ 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
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: AuthenticationService, deps: [{ token: i1.DanglIdentityClient }, { token: i2.JwtTokenService }], target: i0.ɵɵFactoryTarget.Injectable }); }
31
+ static { thisprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: AuthenticationService, providedIn: 'root' }); }
32
+ }
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: AuthenticationService, decorators: [{
34
+ type: Injectable,
35
+ args: [{
36
+ providedIn: 'root',
37
+ }]
38
+ }], ctorParameters: () => [{ type: i1.DanglIdentityClient }, { type: i2.JwtTokenService }] });
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItZGFuZ2wtaWRlbnRpdHktY2xpZW50L3NyYy9zZXJ2aWNlcy9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBTTNDLE1BQU0sT0FBTyxxQkFBcUI7SUFDaEMsWUFDVSxtQkFBd0MsRUFDeEMsZUFBZ0M7UUFEaEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7SUFDdkMsQ0FBQztJQUVKLGNBQWMsQ0FBQyxVQUFrQixFQUFFLFFBQWdCO1FBQ2pELE9BQU8sSUFBSSxDQUFDLG1CQUFtQjthQUM1QixtQkFBbUIsQ0FBQztZQUNuQixVQUFVLEVBQUUsVUFBVTtZQUN0QixRQUFRLEVBQUUsUUFBUTtTQUNuQixDQUFDO2FBQ0QsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ3hDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQzdCLENBQUM7SUFDTixDQUFDO0lBRU8sb0JBQW9CLENBQUMsS0FBdUI7UUFDbEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRTtZQUNqRSxPQUFPLEtBQUssQ0FBQztTQUNkO1FBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckMsQ0FBQzs4R0E1QlUscUJBQXFCO2tIQUFyQixxQkFBcUIsY0FGcEIsTUFBTTs7MkZBRVAscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhbmdsSWRlbnRpdHlDbGllbnQsIFRva2VuUmVzcG9uc2VHZXQgfSBmcm9tICcuLi9hcGktY2xpZW50JztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBKd3RUb2tlblNlcnZpY2UgfSBmcm9tICcuL2p3dC10b2tlbi5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdXRoZW50aWNhdGlvblNlcnZpY2Uge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBkYW5nbElkZW50aXR5Q2xpZW50OiBEYW5nbElkZW50aXR5Q2xpZW50LFxyXG4gICAgcHJpdmF0ZSBqd3RUb2tlblNlcnZpY2U6IEp3dFRva2VuU2VydmljZVxyXG4gICkge31cclxuXHJcbiAgbG9naW5XaXRoVG9rZW4oaWRlbnRpZmllcjogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICByZXR1cm4gdGhpcy5kYW5nbElkZW50aXR5Q2xpZW50XHJcbiAgICAgIC5sb2dpbkFuZFJldHVyblRva2VuKHtcclxuICAgICAgICBpZGVudGlmaWVyOiBpZGVudGlmaWVyLFxyXG4gICAgICAgIHBhc3N3b3JkOiBwYXNzd29yZCxcclxuICAgICAgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyKSA9PiB0aGlzLnN0b3JlSnd0VG9rZW5JZlZhbGlkKHIpKSxcclxuICAgICAgICBjYXRjaEVycm9yKChlKSA9PiBvZihmYWxzZSkpXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0b3JlSnd0VG9rZW5JZlZhbGlkKHRva2VuOiBUb2tlblJlc3BvbnNlR2V0KTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRva2VuLmFjY2Vzc1Rva2VuIHx8ICF0b2tlbi5yZWZyZXNoVG9rZW4gfHwgIXRva2VuLmV4cGlyZXNJbikge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICB0aGlzLmp3dFRva2VuU2VydmljZS5zdG9yZVRva2VuKHRva2VuKTtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgbG9nb3V0KCkge1xyXG4gICAgdGhpcy5qd3RUb2tlblNlcnZpY2UuZGVsZXRlVG9rZW4oKTtcclxuICB9XHJcbn1cclxuIl19