@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.
- package/README.md +27 -1
- package/esm2020/index.mjs +2 -1
- package/esm2020/lib/auth.component.mjs +6 -5
- package/esm2020/lib/auth.config.mjs +20 -4
- package/esm2020/lib/auth.directive.mjs +2 -2
- package/esm2020/lib/auth.guard.mjs +17 -6
- package/esm2020/lib/auth.providers.mjs +7 -2
- package/esm2020/lib/auth.service.mjs +29 -15
- package/esm2020/lib/auth.typings.mjs +1 -1
- package/esm2020/lib/directives/auth-action.directive.mjs +24 -0
- package/esm2020/lib/directives/index.mjs +2 -1
- package/esm2020/lib/directives/sign-in.directive.mjs +10 -15
- package/esm2020/lib/directives/sign-out.directive.mjs +10 -15
- package/esm2020/lib/helpers/create-inititals.mjs +3 -3
- package/esm2020/lib/helpers/index.mjs +3 -2
- package/esm2020/lib/helpers/resolve-email.mjs +14 -0
- package/esm2020/lib/helpers/resolve-username.mjs +14 -0
- package/esm2020/lib/models/auth-http-cache.mjs +34 -0
- package/esm2020/lib/models/auth-plugin-manager.mjs +29 -0
- package/esm2020/lib/models/authorized-handler.mjs +1 -1
- package/esm2020/lib/models/index.mjs +3 -1
- package/esm2020/lib/plugins/core-identity.plugin.mjs +13 -0
- package/esm2020/lib/plugins/index.mjs +2 -0
- package/esm2020/plugins/service-connect/index.mjs +8 -0
- package/esm2020/plugins/service-connect/lib/dtos/get-service-connect-rights-response.dto.mjs +2 -0
- package/esm2020/plugins/service-connect/lib/dtos/index.mjs +2 -0
- package/esm2020/plugins/service-connect/lib/helpers/build-service-connect-url.mjs +9 -0
- package/esm2020/plugins/service-connect/lib/helpers/has-roles-or-rights-handler.mjs +5 -0
- package/esm2020/plugins/service-connect/lib/helpers/has-roles-or-rights.mjs +5 -0
- package/esm2020/plugins/service-connect/lib/helpers/index.mjs +4 -0
- package/esm2020/plugins/service-connect/lib/service-connect-rights.directive.mjs +32 -0
- package/esm2020/plugins/service-connect/lib/service-connect-rights.guard.mjs +7 -0
- package/esm2020/plugins/service-connect/lib/service-connect-rights.plugin.mjs +29 -0
- package/esm2020/plugins/service-connect/lib/service-connect.config.mjs +14 -0
- package/esm2020/plugins/service-connect/lib/service-connect.typings.mjs +2 -0
- package/esm2020/plugins/service-connect/odx-auth-plugins-service-connect.mjs +5 -0
- package/fesm2015/odx-auth-plugins-service-connect.mjs +99 -0
- package/fesm2015/odx-auth-plugins-service-connect.mjs.map +1 -0
- package/fesm2015/odx-auth.mjs +208 -72
- package/fesm2015/odx-auth.mjs.map +1 -1
- package/fesm2020/odx-auth-plugins-service-connect.mjs +97 -0
- package/fesm2020/odx-auth-plugins-service-connect.mjs.map +1 -0
- package/fesm2020/odx-auth.mjs +201 -71
- package/fesm2020/odx-auth.mjs.map +1 -1
- package/index.d.ts +1 -0
- package/lib/auth.component.d.ts +1 -1
- package/lib/auth.config.d.ts +12 -3
- package/lib/auth.guard.d.ts +2 -2
- package/lib/auth.service.d.ts +11 -8
- package/lib/auth.typings.d.ts +9 -1
- package/lib/directives/auth-action.directive.d.ts +12 -0
- package/lib/directives/index.d.ts +1 -0
- package/lib/directives/sign-in.directive.d.ts +4 -6
- package/lib/directives/sign-out.directive.d.ts +4 -6
- package/lib/helpers/create-inititals.d.ts +1 -1
- package/lib/helpers/index.d.ts +2 -1
- package/lib/helpers/resolve-email.d.ts +1 -0
- package/lib/helpers/resolve-username.d.ts +1 -0
- package/lib/models/auth-http-cache.d.ts +11 -0
- package/lib/models/auth-plugin-manager.d.ts +15 -0
- package/lib/models/authorized-handler.d.ts +1 -2
- package/lib/models/index.d.ts +2 -0
- package/lib/plugins/core-identity.plugin.d.ts +11 -0
- package/lib/plugins/index.d.ts +1 -0
- package/package.json +11 -2
- package/plugins/service-connect/README.md +3 -0
- package/plugins/service-connect/index.d.ts +7 -0
- package/plugins/service-connect/lib/dtos/get-service-connect-rights-response.dto.d.ts +3 -0
- package/plugins/service-connect/lib/dtos/index.d.ts +1 -0
- package/plugins/service-connect/lib/helpers/build-service-connect-url.d.ts +3 -0
- package/plugins/service-connect/lib/helpers/has-roles-or-rights-handler.d.ts +3 -0
- package/plugins/service-connect/lib/helpers/has-roles-or-rights.d.ts +5 -0
- package/plugins/service-connect/lib/helpers/index.d.ts +3 -0
- package/plugins/service-connect/lib/service-connect-rights.directive.d.ts +9 -0
- package/plugins/service-connect/lib/service-connect-rights.guard.d.ts +3 -0
- package/plugins/service-connect/lib/service-connect-rights.plugin.d.ts +7 -0
- package/plugins/service-connect/lib/service-connect.config.d.ts +11 -0
- package/plugins/service-connect/lib/service-connect.typings.d.ts +9 -0
- package/esm2020/lib/helpers/parse-identity-claims.mjs +0 -13
- package/lib/helpers/parse-identity-claims.d.ts +0 -2
|
@@ -1,26 +1,21 @@
|
|
|
1
|
-
import { Directive, EventEmitter, HostListener,
|
|
1
|
+
import { Directive, EventEmitter, HostListener, Output } from '@angular/core';
|
|
2
2
|
import { LoadingSpinnerDirective } from '@odx/angular/components/loading-spinner';
|
|
3
|
-
import {
|
|
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
|
-
|
|
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
|
-
|
|
14
|
-
this.loadingSpinnerDirective.autoColor = true;
|
|
15
|
-
}
|
|
16
|
-
async signIn() {
|
|
17
|
-
this.loadingSpinnerDirective.isLoading = true;
|
|
12
|
+
handleClick() {
|
|
18
13
|
this.authService.signIn();
|
|
19
|
-
this.afterSignIn.
|
|
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:
|
|
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": "
|
|
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
|
-
}],
|
|
29
|
+
}], handleClick: [{
|
|
35
30
|
type: HostListener,
|
|
36
31
|
args: ['click']
|
|
37
32
|
}] } });
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbi1pbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3NyYy9saWIvZGlyZWN0aXZlcy9zaWduLWluLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7QUFPOUQsTUFBTSxPQUFPLGVBQWdCLFNBQVEsbUJBQW1CO0lBTHhEOztRQU1FLDREQUE0RDtRQUVyRCxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7S0FPL0M7SUFKb0IsV0FBVztRQUM1QixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDMUIsQ0FBQzs7NEdBVFUsZUFBZTtnR0FBZixlQUFlOzJGQUFmLGVBQWU7a0JBTDNCLFNBQVM7bUJBQUM7b0JBQ1QsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSw0QkFBNEI7b0JBQ3RDLGNBQWMsRUFBRSxDQUFDLHVCQUF1QixDQUFDO2lCQUMxQzs4QkFJUSxXQUFXO3NCQURqQixNQUFNO3VCQUFDLGVBQWU7Z0JBSUosV0FBVztzQkFEN0IsWUFBWTt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMb2FkaW5nU3Bpbm5lckRpcmVjdGl2ZSB9IGZyb20gJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL2xvYWRpbmctc3Bpbm5lcic7XG5pbXBvcnQgeyBBdXRoQWN0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi9hdXRoLWFjdGlvbi5kaXJlY3RpdmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdbb2R4QnV0dG9uXVtvZHhBdXRoU2lnbkluXScsXG4gIGhvc3REaXJlY3RpdmVzOiBbTG9hZGluZ1NwaW5uZXJEaXJlY3RpdmVdLFxufSlcbmV4cG9ydCBjbGFzcyBTaWduSW5EaXJlY3RpdmUgZXh0ZW5kcyBBdXRoQWN0aW9uRGlyZWN0aXZlIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtcmVuYW1lXG4gIEBPdXRwdXQoJ29keEF1dGhTaWduSW4nKVxuICBwdWJsaWMgYWZ0ZXJTaWduSW4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgaGFuZGxlQ2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy5hdXRoU2VydmljZS5zaWduSW4oKTtcbiAgICB0aGlzLmFmdGVyU2lnbkluLm5leHQoKTtcbiAgfVxufVxuIl19
|
|
@@ -1,26 +1,21 @@
|
|
|
1
|
-
import { Directive, EventEmitter, HostListener,
|
|
1
|
+
import { Directive, EventEmitter, HostListener, Output } from '@angular/core';
|
|
2
2
|
import { LoadingSpinnerDirective } from '@odx/angular/components/loading-spinner';
|
|
3
|
-
import {
|
|
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
|
-
|
|
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
|
-
|
|
14
|
-
this.loadingSpinnerDirective.autoColor = true;
|
|
15
|
-
}
|
|
16
|
-
async signIn() {
|
|
17
|
-
this.loadingSpinnerDirective.isLoading = true;
|
|
12
|
+
handleClick() {
|
|
18
13
|
this.authService.signOut();
|
|
19
|
-
this.afterSignOut.
|
|
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:
|
|
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": "
|
|
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
|
-
}],
|
|
29
|
+
}], handleClick: [{
|
|
35
30
|
type: HostListener,
|
|
36
31
|
args: ['click']
|
|
37
32
|
}] } });
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbi1vdXQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYXV0aC9zcmMvbGliL2RpcmVjdGl2ZXMvc2lnbi1vdXQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDbEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7OztBQU85RCxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsbUJBQW1CO0lBTHpEOztRQU1FLDREQUE0RDtRQUVyRCxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7S0FPaEQ7SUFKb0IsV0FBVztRQUM1QixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDM0IsQ0FBQzs7NkdBVFUsZ0JBQWdCO2lHQUFoQixnQkFBZ0I7MkZBQWhCLGdCQUFnQjtrQkFMNUIsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLDZCQUE2QjtvQkFDdkMsY0FBYyxFQUFFLENBQUMsdUJBQXVCLENBQUM7aUJBQzFDOzhCQUlRLFlBQVk7c0JBRGxCLE1BQU07dUJBQUMsZ0JBQWdCO2dCQUlMLFdBQVc7c0JBRDdCLFlBQVk7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTG9hZGluZ1NwaW5uZXJEaXJlY3RpdmUgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY29tcG9uZW50cy9sb2FkaW5nLXNwaW5uZXInO1xuaW1wb3J0IHsgQXV0aEFjdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4vYXV0aC1hY3Rpb24uZGlyZWN0aXZlJztcblxuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnW29keEJ1dHRvbl1bb2R4QXV0aFNpZ25PdXRdJyxcbiAgaG9zdERpcmVjdGl2ZXM6IFtMb2FkaW5nU3Bpbm5lckRpcmVjdGl2ZV0sXG59KVxuZXhwb3J0IGNsYXNzIFNpZ25PdXREaXJlY3RpdmUgZXh0ZW5kcyBBdXRoQWN0aW9uRGlyZWN0aXZlIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtcmVuYW1lXG4gIEBPdXRwdXQoJ29keEF1dGhTaWduT3V0JylcbiAgcHVibGljIGFmdGVyU2lnbk91dCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gIHByb3RlY3RlZCBvdmVycmlkZSBoYW5kbGVDbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLnNpZ25PdXQoKTtcbiAgICB0aGlzLmFmdGVyU2lnbk91dC5uZXh0KCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
export function
|
|
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
|
|
7
|
+
initials += curr[0].toUpperCase();
|
|
8
8
|
}
|
|
9
9
|
return initials;
|
|
10
10
|
}, '');
|
|
11
11
|
}
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWluaXRpdGFscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2F1dGgvc3JjL2xpYi9oZWxwZXJzL2NyZWF0ZS1pbml0aXRhbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLGNBQWMsQ0FBQyxLQUFxQjtJQUNsRCxJQUFJLENBQUMsS0FBSztRQUFFLE9BQU8sRUFBRSxDQUFDO0lBQ3RCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFdEMsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtRQUM1QyxJQUFJLEtBQUssS0FBSyxDQUFDLElBQUksS0FBSyxLQUFLLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzdDLFFBQVEsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDbkM7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDVCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUluaXRpYWxzKHZhbHVlPzogc3RyaW5nIHwgbnVsbCk6IHN0cmluZyB7XG4gIGlmICghdmFsdWUpIHJldHVybiAnJztcbiAgY29uc3QgcGFydHMgPSB2YWx1ZS50cmltKCkuc3BsaXQoJyAnKTtcblxuICByZXR1cm4gcGFydHMucmVkdWNlKChpbml0aWFscywgY3VyciwgaW5kZXgpID0+IHtcbiAgICBpZiAoaW5kZXggPT09IDAgfHwgaW5kZXggPT09IHBhcnRzLmxlbmd0aCAtIDEpIHtcbiAgICAgIGluaXRpYWxzICs9IGN1cnJbMF0udG9VcHBlckNhc2UoKTtcbiAgICB9XG4gICAgcmV0dXJuIGluaXRpYWxzO1xuICB9LCAnJyk7XG59XG4iXX0=
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export * from './create-inititals';
|
|
2
|
-
export * from './
|
|
3
|
-
|
|
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,
|
|
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,
|
|
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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"}
|