@odx/auth 1.0.3 → 3.0.0

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 (80) hide show
  1. package/README.md +27 -1
  2. package/esm2020/index.mjs +2 -1
  3. package/esm2020/lib/auth.component.mjs +6 -5
  4. package/esm2020/lib/auth.config.mjs +20 -4
  5. package/esm2020/lib/auth.directive.mjs +2 -2
  6. package/esm2020/lib/auth.guard.mjs +17 -6
  7. package/esm2020/lib/auth.providers.mjs +7 -2
  8. package/esm2020/lib/auth.service.mjs +29 -15
  9. package/esm2020/lib/auth.typings.mjs +1 -1
  10. package/esm2020/lib/directives/auth-action.directive.mjs +24 -0
  11. package/esm2020/lib/directives/index.mjs +2 -1
  12. package/esm2020/lib/directives/sign-in.directive.mjs +10 -15
  13. package/esm2020/lib/directives/sign-out.directive.mjs +10 -15
  14. package/esm2020/lib/helpers/create-inititals.mjs +3 -3
  15. package/esm2020/lib/helpers/index.mjs +3 -2
  16. package/esm2020/lib/helpers/resolve-email.mjs +14 -0
  17. package/esm2020/lib/helpers/resolve-username.mjs +14 -0
  18. package/esm2020/lib/models/auth-http-cache.mjs +34 -0
  19. package/esm2020/lib/models/auth-plugin-manager.mjs +29 -0
  20. package/esm2020/lib/models/authorized-handler.mjs +1 -1
  21. package/esm2020/lib/models/index.mjs +3 -1
  22. package/esm2020/lib/plugins/core-identity.plugin.mjs +13 -0
  23. package/esm2020/lib/plugins/index.mjs +2 -0
  24. package/esm2020/plugins/service-connect/index.mjs +8 -0
  25. package/esm2020/plugins/service-connect/lib/dtos/get-service-connect-rights-response.dto.mjs +2 -0
  26. package/esm2020/plugins/service-connect/lib/dtos/index.mjs +2 -0
  27. package/esm2020/plugins/service-connect/lib/helpers/build-service-connect-url.mjs +9 -0
  28. package/esm2020/plugins/service-connect/lib/helpers/has-roles-or-rights-handler.mjs +5 -0
  29. package/esm2020/plugins/service-connect/lib/helpers/has-roles-or-rights.mjs +5 -0
  30. package/esm2020/plugins/service-connect/lib/helpers/index.mjs +4 -0
  31. package/esm2020/plugins/service-connect/lib/service-connect-rights.directive.mjs +32 -0
  32. package/esm2020/plugins/service-connect/lib/service-connect-rights.guard.mjs +7 -0
  33. package/esm2020/plugins/service-connect/lib/service-connect-rights.plugin.mjs +29 -0
  34. package/esm2020/plugins/service-connect/lib/service-connect.config.mjs +14 -0
  35. package/esm2020/plugins/service-connect/lib/service-connect.typings.mjs +2 -0
  36. package/esm2020/plugins/service-connect/odx-auth-plugins-service-connect.mjs +5 -0
  37. package/fesm2015/odx-auth-plugins-service-connect.mjs +99 -0
  38. package/fesm2015/odx-auth-plugins-service-connect.mjs.map +1 -0
  39. package/fesm2015/odx-auth.mjs +208 -72
  40. package/fesm2015/odx-auth.mjs.map +1 -1
  41. package/fesm2020/odx-auth-plugins-service-connect.mjs +97 -0
  42. package/fesm2020/odx-auth-plugins-service-connect.mjs.map +1 -0
  43. package/fesm2020/odx-auth.mjs +201 -71
  44. package/fesm2020/odx-auth.mjs.map +1 -1
  45. package/index.d.ts +1 -0
  46. package/lib/auth.component.d.ts +1 -1
  47. package/lib/auth.config.d.ts +12 -3
  48. package/lib/auth.guard.d.ts +2 -2
  49. package/lib/auth.service.d.ts +11 -8
  50. package/lib/auth.typings.d.ts +9 -1
  51. package/lib/directives/auth-action.directive.d.ts +12 -0
  52. package/lib/directives/index.d.ts +1 -0
  53. package/lib/directives/sign-in.directive.d.ts +4 -6
  54. package/lib/directives/sign-out.directive.d.ts +4 -6
  55. package/lib/helpers/create-inititals.d.ts +1 -1
  56. package/lib/helpers/index.d.ts +2 -1
  57. package/lib/helpers/resolve-email.d.ts +1 -0
  58. package/lib/helpers/resolve-username.d.ts +1 -0
  59. package/lib/models/auth-http-cache.d.ts +11 -0
  60. package/lib/models/auth-plugin-manager.d.ts +15 -0
  61. package/lib/models/authorized-handler.d.ts +1 -2
  62. package/lib/models/index.d.ts +2 -0
  63. package/lib/plugins/core-identity.plugin.d.ts +11 -0
  64. package/lib/plugins/index.d.ts +1 -0
  65. package/package.json +11 -2
  66. package/plugins/service-connect/README.md +3 -0
  67. package/plugins/service-connect/index.d.ts +7 -0
  68. package/plugins/service-connect/lib/dtos/get-service-connect-rights-response.dto.d.ts +3 -0
  69. package/plugins/service-connect/lib/dtos/index.d.ts +1 -0
  70. package/plugins/service-connect/lib/helpers/build-service-connect-url.d.ts +3 -0
  71. package/plugins/service-connect/lib/helpers/has-roles-or-rights-handler.d.ts +3 -0
  72. package/plugins/service-connect/lib/helpers/has-roles-or-rights.d.ts +5 -0
  73. package/plugins/service-connect/lib/helpers/index.d.ts +3 -0
  74. package/plugins/service-connect/lib/service-connect-rights.directive.d.ts +9 -0
  75. package/plugins/service-connect/lib/service-connect-rights.guard.d.ts +3 -0
  76. package/plugins/service-connect/lib/service-connect-rights.plugin.d.ts +7 -0
  77. package/plugins/service-connect/lib/service-connect.config.d.ts +11 -0
  78. package/plugins/service-connect/lib/service-connect.typings.d.ts +9 -0
  79. package/esm2020/lib/helpers/parse-identity-claims.mjs +0 -13
  80. package/lib/helpers/parse-identity-claims.d.ts +0 -2
@@ -1,26 +1,21 @@
1
- import { Directive, EventEmitter, HostListener, inject, Output } from '@angular/core';
1
+ import { Directive, EventEmitter, HostListener, Output } from '@angular/core';
2
2
  import { LoadingSpinnerDirective } from '@odx/angular/components/loading-spinner';
3
- import { AuthService } from '../auth.service';
3
+ import { AuthActionDirective } from './auth-action.directive';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@odx/angular/components/loading-spinner";
6
- export class SignInDirective {
6
+ export class SignInDirective extends AuthActionDirective {
7
7
  constructor() {
8
- this.authService = inject(AuthService);
9
- this.loadingSpinnerDirective = inject(LoadingSpinnerDirective, { self: true });
8
+ super(...arguments);
10
9
  // eslint-disable-next-line @angular-eslint/no-output-rename
11
10
  this.afterSignIn = new EventEmitter();
12
11
  }
13
- ngAfterViewInit() {
14
- this.loadingSpinnerDirective.autoColor = true;
15
- }
16
- async signIn() {
17
- this.loadingSpinnerDirective.isLoading = true;
12
+ handleClick() {
18
13
  this.authService.signIn();
19
- this.afterSignIn.emit();
14
+ this.afterSignIn.next();
20
15
  }
21
16
  }
22
- SignInDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SignInDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
23
- SignInDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: SignInDirective, isStandalone: true, selector: "[odxButton][odxAuthSignIn]", outputs: { afterSignIn: "odxAuthSignIn" }, host: { listeners: { "click": "signIn()" } }, hostDirectives: [{ directive: i1.LoadingSpinnerDirective }], ngImport: i0 });
17
+ SignInDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SignInDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
18
+ SignInDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: SignInDirective, isStandalone: true, selector: "[odxButton][odxAuthSignIn]", outputs: { afterSignIn: "odxAuthSignIn" }, host: { listeners: { "click": "handleClick()" } }, usesInheritance: true, hostDirectives: [{ directive: i1.LoadingSpinnerDirective }], ngImport: i0 });
24
19
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SignInDirective, decorators: [{
25
20
  type: Directive,
26
21
  args: [{
@@ -31,8 +26,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
31
26
  }], propDecorators: { afterSignIn: [{
32
27
  type: Output,
33
28
  args: ['odxAuthSignIn']
34
- }], signIn: [{
29
+ }], handleClick: [{
35
30
  type: HostListener,
36
31
  args: ['click']
37
32
  }] } });
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbi1pbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3NyYy9saWIvZGlyZWN0aXZlcy9zaWduLWluLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDbEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFPOUMsTUFBTSxPQUFPLGVBQWU7SUFMNUI7UUFNbUIsZ0JBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbEMsNEJBQXVCLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFM0YsNERBQTREO1FBRXJELGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztLQVkvQztJQVZRLGVBQWU7UUFDcEIsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDaEQsQ0FBQztJQUdTLEtBQUssQ0FBQyxNQUFNO1FBQ3BCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQzlDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMxQixDQUFDOzs0R0FqQlUsZUFBZTtnR0FBZixlQUFlOzJGQUFmLGVBQWU7a0JBTDNCLFNBQVM7bUJBQUM7b0JBQ1QsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSw0QkFBNEI7b0JBQ3RDLGNBQWMsRUFBRSxDQUFDLHVCQUF1QixDQUFDO2lCQUMxQzs4QkFPUSxXQUFXO3NCQURqQixNQUFNO3VCQUFDLGVBQWU7Z0JBUVAsTUFBTTtzQkFEckIsWUFBWTt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgaW5qZWN0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExvYWRpbmdTcGlubmVyRGlyZWN0aXZlIH0gZnJvbSAnQG9keC9hbmd1bGFyL2NvbXBvbmVudHMvbG9hZGluZy1zcGlubmVyJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vYXV0aC5zZXJ2aWNlJztcblxuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnW29keEJ1dHRvbl1bb2R4QXV0aFNpZ25Jbl0nLFxuICBob3N0RGlyZWN0aXZlczogW0xvYWRpbmdTcGlubmVyRGlyZWN0aXZlXSxcbn0pXG5leHBvcnQgY2xhc3MgU2lnbkluRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXV0aFNlcnZpY2UgPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGxvYWRpbmdTcGlubmVyRGlyZWN0aXZlID0gaW5qZWN0KExvYWRpbmdTcGlubmVyRGlyZWN0aXZlLCB7IHNlbGY6IHRydWUgfSk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtcmVuYW1lXG4gIEBPdXRwdXQoJ29keEF1dGhTaWduSW4nKVxuICBwdWJsaWMgYWZ0ZXJTaWduSW4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmxvYWRpbmdTcGlubmVyRGlyZWN0aXZlLmF1dG9Db2xvciA9IHRydWU7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gIHByb3RlY3RlZCBhc3luYyBzaWduSW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5sb2FkaW5nU3Bpbm5lckRpcmVjdGl2ZS5pc0xvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMuYXV0aFNlcnZpY2Uuc2lnbkluKCk7XG4gICAgdGhpcy5hZnRlclNpZ25Jbi5lbWl0KCk7XG4gIH1cbn1cbiJdfQ==
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbi1pbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3NyYy9saWIvZGlyZWN0aXZlcy9zaWduLWluLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7QUFPOUQsTUFBTSxPQUFPLGVBQWdCLFNBQVEsbUJBQW1CO0lBTHhEOztRQU1FLDREQUE0RDtRQUVyRCxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7S0FPL0M7SUFKb0IsV0FBVztRQUM1QixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDMUIsQ0FBQzs7NEdBVFUsZUFBZTtnR0FBZixlQUFlOzJGQUFmLGVBQWU7a0JBTDNCLFNBQVM7bUJBQUM7b0JBQ1QsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSw0QkFBNEI7b0JBQ3RDLGNBQWMsRUFBRSxDQUFDLHVCQUF1QixDQUFDO2lCQUMxQzs4QkFJUSxXQUFXO3NCQURqQixNQUFNO3VCQUFDLGVBQWU7Z0JBSUosV0FBVztzQkFEN0IsWUFBWTt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMb2FkaW5nU3Bpbm5lckRpcmVjdGl2ZSB9IGZyb20gJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL2xvYWRpbmctc3Bpbm5lcic7XG5pbXBvcnQgeyBBdXRoQWN0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi9hdXRoLWFjdGlvbi5kaXJlY3RpdmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdbb2R4QnV0dG9uXVtvZHhBdXRoU2lnbkluXScsXG4gIGhvc3REaXJlY3RpdmVzOiBbTG9hZGluZ1NwaW5uZXJEaXJlY3RpdmVdLFxufSlcbmV4cG9ydCBjbGFzcyBTaWduSW5EaXJlY3RpdmUgZXh0ZW5kcyBBdXRoQWN0aW9uRGlyZWN0aXZlIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtcmVuYW1lXG4gIEBPdXRwdXQoJ29keEF1dGhTaWduSW4nKVxuICBwdWJsaWMgYWZ0ZXJTaWduSW4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgaGFuZGxlQ2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy5hdXRoU2VydmljZS5zaWduSW4oKTtcbiAgICB0aGlzLmFmdGVyU2lnbkluLm5leHQoKTtcbiAgfVxufVxuIl19
@@ -1,26 +1,21 @@
1
- import { Directive, EventEmitter, HostListener, inject, Output } from '@angular/core';
1
+ import { Directive, EventEmitter, HostListener, Output } from '@angular/core';
2
2
  import { LoadingSpinnerDirective } from '@odx/angular/components/loading-spinner';
3
- import { AuthService } from '../auth.service';
3
+ import { AuthActionDirective } from './auth-action.directive';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@odx/angular/components/loading-spinner";
6
- export class SignOutDirective {
6
+ export class SignOutDirective extends AuthActionDirective {
7
7
  constructor() {
8
- this.authService = inject(AuthService);
9
- this.loadingSpinnerDirective = inject(LoadingSpinnerDirective, { self: true });
8
+ super(...arguments);
10
9
  // eslint-disable-next-line @angular-eslint/no-output-rename
11
10
  this.afterSignOut = new EventEmitter();
12
11
  }
13
- ngAfterViewInit() {
14
- this.loadingSpinnerDirective.autoColor = true;
15
- }
16
- async signIn() {
17
- this.loadingSpinnerDirective.isLoading = true;
12
+ handleClick() {
18
13
  this.authService.signOut();
19
- this.afterSignOut.emit();
14
+ this.afterSignOut.next();
20
15
  }
21
16
  }
22
- SignOutDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SignOutDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
23
- SignOutDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: SignOutDirective, isStandalone: true, selector: "[odxButton][odxAuthSignOut]", outputs: { afterSignOut: "odxAuthSignOut" }, host: { listeners: { "click": "signIn()" } }, hostDirectives: [{ directive: i1.LoadingSpinnerDirective }], ngImport: i0 });
17
+ SignOutDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SignOutDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
18
+ SignOutDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: SignOutDirective, isStandalone: true, selector: "[odxButton][odxAuthSignOut]", outputs: { afterSignOut: "odxAuthSignOut" }, host: { listeners: { "click": "handleClick()" } }, usesInheritance: true, hostDirectives: [{ directive: i1.LoadingSpinnerDirective }], ngImport: i0 });
24
19
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SignOutDirective, decorators: [{
25
20
  type: Directive,
26
21
  args: [{
@@ -31,8 +26,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
31
26
  }], propDecorators: { afterSignOut: [{
32
27
  type: Output,
33
28
  args: ['odxAuthSignOut']
34
- }], signIn: [{
29
+ }], handleClick: [{
35
30
  type: HostListener,
36
31
  args: ['click']
37
32
  }] } });
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbi1vdXQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYXV0aC9zcmMvbGliL2RpcmVjdGl2ZXMvc2lnbi1vdXQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNsRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQU85QyxNQUFNLE9BQU8sZ0JBQWdCO0lBTDdCO1FBTW1CLGdCQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2xDLDRCQUF1QixHQUFHLE1BQU0sQ0FBQyx1QkFBdUIsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRTNGLDREQUE0RDtRQUVyRCxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7S0FZaEQ7SUFWUSxlQUFlO1FBQ3BCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO0lBQ2hELENBQUM7SUFHUyxLQUFLLENBQUMsTUFBTTtRQUNwQixJQUFJLENBQUMsdUJBQXVCLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUM5QyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDM0IsQ0FBQzs7NkdBakJVLGdCQUFnQjtpR0FBaEIsZ0JBQWdCOzJGQUFoQixnQkFBZ0I7a0JBTDVCLFNBQVM7bUJBQUM7b0JBQ1QsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSw2QkFBNkI7b0JBQ3ZDLGNBQWMsRUFBRSxDQUFDLHVCQUF1QixDQUFDO2lCQUMxQzs4QkFPUSxZQUFZO3NCQURsQixNQUFNO3VCQUFDLGdCQUFnQjtnQkFRUixNQUFNO3NCQURyQixZQUFZO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBpbmplY3QsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTG9hZGluZ1NwaW5uZXJEaXJlY3RpdmUgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY29tcG9uZW50cy9sb2FkaW5nLXNwaW5uZXInO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi9hdXRoLnNlcnZpY2UnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdbb2R4QnV0dG9uXVtvZHhBdXRoU2lnbk91dF0nLFxuICBob3N0RGlyZWN0aXZlczogW0xvYWRpbmdTcGlubmVyRGlyZWN0aXZlXSxcbn0pXG5leHBvcnQgY2xhc3MgU2lnbk91dERpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBwcml2YXRlIHJlYWRvbmx5IGF1dGhTZXJ2aWNlID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBsb2FkaW5nU3Bpbm5lckRpcmVjdGl2ZSA9IGluamVjdChMb2FkaW5nU3Bpbm5lckRpcmVjdGl2ZSwgeyBzZWxmOiB0cnVlIH0pO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LXJlbmFtZVxuICBAT3V0cHV0KCdvZHhBdXRoU2lnbk91dCcpXG4gIHB1YmxpYyBhZnRlclNpZ25PdXQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmxvYWRpbmdTcGlubmVyRGlyZWN0aXZlLmF1dG9Db2xvciA9IHRydWU7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gIHByb3RlY3RlZCBhc3luYyBzaWduSW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5sb2FkaW5nU3Bpbm5lckRpcmVjdGl2ZS5pc0xvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMuYXV0aFNlcnZpY2Uuc2lnbk91dCgpO1xuICAgIHRoaXMuYWZ0ZXJTaWduT3V0LmVtaXQoKTtcbiAgfVxufVxuIl19
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbi1vdXQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYXV0aC9zcmMvbGliL2RpcmVjdGl2ZXMvc2lnbi1vdXQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDbEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7OztBQU85RCxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsbUJBQW1CO0lBTHpEOztRQU1FLDREQUE0RDtRQUVyRCxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7S0FPaEQ7SUFKb0IsV0FBVztRQUM1QixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDM0IsQ0FBQzs7NkdBVFUsZ0JBQWdCO2lHQUFoQixnQkFBZ0I7MkZBQWhCLGdCQUFnQjtrQkFMNUIsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLDZCQUE2QjtvQkFDdkMsY0FBYyxFQUFFLENBQUMsdUJBQXVCLENBQUM7aUJBQzFDOzhCQUlRLFlBQVk7c0JBRGxCLE1BQU07dUJBQUMsZ0JBQWdCO2dCQUlMLFdBQVc7c0JBRDdCLFlBQVk7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTG9hZGluZ1NwaW5uZXJEaXJlY3RpdmUgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY29tcG9uZW50cy9sb2FkaW5nLXNwaW5uZXInO1xuaW1wb3J0IHsgQXV0aEFjdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4vYXV0aC1hY3Rpb24uZGlyZWN0aXZlJztcblxuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnW29keEJ1dHRvbl1bb2R4QXV0aFNpZ25PdXRdJyxcbiAgaG9zdERpcmVjdGl2ZXM6IFtMb2FkaW5nU3Bpbm5lckRpcmVjdGl2ZV0sXG59KVxuZXhwb3J0IGNsYXNzIFNpZ25PdXREaXJlY3RpdmUgZXh0ZW5kcyBBdXRoQWN0aW9uRGlyZWN0aXZlIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtcmVuYW1lXG4gIEBPdXRwdXQoJ29keEF1dGhTaWduT3V0JylcbiAgcHVibGljIGFmdGVyU2lnbk91dCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gIHByb3RlY3RlZCBvdmVycmlkZSBoYW5kbGVDbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLnNpZ25PdXQoKTtcbiAgICB0aGlzLmFmdGVyU2lnbk91dC5uZXh0KCk7XG4gIH1cbn1cbiJdfQ==
@@ -1,12 +1,12 @@
1
- export function createInititals(value) {
1
+ export function createInitials(value) {
2
2
  if (!value)
3
3
  return '';
4
4
  const parts = value.trim().split(' ');
5
5
  return parts.reduce((initials, curr, index) => {
6
6
  if (index === 0 || index === parts.length - 1) {
7
- initials = `${initials}${curr.charAt(0).toUpperCase()}`;
7
+ initials += curr[0].toUpperCase();
8
8
  }
9
9
  return initials;
10
10
  }, '');
11
11
  }
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWluaXRpdGFscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2F1dGgvc3JjL2xpYi9oZWxwZXJzL2NyZWF0ZS1pbml0aXRhbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLGVBQWUsQ0FBQyxLQUFxQjtJQUNuRCxJQUFJLENBQUMsS0FBSztRQUFFLE9BQU8sRUFBRSxDQUFDO0lBQ3RCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFdEMsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtRQUM1QyxJQUFJLEtBQUssS0FBSyxDQUFDLElBQUksS0FBSyxLQUFLLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzdDLFFBQVEsR0FBRyxHQUFHLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7U0FDekQ7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDVCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUluaXRpdGFscyh2YWx1ZT86IHN0cmluZyB8IG51bGwpOiBzdHJpbmcge1xuICBpZiAoIXZhbHVlKSByZXR1cm4gJyc7XG4gIGNvbnN0IHBhcnRzID0gdmFsdWUudHJpbSgpLnNwbGl0KCcgJyk7XG5cbiAgcmV0dXJuIHBhcnRzLnJlZHVjZSgoaW5pdGlhbHMsIGN1cnIsIGluZGV4KSA9PiB7XG4gICAgaWYgKGluZGV4ID09PSAwIHx8IGluZGV4ID09PSBwYXJ0cy5sZW5ndGggLSAxKSB7XG4gICAgICBpbml0aWFscyA9IGAke2luaXRpYWxzfSR7Y3Vyci5jaGFyQXQoMCkudG9VcHBlckNhc2UoKX1gO1xuICAgIH1cbiAgICByZXR1cm4gaW5pdGlhbHM7XG4gIH0sICcnKTtcbn1cbiJdfQ==
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWluaXRpdGFscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2F1dGgvc3JjL2xpYi9oZWxwZXJzL2NyZWF0ZS1pbml0aXRhbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLGNBQWMsQ0FBQyxLQUFxQjtJQUNsRCxJQUFJLENBQUMsS0FBSztRQUFFLE9BQU8sRUFBRSxDQUFDO0lBQ3RCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFdEMsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtRQUM1QyxJQUFJLEtBQUssS0FBSyxDQUFDLElBQUksS0FBSyxLQUFLLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzdDLFFBQVEsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDbkM7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDVCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUluaXRpYWxzKHZhbHVlPzogc3RyaW5nIHwgbnVsbCk6IHN0cmluZyB7XG4gIGlmICghdmFsdWUpIHJldHVybiAnJztcbiAgY29uc3QgcGFydHMgPSB2YWx1ZS50cmltKCkuc3BsaXQoJyAnKTtcblxuICByZXR1cm4gcGFydHMucmVkdWNlKChpbml0aWFscywgY3VyciwgaW5kZXgpID0+IHtcbiAgICBpZiAoaW5kZXggPT09IDAgfHwgaW5kZXggPT09IHBhcnRzLmxlbmd0aCAtIDEpIHtcbiAgICAgIGluaXRpYWxzICs9IGN1cnJbMF0udG9VcHBlckNhc2UoKTtcbiAgICB9XG4gICAgcmV0dXJuIGluaXRpYWxzO1xuICB9LCAnJyk7XG59XG4iXX0=
@@ -1,3 +1,4 @@
1
1
  export * from './create-inititals';
2
- export * from './parse-identity-claims';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3NyYy9saWIvaGVscGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMseUJBQXlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NyZWF0ZS1pbml0aXRhbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9wYXJzZS1pZGVudGl0eS1jbGFpbXMnO1xuIl19
2
+ export * from './resolve-email';
3
+ export * from './resolve-username';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3NyYy9saWIvaGVscGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY3JlYXRlLWluaXRpdGFscyc7XG5leHBvcnQgKiBmcm9tICcuL3Jlc29sdmUtZW1haWwnO1xuZXhwb3J0ICogZnJvbSAnLi9yZXNvbHZlLXVzZXJuYW1lJztcbiJdfQ==
@@ -0,0 +1,14 @@
1
+ import { isString } from '@odx/angular/utils';
2
+ export function resolveEmail(claims) {
3
+ if (isString(claims['email'])) {
4
+ return claims['email'];
5
+ }
6
+ if (isString(claims['email_address'])) {
7
+ return claims['email_address'];
8
+ }
9
+ if (Array.isArray(claims['emails']) && isString(claims['emails'][0])) {
10
+ return claims['emails'][0];
11
+ }
12
+ return '';
13
+ }
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZS1lbWFpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2F1dGgvc3JjL2xpYi9oZWxwZXJzL3Jlc29sdmUtZW1haWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTlDLE1BQU0sVUFBVSxZQUFZLENBQUMsTUFBaUM7SUFDNUQsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUU7UUFDN0IsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7S0FDeEI7SUFDRCxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsRUFBRTtRQUNyQyxPQUFPLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztLQUNoQztJQUNELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDcEUsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDNUI7SUFDRCxPQUFPLEVBQUUsQ0FBQztBQUNaLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1N0cmluZyB9IGZyb20gJ0BvZHgvYW5ndWxhci91dGlscyc7XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlRW1haWwoY2xhaW1zOiBPZHhBdXRoLlJhd0lkZW50aXR5Q2xhaW1zKTogc3RyaW5nIHtcbiAgaWYgKGlzU3RyaW5nKGNsYWltc1snZW1haWwnXSkpIHtcbiAgICByZXR1cm4gY2xhaW1zWydlbWFpbCddO1xuICB9XG4gIGlmIChpc1N0cmluZyhjbGFpbXNbJ2VtYWlsX2FkZHJlc3MnXSkpIHtcbiAgICByZXR1cm4gY2xhaW1zWydlbWFpbF9hZGRyZXNzJ107XG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkoY2xhaW1zWydlbWFpbHMnXSkgJiYgaXNTdHJpbmcoY2xhaW1zWydlbWFpbHMnXVswXSkpIHtcbiAgICByZXR1cm4gY2xhaW1zWydlbWFpbHMnXVswXTtcbiAgfVxuICByZXR1cm4gJyc7XG59XG4iXX0=
@@ -0,0 +1,14 @@
1
+ import { isString } from '@odx/angular/utils';
2
+ export function resolveUsername(claims) {
3
+ if (isString(claims['firstname']) && isString(claims['lastname'])) {
4
+ return `${claims['firstname']} ${claims['lastname']}`;
5
+ }
6
+ if (isString(claims['displayname'])) {
7
+ return claims['displayname'];
8
+ }
9
+ if (isString(claims['name'])) {
10
+ return claims['name'];
11
+ }
12
+ return '';
13
+ }
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZS11c2VybmFtZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2F1dGgvc3JjL2xpYi9oZWxwZXJzL3Jlc29sdmUtdXNlcm5hbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTlDLE1BQU0sVUFBVSxlQUFlLENBQUMsTUFBaUM7SUFDL0QsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFO1FBQ2pFLE9BQU8sR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7S0FDdkQ7SUFDRCxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRTtRQUNuQyxPQUFPLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztLQUM5QjtJQUNELElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFO1FBQzVCLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQ3ZCO0lBQ0QsT0FBTyxFQUFFLENBQUM7QUFDWixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNTdHJpbmcgfSBmcm9tICdAb2R4L2FuZ3VsYXIvdXRpbHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVVzZXJuYW1lKGNsYWltczogT2R4QXV0aC5SYXdJZGVudGl0eUNsYWltcyk6IHN0cmluZyB7XG4gIGlmIChpc1N0cmluZyhjbGFpbXNbJ2ZpcnN0bmFtZSddKSAmJiBpc1N0cmluZyhjbGFpbXNbJ2xhc3RuYW1lJ10pKSB7XG4gICAgcmV0dXJuIGAke2NsYWltc1snZmlyc3RuYW1lJ119ICR7Y2xhaW1zWydsYXN0bmFtZSddfWA7XG4gIH1cbiAgaWYgKGlzU3RyaW5nKGNsYWltc1snZGlzcGxheW5hbWUnXSkpIHtcbiAgICByZXR1cm4gY2xhaW1zWydkaXNwbGF5bmFtZSddO1xuICB9XG4gIGlmIChpc1N0cmluZyhjbGFpbXNbJ25hbWUnXSkpIHtcbiAgICByZXR1cm4gY2xhaW1zWyduYW1lJ107XG4gIH1cbiAgcmV0dXJuICcnO1xufVxuIl19
@@ -0,0 +1,34 @@
1
+ import { inject, Injectable, InjectionToken } from '@angular/core';
2
+ import { WindowRef } from '@odx/angular';
3
+ import * as i0 from "@angular/core";
4
+ export const ODX_AUTH_HTTP_CACHE_STORAGE = new InjectionToken('@odx/auth::AuthHttpCacheStorage', {
5
+ providedIn: 'root',
6
+ factory: () => inject(WindowRef).nativeWindow.caches,
7
+ });
8
+ export class AuthHttpCache {
9
+ constructor() {
10
+ this.cacheStorage = inject(ODX_AUTH_HTTP_CACHE_STORAGE);
11
+ }
12
+ async delete(request) {
13
+ const cache = await this.cacheStorage.open(AuthHttpCache.CACHE_KEY);
14
+ return cache.delete(request);
15
+ }
16
+ async request(request) {
17
+ const cache = await this.cacheStorage.open(AuthHttpCache.CACHE_KEY);
18
+ try {
19
+ await cache.add(request);
20
+ }
21
+ catch {
22
+ // ignore request errors
23
+ }
24
+ return cache.match(request, { ignoreVary: true, ignoreSearch: true }).then((res) => res?.json() ?? null);
25
+ }
26
+ }
27
+ AuthHttpCache.CACHE_KEY = '@odx/auth/http-cache';
28
+ AuthHttpCache.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AuthHttpCache, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
29
+ AuthHttpCache.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AuthHttpCache, providedIn: 'root' });
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AuthHttpCache, decorators: [{
31
+ type: Injectable,
32
+ args: [{ providedIn: 'root' }]
33
+ }] });
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1odHRwLWNhY2hlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYXV0aC9zcmMvbGliL21vZGVscy9hdXRoLWh0dHAtY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBRXpDLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLElBQUksY0FBYyxDQUFlLGlDQUFpQyxFQUFFO0lBQzdHLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU07Q0FDckQsQ0FBQyxDQUFDO0FBR0gsTUFBTSxPQUFPLGFBQWE7SUFEMUI7UUFHbUIsaUJBQVksR0FBRyxNQUFNLENBQUMsMkJBQTJCLENBQUMsQ0FBQztLQWtCckU7SUFoQlEsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUEwQjtRQUM1QyxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVwRSxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVNLEtBQUssQ0FBQyxPQUFPLENBQUksT0FBMEI7UUFDaEQsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDcEUsSUFBSTtZQUNGLE1BQU0sS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUMxQjtRQUFDLE1BQU07WUFDTix3QkFBd0I7U0FDekI7UUFFRCxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsQ0FBQztJQUMzRyxDQUFDOztBQWxCdUIsdUJBQVMsR0FBRyxzQkFBc0IsQ0FBQzswR0FEaEQsYUFBYTs4R0FBYixhQUFhLGNBREEsTUFBTTsyRkFDbkIsYUFBYTtrQkFEekIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBXaW5kb3dSZWYgfSBmcm9tICdAb2R4L2FuZ3VsYXInO1xuXG5leHBvcnQgY29uc3QgT0RYX0FVVEhfSFRUUF9DQUNIRV9TVE9SQUdFID0gbmV3IEluamVjdGlvblRva2VuPENhY2hlU3RvcmFnZT4oJ0BvZHgvYXV0aDo6QXV0aEh0dHBDYWNoZVN0b3JhZ2UnLCB7XG4gIHByb3ZpZGVkSW46ICdyb290JyxcbiAgZmFjdG9yeTogKCkgPT4gaW5qZWN0KFdpbmRvd1JlZikubmF0aXZlV2luZG93LmNhY2hlcyxcbn0pO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEF1dGhIdHRwQ2FjaGUge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBDQUNIRV9LRVkgPSAnQG9keC9hdXRoL2h0dHAtY2FjaGUnO1xuICBwcml2YXRlIHJlYWRvbmx5IGNhY2hlU3RvcmFnZSA9IGluamVjdChPRFhfQVVUSF9IVFRQX0NBQ0hFX1NUT1JBR0UpO1xuXG4gIHB1YmxpYyBhc3luYyBkZWxldGUocmVxdWVzdDogUmVxdWVzdEluZm8gfCBVUkwpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBjYWNoZSA9IGF3YWl0IHRoaXMuY2FjaGVTdG9yYWdlLm9wZW4oQXV0aEh0dHBDYWNoZS5DQUNIRV9LRVkpO1xuXG4gICAgcmV0dXJuIGNhY2hlLmRlbGV0ZShyZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyByZXF1ZXN0PFQ+KHJlcXVlc3Q6IFJlcXVlc3RJbmZvIHwgVVJMKTogUHJvbWlzZTxUIHwgbnVsbD4ge1xuICAgIGNvbnN0IGNhY2hlID0gYXdhaXQgdGhpcy5jYWNoZVN0b3JhZ2Uub3BlbihBdXRoSHR0cENhY2hlLkNBQ0hFX0tFWSk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGNhY2hlLmFkZChyZXF1ZXN0KTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIGlnbm9yZSByZXF1ZXN0IGVycm9yc1xuICAgIH1cblxuICAgIHJldHVybiBjYWNoZS5tYXRjaChyZXF1ZXN0LCB7IGlnbm9yZVZhcnk6IHRydWUsIGlnbm9yZVNlYXJjaDogdHJ1ZSB9KS50aGVuKChyZXMpID0+IHJlcz8uanNvbigpID8/IG51bGwpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,29 @@
1
+ import { inject, Injectable } from '@angular/core';
2
+ import { deepmerge } from 'deepmerge-ts';
3
+ import { BehaviorSubject, combineLatest, distinctUntilChanged, filter, map, of, share, switchMap, take, tap } from 'rxjs';
4
+ import { ODX_AUTH_PLUGINS } from '../auth.config';
5
+ import * as i0 from "@angular/core";
6
+ export class AuthPluginManager {
7
+ constructor() {
8
+ this.plugins = inject(ODX_AUTH_PLUGINS);
9
+ this.result$$ = new BehaviorSubject(null);
10
+ this.pluginsReady$ = this.result$$.pipe(filter(Boolean), map(Boolean), distinctUntilChanged(), share());
11
+ this.pluginsLoading$ = this.result$$.pipe(map((result) => !result), distinctUntilChanged(), share());
12
+ }
13
+ runPlugins(authService) {
14
+ if (this.plugins.length < 1) {
15
+ return of({});
16
+ }
17
+ return authService.isInitialized$.pipe(switchMap(() => combineLatest(this.plugins.map((plugin) => plugin(authService)))), map((results) => deepmerge(...results)), tap((result) => this.result$$.next(result)), take(1));
18
+ }
19
+ getResult() {
20
+ return this.result$$.getValue() ?? {};
21
+ }
22
+ }
23
+ AuthPluginManager.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AuthPluginManager, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
24
+ AuthPluginManager.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AuthPluginManager, providedIn: 'root' });
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AuthPluginManager, decorators: [{
26
+ type: Injectable,
27
+ args: [{ providedIn: 'root' }]
28
+ }] });
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1wbHVnaW4tbWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2F1dGgvc3JjL2xpYi9tb2RlbHMvYXV0aC1wbHVnaW4tbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQWMsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0SSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFPbEQsTUFBTSxPQUFPLGlCQUFpQjtJQUQ5QjtRQUVtQixZQUFPLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDbkMsYUFBUSxHQUFHLElBQUksZUFBZSxDQUFrQyxJQUFJLENBQUMsQ0FBQztRQUV2RSxrQkFBYSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsb0JBQW9CLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ25HLG9CQUFlLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2xELEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFDeEIsb0JBQW9CLEVBQUUsRUFDdEIsS0FBSyxFQUFFLENBQ1IsQ0FBQztLQWlCSDtJQWZRLFVBQVUsQ0FBQyxXQUF3QjtRQUN4QyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUMzQixPQUFPLEVBQUUsQ0FBQyxFQUE4QixDQUFDLENBQUM7U0FDM0M7UUFDRCxPQUFPLFdBQVcsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUNwQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ2pGLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsT0FBTyxDQUE2QixDQUFDLEVBQ25FLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFDM0MsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUNSLENBQUM7SUFDSixDQUFDO0lBRU0sU0FBUztRQUNkLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsSUFBSyxFQUErQixDQUFDO0lBQ3RFLENBQUM7OzhHQXpCVSxpQkFBaUI7a0hBQWpCLGlCQUFpQixjQURKLE1BQU07MkZBQ25CLGlCQUFpQjtrQkFEN0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGRlZXBtZXJnZSB9IGZyb20gJ2RlZXBtZXJnZS10cyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHNoYXJlLCBzd2l0Y2hNYXAsIHRha2UsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgT0RYX0FVVEhfUExVR0lOUyB9IGZyb20gJy4uL2F1dGguY29uZmlnJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vYXV0aC5zZXJ2aWNlJztcblxuZXhwb3J0IHR5cGUgQXV0aFBsdWdpbiA9IChhdXRoU2VydmljZTogQXV0aFNlcnZpY2UpID0+IE9ic2VydmFibGU8UGFydGlhbDxPZHhBdXRoLkF1dGhQbHVnaW5SZXN1bHQ+PjtcbmV4cG9ydCB0eXBlIEF1dGhQbHVnaW5GYWN0b3J5ID0gKCkgPT4gQXV0aFBsdWdpbjtcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBBdXRoUGx1Z2luTWFuYWdlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGx1Z2lucyA9IGluamVjdChPRFhfQVVUSF9QTFVHSU5TKTtcbiAgcHJpdmF0ZSByZWFkb25seSByZXN1bHQkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8T2R4QXV0aC5BdXRoUGx1Z2luUmVzdWx0IHwgbnVsbD4obnVsbCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHBsdWdpbnNSZWFkeSQgPSB0aGlzLnJlc3VsdCQkLnBpcGUoZmlsdGVyKEJvb2xlYW4pLCBtYXAoQm9vbGVhbiksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHNoYXJlKCkpO1xuICBwdWJsaWMgcmVhZG9ubHkgcGx1Z2luc0xvYWRpbmckID0gdGhpcy5yZXN1bHQkJC5waXBlKFxuICAgIG1hcCgocmVzdWx0KSA9PiAhcmVzdWx0KSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlKCksXG4gICk7XG5cbiAgcHVibGljIHJ1blBsdWdpbnMoYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlKTogT2JzZXJ2YWJsZTxPZHhBdXRoLkF1dGhQbHVnaW5SZXN1bHQ+IHtcbiAgICBpZiAodGhpcy5wbHVnaW5zLmxlbmd0aCA8IDEpIHtcbiAgICAgIHJldHVybiBvZih7fSBhcyBPZHhBdXRoLkF1dGhQbHVnaW5SZXN1bHQpO1xuICAgIH1cbiAgICByZXR1cm4gYXV0aFNlcnZpY2UuaXNJbml0aWFsaXplZCQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiBjb21iaW5lTGF0ZXN0KHRoaXMucGx1Z2lucy5tYXAoKHBsdWdpbikgPT4gcGx1Z2luKGF1dGhTZXJ2aWNlKSkpKSxcbiAgICAgIG1hcCgocmVzdWx0cykgPT4gZGVlcG1lcmdlKC4uLnJlc3VsdHMpIGFzIE9keEF1dGguQXV0aFBsdWdpblJlc3VsdCksXG4gICAgICB0YXAoKHJlc3VsdCkgPT4gdGhpcy5yZXN1bHQkJC5uZXh0KHJlc3VsdCkpLFxuICAgICAgdGFrZSgxKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldFJlc3VsdCgpOiBPZHhBdXRoLkF1dGhQbHVnaW5SZXN1bHQge1xuICAgIHJldHVybiB0aGlzLnJlc3VsdCQkLmdldFZhbHVlKCkgPz8gKHt9IGFzIE9keEF1dGguQXV0aFBsdWdpblJlc3VsdCk7XG4gIH1cbn1cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aG9yaXplZC1oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYXV0aC9zcmMvbGliL21vZGVscy9hdXRob3JpemVkLWhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL2F1dGguc2VydmljZSc7XG5cbmV4cG9ydCB0eXBlIEF1dGhvcml6ZWRIYW5kbGVyV2l0aFJvdXRlciA9IChpZGVudGl0eUNsYWltczogT2R4QXV0aC5JZGVudGl5Q2xhaW1zIHwgbnVsbCwgcm91dGVyOiBSb3V0ZXIsIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSkgPT4gYm9vbGVhbjtcbmV4cG9ydCB0eXBlIEF1dGhvcml6ZWRIYW5kbGVyID0gKGlkZW50aXR5Q2xhaW1zOiBPZHhBdXRoLklkZW50aXlDbGFpbXMgfCBudWxsLCBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UpID0+IGJvb2xlYW47XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aG9yaXplZC1oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYXV0aC9zcmMvbGliL21vZGVscy9hdXRob3JpemVkLWhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL2F1dGguc2VydmljZSc7XG5cbmV4cG9ydCB0eXBlIEF1dGhvcml6ZWRIYW5kbGVyID0gKGlkZW50aXR5Q2xhaW1zOiBPZHhBdXRoLklkZW50aXlDbGFpbXMgfCBudWxsLCBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsIHJvdXRlcj86IFJvdXRlciB8IG51bGwpID0+IGJvb2xlYW47XG4iXX0=
@@ -1,3 +1,5 @@
1
1
  export * from './auth-environment';
2
+ export * from './auth-http-cache';
3
+ export * from './auth-plugin-manager';
2
4
  export * from './authorized-handler';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3NyYy9saWIvbW9kZWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYXV0aC1lbnZpcm9ubWVudCc7XG5leHBvcnQgKiBmcm9tICcuL2F1dGhvcml6ZWQtaGFuZGxlcic7XG4iXX0=
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3NyYy9saWIvbW9kZWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsc0JBQXNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2F1dGgtZW52aXJvbm1lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9hdXRoLWh0dHAtY2FjaGUnO1xuZXhwb3J0ICogZnJvbSAnLi9hdXRoLXBsdWdpbi1tYW5hZ2VyJztcbmV4cG9ydCAqIGZyb20gJy4vYXV0aG9yaXplZC1oYW5kbGVyJztcbiJdfQ==
@@ -0,0 +1,13 @@
1
+ import { of } from 'rxjs';
2
+ import { injectAuthConfig } from '../auth.config';
3
+ export const coreIdentityPlugin = () => {
4
+ const { resolveEmail, resolveUsername, createInitials } = injectAuthConfig();
5
+ return (authService) => {
6
+ const claims = authService.getRawIdentityClaims();
7
+ if (!claims)
8
+ return of({});
9
+ const username = resolveUsername(claims);
10
+ return of({ email: resolveEmail(claims), username, initials: createInitials(username) });
11
+ };
12
+ };
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1pZGVudGl0eS5wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3NyYy9saWIvcGx1Z2lucy9jb3JlLWlkZW50aXR5LnBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBY2xELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFzQixHQUFHLEVBQUU7SUFDeEQsTUFBTSxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztJQUU3RSxPQUFPLENBQUMsV0FBVyxFQUFFLEVBQUU7UUFDckIsTUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDbEQsSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMzQixNQUFNLFFBQVEsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFekMsT0FBTyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsY0FBYyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzRixDQUFDLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgaW5qZWN0QXV0aENvbmZpZyB9IGZyb20gJy4uL2F1dGguY29uZmlnJztcbmltcG9ydCB7IEF1dGhQbHVnaW5GYWN0b3J5IH0gZnJvbSAnLi4vbW9kZWxzJztcblxuZGVjbGFyZSBnbG9iYWwge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5hbWVzcGFjZVxuICBuYW1lc3BhY2UgT2R4QXV0aCB7XG4gICAgaW50ZXJmYWNlIEF1dGhQbHVnaW5SZXN1bHQge1xuICAgICAgZW1haWw6IHN0cmluZztcbiAgICAgIGluaXRpYWxzOiBzdHJpbmc7XG4gICAgICB1c2VybmFtZTogc3RyaW5nO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY29uc3QgY29yZUlkZW50aXR5UGx1Z2luOiBBdXRoUGx1Z2luRmFjdG9yeSA9ICgpID0+IHtcbiAgY29uc3QgeyByZXNvbHZlRW1haWwsIHJlc29sdmVVc2VybmFtZSwgY3JlYXRlSW5pdGlhbHMgfSA9IGluamVjdEF1dGhDb25maWcoKTtcblxuICByZXR1cm4gKGF1dGhTZXJ2aWNlKSA9PiB7XG4gICAgY29uc3QgY2xhaW1zID0gYXV0aFNlcnZpY2UuZ2V0UmF3SWRlbnRpdHlDbGFpbXMoKTtcbiAgICBpZiAoIWNsYWltcykgcmV0dXJuIG9mKHt9KTtcbiAgICBjb25zdCB1c2VybmFtZSA9IHJlc29sdmVVc2VybmFtZShjbGFpbXMpO1xuXG4gICAgcmV0dXJuIG9mKHsgZW1haWw6IHJlc29sdmVFbWFpbChjbGFpbXMpLCB1c2VybmFtZSwgaW5pdGlhbHM6IGNyZWF0ZUluaXRpYWxzKHVzZXJuYW1lKSB9KTtcbiAgfTtcbn07XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from './core-identity.plugin';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3NyYy9saWIvcGx1Z2lucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHdCQUF3QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb3JlLWlkZW50aXR5LnBsdWdpbic7XG4iXX0=
@@ -0,0 +1,8 @@
1
+ export * from './lib/dtos';
2
+ export * from './lib/helpers';
3
+ export * from './lib/service-connect-rights.directive';
4
+ export * from './lib/service-connect-rights.guard';
5
+ export * from './lib/service-connect-rights.plugin';
6
+ export * from './lib/service-connect.config';
7
+ export * from './lib/service-connect.typings';
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3BsdWdpbnMvc2VydmljZS1jb25uZWN0L3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsK0JBQStCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYi9kdG9zJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2hlbHBlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZS1jb25uZWN0LXJpZ2h0cy5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZS1jb25uZWN0LXJpZ2h0cy5ndWFyZCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlLWNvbm5lY3QtcmlnaHRzLnBsdWdpbic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlLWNvbm5lY3QuY29uZmlnJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2UtY29ubmVjdC50eXBpbmdzJztcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXNlcnZpY2UtY29ubmVjdC1yaWdodHMtcmVzcG9uc2UuZHRvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYXV0aC9wbHVnaW5zL3NlcnZpY2UtY29ubmVjdC9zcmMvbGliL2R0b3MvZ2V0LXNlcnZpY2UtY29ubmVjdC1yaWdodHMtcmVzcG9uc2UuZHRvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEdldFNlcnZpY2VDb25uZWN0UmlnaHRzUmVzcG9uc2VEdG8ge1xuICByaWdodHM6IHN0cmluZ1tdO1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ export * from './get-service-connect-rights-response.dto';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3BsdWdpbnMvc2VydmljZS1jb25uZWN0L3NyYy9saWIvZHRvcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDJDQUEyQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9nZXQtc2VydmljZS1jb25uZWN0LXJpZ2h0cy1yZXNwb25zZS5kdG8nO1xuIl19
@@ -0,0 +1,9 @@
1
+ import { buildUrl, isString } from '@odx/angular/utils';
2
+ import { ServiceConnnectEnvironments } from '../service-connect.config';
3
+ export function buildServiceConnectUrl(environment, ...endpoints) {
4
+ if (isString(environment)) {
5
+ return buildUrl(ServiceConnnectEnvironments[environment], ...endpoints);
6
+ }
7
+ return buildUrl(environment.custom, ...endpoints);
8
+ }
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtc2VydmljZS1jb25uZWN0LXVybC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2F1dGgvcGx1Z2lucy9zZXJ2aWNlLWNvbm5lY3Qvc3JjL2xpYi9oZWxwZXJzL2J1aWxkLXNlcnZpY2UtY29ubmVjdC11cmwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV4RCxPQUFPLEVBQTZCLDJCQUEyQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFbkcsTUFBTSxVQUFVLHNCQUFzQixDQUFDLFdBQXdELEVBQUUsR0FBRyxTQUFtQjtJQUNySCxJQUFJLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRTtRQUN6QixPQUFPLFFBQVEsQ0FBQywyQkFBMkIsQ0FBQyxXQUFXLENBQUMsRUFBRSxHQUFHLFNBQVMsQ0FBQyxDQUFDO0tBQ3pFO0lBQ0QsT0FBTyxRQUFRLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxHQUFHLFNBQVMsQ0FBQyxDQUFDO0FBQ3BELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBidWlsZFVybCwgaXNTdHJpbmcgfSBmcm9tICdAb2R4L2FuZ3VsYXIvdXRpbHMnO1xuaW1wb3J0IHsgQXV0aEVudmlyb25tZW50IH0gZnJvbSAnQG9keC9hdXRoJztcbmltcG9ydCB7IFNlcnZpY2VDb25uZWN0RW52aXJvbm1lbnQsIFNlcnZpY2VDb25ubmVjdEVudmlyb25tZW50cyB9IGZyb20gJy4uL3NlcnZpY2UtY29ubmVjdC5jb25maWcnO1xuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRTZXJ2aWNlQ29ubmVjdFVybChlbnZpcm9ubWVudDogU2VydmljZUNvbm5lY3RFbnZpcm9ubWVudCB8IEF1dGhFbnZpcm9ubWVudCwgLi4uZW5kcG9pbnRzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gIGlmIChpc1N0cmluZyhlbnZpcm9ubWVudCkpIHtcbiAgICByZXR1cm4gYnVpbGRVcmwoU2VydmljZUNvbm5uZWN0RW52aXJvbm1lbnRzW2Vudmlyb25tZW50XSwgLi4uZW5kcG9pbnRzKTtcbiAgfVxuICByZXR1cm4gYnVpbGRVcmwoZW52aXJvbm1lbnQuY3VzdG9tLCAuLi5lbmRwb2ludHMpO1xufVxuIl19
@@ -0,0 +1,5 @@
1
+ import { hasRolesOrRights } from './has-roles-or-rights';
2
+ export function hasRolesOrRightsHandler(rolesOrRights) {
3
+ return (claims) => hasRolesOrRights(claims?.rights ?? [], rolesOrRights);
4
+ }
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzLXJvbGVzLW9yLXJpZ2h0cy1oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYXV0aC9wbHVnaW5zL3NlcnZpY2UtY29ubmVjdC9zcmMvbGliL2hlbHBlcnMvaGFzLXJvbGVzLW9yLXJpZ2h0cy1oYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBaUIsTUFBTSx1QkFBdUIsQ0FBQztBQUV4RSxNQUFNLFVBQVUsdUJBQXVCLENBQUMsYUFBNEI7SUFDbEUsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLE1BQU0sSUFBSSxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUM7QUFDM0UsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF1dGhvcml6ZWRIYW5kbGVyIH0gZnJvbSAnQG9keC9hdXRoJztcbmltcG9ydCB7IGhhc1JvbGVzT3JSaWdodHMsIFJvbGVzT3JSaWdodHMgfSBmcm9tICcuL2hhcy1yb2xlcy1vci1yaWdodHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gaGFzUm9sZXNPclJpZ2h0c0hhbmRsZXIocm9sZXNPclJpZ2h0czogUm9sZXNPclJpZ2h0cyk6IEF1dGhvcml6ZWRIYW5kbGVyIHtcbiAgcmV0dXJuIChjbGFpbXMpID0+IGhhc1JvbGVzT3JSaWdodHMoY2xhaW1zPy5yaWdodHMgPz8gW10sIHJvbGVzT3JSaWdodHMpO1xufVxuIl19
@@ -0,0 +1,5 @@
1
+ import '../service-connect.typings';
2
+ export function hasRolesOrRights(userRights, rolesOrRights) {
3
+ return rolesOrRights.some((rights) => (Array.isArray(rights) ? rights : [rights])?.every((right) => userRights.includes(right)));
4
+ }
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzLXJvbGVzLW9yLXJpZ2h0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2F1dGgvcGx1Z2lucy9zZXJ2aWNlLWNvbm5lY3Qvc3JjL2xpYi9oZWxwZXJzL2hhcy1yb2xlcy1vci1yaWdodHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyw0QkFBNEIsQ0FBQztBQU1wQyxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsVUFBbUIsRUFBRSxhQUE0QjtJQUNoRixPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuSSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICcuLi9zZXJ2aWNlLWNvbm5lY3QudHlwaW5ncyc7XG5cbmV4cG9ydCB0eXBlIFJpZ2h0ID0gc3RyaW5nIHwgbnVtYmVyO1xuZXhwb3J0IHR5cGUgUm9sZSA9IFJpZ2h0W107XG5leHBvcnQgdHlwZSBSb2xlc09yUmlnaHRzID0gQXJyYXk8Um9sZSB8IFJpZ2h0PjtcblxuZXhwb3J0IGZ1bmN0aW9uIGhhc1JvbGVzT3JSaWdodHModXNlclJpZ2h0czogUmlnaHRbXSwgcm9sZXNPclJpZ2h0czogUm9sZXNPclJpZ2h0cyk6IGJvb2xlYW4ge1xuICByZXR1cm4gcm9sZXNPclJpZ2h0cy5zb21lKChyaWdodHMpID0+IChBcnJheS5pc0FycmF5KHJpZ2h0cykgPyByaWdodHMgOiBbcmlnaHRzXSk/LmV2ZXJ5KChyaWdodCkgPT4gdXNlclJpZ2h0cy5pbmNsdWRlcyhyaWdodCkpKTtcbn1cbiJdfQ==
@@ -0,0 +1,4 @@
1
+ export * from './build-service-connect-url';
2
+ export * from './has-roles-or-rights';
3
+ export * from './has-roles-or-rights-handler';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3BsdWdpbnMvc2VydmljZS1jb25uZWN0L3NyYy9saWIvaGVscGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYywrQkFBK0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYnVpbGQtc2VydmljZS1jb25uZWN0LXVybCc7XG5leHBvcnQgKiBmcm9tICcuL2hhcy1yb2xlcy1vci1yaWdodHMnO1xuZXhwb3J0ICogZnJvbSAnLi9oYXMtcm9sZXMtb3ItcmlnaHRzLWhhbmRsZXInO1xuIl19
@@ -0,0 +1,32 @@
1
+ import { Directive, inject, Input } from '@angular/core';
2
+ import { AuthDirective } from '@odx/auth';
3
+ import { hasRolesOrRightsHandler } from './helpers';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@odx/auth";
6
+ export class ServiceConnectRightsDirective {
7
+ constructor() {
8
+ this.authDirective = inject(AuthDirective, { host: true });
9
+ }
10
+ set rolesOrRights(value) {
11
+ this.authDirective.authorizationHandler = hasRolesOrRightsHandler(value ?? []);
12
+ }
13
+ }
14
+ ServiceConnectRightsDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ServiceConnectRightsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
15
+ ServiceConnectRightsDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: ServiceConnectRightsDirective, isStandalone: true, selector: "ng-template[odxAuthServiceConnectRights]", inputs: { rolesOrRights: ["odxAuthServiceConnectRights", "rolesOrRights"] }, hostDirectives: [{ directive: i1.AuthDirective, inputs: ["odxAuthElse", "odxAuthServiceConnectRightsElse"] }], ngImport: i0 });
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ServiceConnectRightsDirective, decorators: [{
17
+ type: Directive,
18
+ args: [{
19
+ standalone: true,
20
+ selector: 'ng-template[odxAuthServiceConnectRights]',
21
+ hostDirectives: [
22
+ {
23
+ directive: AuthDirective,
24
+ inputs: ['odxAuthElse:odxAuthServiceConnectRightsElse'],
25
+ },
26
+ ],
27
+ }]
28
+ }], propDecorators: { rolesOrRights: [{
29
+ type: Input,
30
+ args: ['odxAuthServiceConnectRights']
31
+ }] } });
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1jb25uZWN0LXJpZ2h0cy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3BsdWdpbnMvc2VydmljZS1jb25uZWN0L3NyYy9saWIvc2VydmljZS1jb25uZWN0LXJpZ2h0cy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDMUMsT0FBTyxFQUFFLHVCQUF1QixFQUFpQixNQUFNLFdBQVcsQ0FBQzs7O0FBWW5FLE1BQU0sT0FBTyw2QkFBNkI7SUFWMUM7UUFXbUIsa0JBQWEsR0FBRyxNQUFNLENBQUMsYUFBYSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7S0FNeEU7SUFKQyxJQUNXLGFBQWEsQ0FBQyxLQUF1QztRQUM5RCxJQUFJLENBQUMsYUFBYSxDQUFDLG9CQUFvQixHQUFHLHVCQUF1QixDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNqRixDQUFDOzswSEFOVSw2QkFBNkI7OEdBQTdCLDZCQUE2QjsyRkFBN0IsNkJBQTZCO2tCQVZ6QyxTQUFTO21CQUFDO29CQUNULFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsMENBQTBDO29CQUNwRCxjQUFjLEVBQUU7d0JBQ2Q7NEJBQ0UsU0FBUyxFQUFFLGFBQWE7NEJBQ3hCLE1BQU0sRUFBRSxDQUFDLDZDQUE2QyxDQUFDO3lCQUN4RDtxQkFDRjtpQkFDRjs4QkFLWSxhQUFhO3NCQUR2QixLQUFLO3VCQUFDLDZCQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgaW5qZWN0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXV0aERpcmVjdGl2ZSB9IGZyb20gJ0BvZHgvYXV0aCc7XG5pbXBvcnQgeyBoYXNSb2xlc09yUmlnaHRzSGFuZGxlciwgUm9sZXNPclJpZ2h0cyB9IGZyb20gJy4vaGVscGVycyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ25nLXRlbXBsYXRlW29keEF1dGhTZXJ2aWNlQ29ubmVjdFJpZ2h0c10nLFxuICBob3N0RGlyZWN0aXZlczogW1xuICAgIHtcbiAgICAgIGRpcmVjdGl2ZTogQXV0aERpcmVjdGl2ZSxcbiAgICAgIGlucHV0czogWydvZHhBdXRoRWxzZTpvZHhBdXRoU2VydmljZUNvbm5lY3RSaWdodHNFbHNlJ10sXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2VydmljZUNvbm5lY3RSaWdodHNEaXJlY3RpdmUge1xuICBwcml2YXRlIHJlYWRvbmx5IGF1dGhEaXJlY3RpdmUgPSBpbmplY3QoQXV0aERpcmVjdGl2ZSwgeyBob3N0OiB0cnVlIH0pO1xuXG4gIEBJbnB1dCgnb2R4QXV0aFNlcnZpY2VDb25uZWN0UmlnaHRzJylcbiAgcHVibGljIHNldCByb2xlc09yUmlnaHRzKHZhbHVlOiBSb2xlc09yUmlnaHRzIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuYXV0aERpcmVjdGl2ZS5hdXRob3JpemF0aW9uSGFuZGxlciA9IGhhc1JvbGVzT3JSaWdodHNIYW5kbGVyKHZhbHVlID8/IFtdKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,7 @@
1
+ import { authGuard } from '@odx/auth';
2
+ import { hasRolesOrRightsHandler } from './helpers';
3
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
4
+ export function serviceConnectRightsGuard(rolesOrRights, redirectTo) {
5
+ return authGuard(hasRolesOrRightsHandler(rolesOrRights), redirectTo);
6
+ }
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1jb25uZWN0LXJpZ2h0cy5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2F1dGgvcGx1Z2lucy9zZXJ2aWNlLWNvbm5lY3Qvc3JjL2xpYi9zZXJ2aWNlLWNvbm5lY3QtcmlnaHRzLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdEMsT0FBTyxFQUFFLHVCQUF1QixFQUFpQixNQUFNLFdBQVcsQ0FBQztBQUVuRSw4REFBOEQ7QUFDOUQsTUFBTSxVQUFVLHlCQUF5QixDQUFDLGFBQTRCLEVBQUUsVUFBMkI7SUFDakcsT0FBTyxTQUFTLENBQUMsdUJBQXVCLENBQUMsYUFBYSxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDdkUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENhbkFjdGl2YXRlRm4gfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgYXV0aEd1YXJkIH0gZnJvbSAnQG9keC9hdXRoJztcbmltcG9ydCB7IGhhc1JvbGVzT3JSaWdodHNIYW5kbGVyLCBSb2xlc09yUmlnaHRzIH0gZnJvbSAnLi9oZWxwZXJzJztcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCBmdW5jdGlvbiBzZXJ2aWNlQ29ubmVjdFJpZ2h0c0d1YXJkKHJvbGVzT3JSaWdodHM6IFJvbGVzT3JSaWdodHMsIHJlZGlyZWN0VG8/OiBzdHJpbmcgfCBhbnlbXSk6IENhbkFjdGl2YXRlRm4ge1xuICByZXR1cm4gYXV0aEd1YXJkKGhhc1JvbGVzT3JSaWdodHNIYW5kbGVyKHJvbGVzT3JSaWdodHMpLCByZWRpcmVjdFRvKTtcbn1cbiJdfQ==
@@ -0,0 +1,29 @@
1
+ import { inject } from '@angular/core';
2
+ import { AuthHttpCache, injectAuthConfig } from '@odx/auth';
3
+ import { defer } from 'rxjs';
4
+ import { buildServiceConnectUrl } from './helpers';
5
+ import { ServiceConnectEndpoints } from './service-connect.config';
6
+ import './service-connect.typings';
7
+ export const serviceConnectRightsPlugin = (options) => {
8
+ return () => {
9
+ const { environment } = injectAuthConfig();
10
+ const httpCache = inject(AuthHttpCache);
11
+ const url = buildServiceConnectUrl(options?.environment ?? environment, ServiceConnectEndpoints.userRights);
12
+ const plugin = (authService) => defer(async () => {
13
+ const request = new Request(url);
14
+ const token = authService.getAccessToken();
15
+ let result = null;
16
+ if (token) {
17
+ request.headers.set('Authorization', `Bearer ${token}`);
18
+ result = await httpCache.request(request).then((res) => ({ rights: res?.rights ?? [] }));
19
+ }
20
+ else if (!authService.isAuthenticated()) {
21
+ await httpCache.delete(request);
22
+ }
23
+ return result ?? { rights: [] };
24
+ });
25
+ // inject(AuthConfig).scopes?.push(ServiceConnectScopes.RIGHTS); // TODO: enable scope when supported by the CSI team
26
+ return plugin;
27
+ };
28
+ };
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1jb25uZWN0LXJpZ2h0cy5wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3BsdWdpbnMvc2VydmljZS1jb25uZWN0L3NyYy9saWIvc2VydmljZS1jb25uZWN0LXJpZ2h0cy5wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsYUFBYSxFQUFpQyxnQkFBZ0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUMzRixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTdCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNuRCxPQUFPLEVBQUUsdUJBQXVCLEVBQTZCLE1BQU0sMEJBQTBCLENBQUM7QUFDOUYsT0FBTywyQkFBMkIsQ0FBQztBQU1uQyxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxDQUFDLE9BQTJDLEVBQXFCLEVBQUU7SUFDM0csT0FBTyxHQUFHLEVBQUU7UUFDVixNQUFNLEVBQUUsV0FBVyxFQUFFLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztRQUMzQyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDeEMsTUFBTSxHQUFHLEdBQUcsc0JBQXNCLENBQUMsT0FBTyxFQUFFLFdBQVcsSUFBSSxXQUFXLEVBQUUsdUJBQXVCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFNUcsTUFBTSxNQUFNLEdBQWUsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUN6QyxLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDZixNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNqQyxNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDM0MsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQ2xCLElBQUksS0FBSyxFQUFFO2dCQUNULE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxVQUFVLEtBQUssRUFBRSxDQUFDLENBQUM7Z0JBRXhELE1BQU0sR0FBRyxNQUFNLFNBQVMsQ0FBQyxPQUFPLENBQXFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUM5SDtpQkFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFBRSxFQUFFO2dCQUN6QyxNQUFNLFNBQVMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDakM7WUFFRCxPQUFPLE1BQU0sSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUNsQyxDQUFDLENBQUMsQ0FBQztRQUNMLHFIQUFxSDtRQUVySCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEF1dGhIdHRwQ2FjaGUsIEF1dGhQbHVnaW4sIEF1dGhQbHVnaW5GYWN0b3J5LCBpbmplY3RBdXRoQ29uZmlnIH0gZnJvbSAnQG9keC9hdXRoJztcbmltcG9ydCB7IGRlZmVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBHZXRTZXJ2aWNlQ29ubmVjdFJpZ2h0c1Jlc3BvbnNlRHRvIH0gZnJvbSAnLi9kdG9zJztcbmltcG9ydCB7IGJ1aWxkU2VydmljZUNvbm5lY3RVcmwgfSBmcm9tICcuL2hlbHBlcnMnO1xuaW1wb3J0IHsgU2VydmljZUNvbm5lY3RFbmRwb2ludHMsIFNlcnZpY2VDb25uZWN0RW52aXJvbm1lbnQgfSBmcm9tICcuL3NlcnZpY2UtY29ubmVjdC5jb25maWcnO1xuaW1wb3J0ICcuL3NlcnZpY2UtY29ubmVjdC50eXBpbmdzJztcblxuZXhwb3J0IGludGVyZmFjZSBTZXJ2aWNlQ29ubmVjdFJpZ2h0c1BsdWdpbk9wdGlvbnMge1xuICBlbnZpcm9ubWVudD86IFNlcnZpY2VDb25uZWN0RW52aXJvbm1lbnQ7XG59XG5cbmV4cG9ydCBjb25zdCBzZXJ2aWNlQ29ubmVjdFJpZ2h0c1BsdWdpbiA9IChvcHRpb25zPzogU2VydmljZUNvbm5lY3RSaWdodHNQbHVnaW5PcHRpb25zKTogQXV0aFBsdWdpbkZhY3RvcnkgPT4ge1xuICByZXR1cm4gKCkgPT4ge1xuICAgIGNvbnN0IHsgZW52aXJvbm1lbnQgfSA9IGluamVjdEF1dGhDb25maWcoKTtcbiAgICBjb25zdCBodHRwQ2FjaGUgPSBpbmplY3QoQXV0aEh0dHBDYWNoZSk7XG4gICAgY29uc3QgdXJsID0gYnVpbGRTZXJ2aWNlQ29ubmVjdFVybChvcHRpb25zPy5lbnZpcm9ubWVudCA/PyBlbnZpcm9ubWVudCwgU2VydmljZUNvbm5lY3RFbmRwb2ludHMudXNlclJpZ2h0cyk7XG5cbiAgICBjb25zdCBwbHVnaW46IEF1dGhQbHVnaW4gPSAoYXV0aFNlcnZpY2UpID0+XG4gICAgICBkZWZlcihhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSBuZXcgUmVxdWVzdCh1cmwpO1xuICAgICAgICBjb25zdCB0b2tlbiA9IGF1dGhTZXJ2aWNlLmdldEFjY2Vzc1Rva2VuKCk7XG4gICAgICAgIGxldCByZXN1bHQgPSBudWxsO1xuICAgICAgICBpZiAodG9rZW4pIHtcbiAgICAgICAgICByZXF1ZXN0LmhlYWRlcnMuc2V0KCdBdXRob3JpemF0aW9uJywgYEJlYXJlciAke3Rva2VufWApO1xuXG4gICAgICAgICAgcmVzdWx0ID0gYXdhaXQgaHR0cENhY2hlLnJlcXVlc3Q8R2V0U2VydmljZUNvbm5lY3RSaWdodHNSZXNwb25zZUR0bz4ocmVxdWVzdCkudGhlbigocmVzKSA9PiAoeyByaWdodHM6IHJlcz8ucmlnaHRzID8/IFtdIH0pKTtcbiAgICAgICAgfSBlbHNlIGlmICghYXV0aFNlcnZpY2UuaXNBdXRoZW50aWNhdGVkKCkpIHtcbiAgICAgICAgICBhd2FpdCBodHRwQ2FjaGUuZGVsZXRlKHJlcXVlc3QpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdCA/PyB7IHJpZ2h0czogW10gfTtcbiAgICAgIH0pO1xuICAgIC8vIGluamVjdChBdXRoQ29uZmlnKS5zY29wZXM/LnB1c2goU2VydmljZUNvbm5lY3RTY29wZXMuUklHSFRTKTsgLy8gVE9ETzogZW5hYmxlIHNjb3BlIHdoZW4gc3VwcG9ydGVkIGJ5IHRoZSBDU0kgdGVhbVxuXG4gICAgcmV0dXJuIHBsdWdpbjtcbiAgfTtcbn07XG4iXX0=
@@ -0,0 +1,14 @@
1
+ export const ServiceConnnectEnvironments = {
2
+ dev: 'https://api.test.connect.draeger.com',
3
+ stage: 'https://api.stage.connect.draeger.com',
4
+ prod: 'https://api.connect.draeger.com',
5
+ };
6
+ export const ServiceConnectScopes = {
7
+ BASE: 'dcid',
8
+ // RIGHTS: 'dcid-rights', // TODO: enable scope when supported by the CSI team
9
+ // INSTITUTION: 'dcid-instiution', // TODO: enable scope when supported by the CSI team
10
+ };
11
+ export const ServiceConnectEndpoints = {
12
+ userRights: '/users/me/rights',
13
+ };
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1jb25uZWN0LmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2F1dGgvcGx1Z2lucy9zZXJ2aWNlLWNvbm5lY3Qvc3JjL2xpYi9zZXJ2aWNlLWNvbm5lY3QuY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFvQztJQUMxRSxHQUFHLEVBQUUsc0NBQXNDO0lBQzNDLEtBQUssRUFBRSx1Q0FBdUM7SUFDOUMsSUFBSSxFQUFFLGlDQUFpQztDQUN4QyxDQUFDO0FBQ0YsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUc7SUFDbEMsSUFBSSxFQUFFLE1BQU07SUFDWiw4RUFBOEU7SUFDOUUsdUZBQXVGO0NBQ3hGLENBQUM7QUFDRixNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRztJQUNyQyxVQUFVLEVBQUUsa0JBQWtCO0NBQy9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdXRoRW52aXJvbm1lbnQgfSBmcm9tICdAb2R4L2F1dGgnO1xuXG5leHBvcnQgdHlwZSBTZXJ2aWNlQ29ubmVjdEVudmlyb25tZW50ID0geyBjdXN0b206IHN0cmluZyB9O1xuZXhwb3J0IGNvbnN0IFNlcnZpY2VDb25ubmVjdEVudmlyb25tZW50czogUmVjb3JkPEF1dGhFbnZpcm9ubWVudCwgc3RyaW5nPiA9IHtcbiAgZGV2OiAnaHR0cHM6Ly9hcGkudGVzdC5jb25uZWN0LmRyYWVnZXIuY29tJyxcbiAgc3RhZ2U6ICdodHRwczovL2FwaS5zdGFnZS5jb25uZWN0LmRyYWVnZXIuY29tJyxcbiAgcHJvZDogJ2h0dHBzOi8vYXBpLmNvbm5lY3QuZHJhZWdlci5jb20nLFxufTtcbmV4cG9ydCBjb25zdCBTZXJ2aWNlQ29ubmVjdFNjb3BlcyA9IHtcbiAgQkFTRTogJ2RjaWQnLFxuICAvLyBSSUdIVFM6ICdkY2lkLXJpZ2h0cycsIC8vIFRPRE86IGVuYWJsZSBzY29wZSB3aGVuIHN1cHBvcnRlZCBieSB0aGUgQ1NJIHRlYW1cbiAgLy8gSU5TVElUVVRJT046ICdkY2lkLWluc3RpdXRpb24nLCAvLyBUT0RPOiBlbmFibGUgc2NvcGUgd2hlbiBzdXBwb3J0ZWQgYnkgdGhlIENTSSB0ZWFtXG59O1xuZXhwb3J0IGNvbnN0IFNlcnZpY2VDb25uZWN0RW5kcG9pbnRzID0ge1xuICB1c2VyUmlnaHRzOiAnL3VzZXJzL21lL3JpZ2h0cycsXG59O1xuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1jb25uZWN0LnR5cGluZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3BsdWdpbnMvc2VydmljZS1jb25uZWN0L3NyYy9saWIvc2VydmljZS1jb25uZWN0LnR5cGluZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJpZ2h0IH0gZnJvbSAnLi9oZWxwZXJzJztcblxuZGVjbGFyZSBnbG9iYWwge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5hbWVzcGFjZVxuICBuYW1lc3BhY2UgT2R4QXV0aCB7XG4gICAgaW50ZXJmYWNlIEF1dGhQbHVnaW5SZXN1bHQge1xuICAgICAgcmlnaHRzOiBSaWdodFtdO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQge307XG4iXX0=
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2R4LWF1dGgtcGx1Z2lucy1zZXJ2aWNlLWNvbm5lY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3BsdWdpbnMvc2VydmljZS1jb25uZWN0L3NyYy9vZHgtYXV0aC1wbHVnaW5zLXNlcnZpY2UtY29ubmVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
@@ -0,0 +1,99 @@
1
+ import { isString, buildUrl } from '@odx/angular/utils';
2
+ import * as i0 from '@angular/core';
3
+ import { inject, Directive, Input } from '@angular/core';
4
+ import * as i1 from '@odx/auth';
5
+ import { AuthDirective, authGuard, injectAuthConfig, AuthHttpCache } from '@odx/auth';
6
+ import { __awaiter } from 'tslib';
7
+ import { defer } from 'rxjs';
8
+
9
+ const ServiceConnnectEnvironments = {
10
+ dev: 'https://api.test.connect.draeger.com',
11
+ stage: 'https://api.stage.connect.draeger.com',
12
+ prod: 'https://api.connect.draeger.com',
13
+ };
14
+ const ServiceConnectScopes = {
15
+ BASE: 'dcid',
16
+ // RIGHTS: 'dcid-rights', // TODO: enable scope when supported by the CSI team
17
+ // INSTITUTION: 'dcid-instiution', // TODO: enable scope when supported by the CSI team
18
+ };
19
+ const ServiceConnectEndpoints = {
20
+ userRights: '/users/me/rights',
21
+ };
22
+
23
+ function buildServiceConnectUrl(environment, ...endpoints) {
24
+ if (isString(environment)) {
25
+ return buildUrl(ServiceConnnectEnvironments[environment], ...endpoints);
26
+ }
27
+ return buildUrl(environment.custom, ...endpoints);
28
+ }
29
+
30
+ function hasRolesOrRights(userRights, rolesOrRights) {
31
+ return rolesOrRights.some((rights) => { var _a; return (_a = (Array.isArray(rights) ? rights : [rights])) === null || _a === void 0 ? void 0 : _a.every((right) => userRights.includes(right)); });
32
+ }
33
+
34
+ function hasRolesOrRightsHandler(rolesOrRights) {
35
+ return (claims) => { var _a; return hasRolesOrRights((_a = claims === null || claims === void 0 ? void 0 : claims.rights) !== null && _a !== void 0 ? _a : [], rolesOrRights); };
36
+ }
37
+
38
+ class ServiceConnectRightsDirective {
39
+ constructor() {
40
+ this.authDirective = inject(AuthDirective, { host: true });
41
+ }
42
+ set rolesOrRights(value) {
43
+ this.authDirective.authorizationHandler = hasRolesOrRightsHandler(value !== null && value !== void 0 ? value : []);
44
+ }
45
+ }
46
+ ServiceConnectRightsDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ServiceConnectRightsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
47
+ ServiceConnectRightsDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: ServiceConnectRightsDirective, isStandalone: true, selector: "ng-template[odxAuthServiceConnectRights]", inputs: { rolesOrRights: ["odxAuthServiceConnectRights", "rolesOrRights"] }, hostDirectives: [{ directive: i1.AuthDirective, inputs: ["odxAuthElse", "odxAuthServiceConnectRightsElse"] }], ngImport: i0 });
48
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ServiceConnectRightsDirective, decorators: [{
49
+ type: Directive,
50
+ args: [{
51
+ standalone: true,
52
+ selector: 'ng-template[odxAuthServiceConnectRights]',
53
+ hostDirectives: [
54
+ {
55
+ directive: AuthDirective,
56
+ inputs: ['odxAuthElse:odxAuthServiceConnectRightsElse'],
57
+ },
58
+ ],
59
+ }]
60
+ }], propDecorators: { rolesOrRights: [{
61
+ type: Input,
62
+ args: ['odxAuthServiceConnectRights']
63
+ }] } });
64
+
65
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
66
+ function serviceConnectRightsGuard(rolesOrRights, redirectTo) {
67
+ return authGuard(hasRolesOrRightsHandler(rolesOrRights), redirectTo);
68
+ }
69
+
70
+ const serviceConnectRightsPlugin = (options) => {
71
+ return () => {
72
+ var _a;
73
+ const { environment } = injectAuthConfig();
74
+ const httpCache = inject(AuthHttpCache);
75
+ const url = buildServiceConnectUrl((_a = options === null || options === void 0 ? void 0 : options.environment) !== null && _a !== void 0 ? _a : environment, ServiceConnectEndpoints.userRights);
76
+ const plugin = (authService) => defer(() => __awaiter(void 0, void 0, void 0, function* () {
77
+ const request = new Request(url);
78
+ const token = authService.getAccessToken();
79
+ let result = null;
80
+ if (token) {
81
+ request.headers.set('Authorization', `Bearer ${token}`);
82
+ result = yield httpCache.request(request).then((res) => { var _a; return ({ rights: (_a = res === null || res === void 0 ? void 0 : res.rights) !== null && _a !== void 0 ? _a : [] }); });
83
+ }
84
+ else if (!authService.isAuthenticated()) {
85
+ yield httpCache.delete(request);
86
+ }
87
+ return result !== null && result !== void 0 ? result : { rights: [] };
88
+ }));
89
+ // inject(AuthConfig).scopes?.push(ServiceConnectScopes.RIGHTS); // TODO: enable scope when supported by the CSI team
90
+ return plugin;
91
+ };
92
+ };
93
+
94
+ /**
95
+ * Generated bundle index. Do not edit.
96
+ */
97
+
98
+ export { ServiceConnectEndpoints, ServiceConnectRightsDirective, ServiceConnectScopes, ServiceConnnectEnvironments, buildServiceConnectUrl, hasRolesOrRights, hasRolesOrRightsHandler, serviceConnectRightsGuard, serviceConnectRightsPlugin };
99
+ //# sourceMappingURL=odx-auth-plugins-service-connect.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"odx-auth-plugins-service-connect.mjs","sources":["../../../../packages/auth/plugins/service-connect/src/lib/service-connect.config.ts","../../../../packages/auth/plugins/service-connect/src/lib/helpers/build-service-connect-url.ts","../../../../packages/auth/plugins/service-connect/src/lib/helpers/has-roles-or-rights.ts","../../../../packages/auth/plugins/service-connect/src/lib/helpers/has-roles-or-rights-handler.ts","../../../../packages/auth/plugins/service-connect/src/lib/service-connect-rights.directive.ts","../../../../packages/auth/plugins/service-connect/src/lib/service-connect-rights.guard.ts","../../../../packages/auth/plugins/service-connect/src/lib/service-connect-rights.plugin.ts","../../../../packages/auth/plugins/service-connect/src/odx-auth-plugins-service-connect.ts"],"sourcesContent":["import { AuthEnvironment } from '@odx/auth';\n\nexport type ServiceConnectEnvironment = { custom: string };\nexport const ServiceConnnectEnvironments: Record<AuthEnvironment, string> = {\n dev: 'https://api.test.connect.draeger.com',\n stage: 'https://api.stage.connect.draeger.com',\n prod: 'https://api.connect.draeger.com',\n};\nexport const ServiceConnectScopes = {\n BASE: 'dcid',\n // RIGHTS: 'dcid-rights', // TODO: enable scope when supported by the CSI team\n // INSTITUTION: 'dcid-instiution', // TODO: enable scope when supported by the CSI team\n};\nexport const ServiceConnectEndpoints = {\n userRights: '/users/me/rights',\n};\n","import { buildUrl, isString } from '@odx/angular/utils';\nimport { AuthEnvironment } from '@odx/auth';\nimport { ServiceConnectEnvironment, ServiceConnnectEnvironments } from '../service-connect.config';\n\nexport function buildServiceConnectUrl(environment: ServiceConnectEnvironment | AuthEnvironment, ...endpoints: string[]): string {\n if (isString(environment)) {\n return buildUrl(ServiceConnnectEnvironments[environment], ...endpoints);\n }\n return buildUrl(environment.custom, ...endpoints);\n}\n","import '../service-connect.typings';\n\nexport type Right = string | number;\nexport type Role = Right[];\nexport type RolesOrRights = Array<Role | Right>;\n\nexport function hasRolesOrRights(userRights: Right[], rolesOrRights: RolesOrRights): boolean {\n return rolesOrRights.some((rights) => (Array.isArray(rights) ? rights : [rights])?.every((right) => userRights.includes(right)));\n}\n","import { AuthorizedHandler } from '@odx/auth';\nimport { hasRolesOrRights, RolesOrRights } from './has-roles-or-rights';\n\nexport function hasRolesOrRightsHandler(rolesOrRights: RolesOrRights): AuthorizedHandler {\n return (claims) => hasRolesOrRights(claims?.rights ?? [], rolesOrRights);\n}\n","import { Directive, inject, Input } from '@angular/core';\nimport { AuthDirective } from '@odx/auth';\nimport { hasRolesOrRightsHandler, RolesOrRights } from './helpers';\n\n@Directive({\n standalone: true,\n selector: 'ng-template[odxAuthServiceConnectRights]',\n hostDirectives: [\n {\n directive: AuthDirective,\n inputs: ['odxAuthElse:odxAuthServiceConnectRightsElse'],\n },\n ],\n})\nexport class ServiceConnectRightsDirective {\n private readonly authDirective = inject(AuthDirective, { host: true });\n\n @Input('odxAuthServiceConnectRights')\n public set rolesOrRights(value: RolesOrRights | null | undefined) {\n this.authDirective.authorizationHandler = hasRolesOrRightsHandler(value ?? []);\n }\n}\n","import { CanActivateFn } from '@angular/router';\nimport { authGuard } from '@odx/auth';\nimport { hasRolesOrRightsHandler, RolesOrRights } from './helpers';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function serviceConnectRightsGuard(rolesOrRights: RolesOrRights, redirectTo?: string | any[]): CanActivateFn {\n return authGuard(hasRolesOrRightsHandler(rolesOrRights), redirectTo);\n}\n","import { inject } from '@angular/core';\nimport { AuthHttpCache, AuthPlugin, AuthPluginFactory, injectAuthConfig } from '@odx/auth';\nimport { defer } from 'rxjs';\nimport { GetServiceConnectRightsResponseDto } from './dtos';\nimport { buildServiceConnectUrl } from './helpers';\nimport { ServiceConnectEndpoints, ServiceConnectEnvironment } from './service-connect.config';\nimport './service-connect.typings';\n\nexport interface ServiceConnectRightsPluginOptions {\n environment?: ServiceConnectEnvironment;\n}\n\nexport const serviceConnectRightsPlugin = (options?: ServiceConnectRightsPluginOptions): AuthPluginFactory => {\n return () => {\n const { environment } = injectAuthConfig();\n const httpCache = inject(AuthHttpCache);\n const url = buildServiceConnectUrl(options?.environment ?? environment, ServiceConnectEndpoints.userRights);\n\n const plugin: AuthPlugin = (authService) =>\n defer(async () => {\n const request = new Request(url);\n const token = authService.getAccessToken();\n let result = null;\n if (token) {\n request.headers.set('Authorization', `Bearer ${token}`);\n\n result = await httpCache.request<GetServiceConnectRightsResponseDto>(request).then((res) => ({ rights: res?.rights ?? [] }));\n } else if (!authService.isAuthenticated()) {\n await httpCache.delete(request);\n }\n\n return result ?? { rights: [] };\n });\n // inject(AuthConfig).scopes?.push(ServiceConnectScopes.RIGHTS); // TODO: enable scope when supported by the CSI team\n\n return plugin;\n };\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}