@cccteam/ccc-lib 0.0.10 → 0.0.11
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/cccteam-ccc-lib-0.0.10.tgz +0 -0
- package/cccteam-ccc-lib-0.0.11.tgz +0 -0
- package/fesm2022/cccteam-ccc-lib.mjs +31 -31
- package/fesm2022/cccteam-ccc-lib.mjs.map +1 -1
- package/package.json +4 -6
- package/esm2022/cccteam-ccc-lib.mjs +0 -5
- package/esm2022/lib/auth/directives/has-permission.directive.mjs +0 -44
- package/esm2022/lib/auth/forms/ccc-field/ccc-field.component.mjs +0 -77
- package/esm2022/lib/auth/forms/form-helpers.mjs +0 -34
- package/esm2022/lib/auth/guards/authentication.guard.mjs +0 -38
- package/esm2022/lib/auth/guards/authorization.guard.mjs +0 -17
- package/esm2022/lib/auth/services/auth.service.mjs +0 -49
- package/esm2022/lib/auth/services/request-options.mjs +0 -12
- package/esm2022/lib/auth/state/auth.actions.mjs +0 -64
- package/esm2022/lib/auth/state/auth.state.mjs +0 -105
- package/esm2022/lib/types/base/tokens.mjs +0 -7
- package/esm2022/lib/types/notification-message.mjs +0 -7
- package/esm2022/lib/types/permissions.mjs +0 -3
- package/esm2022/lib/types/session-info.mjs +0 -2
- package/esm2022/lib/ui/components/alert/alert.component.mjs +0 -41
- package/esm2022/lib/ui/components/sidenav/sidenav.component.mjs +0 -63
- package/esm2022/lib/ui/interceptor/api.interceptor.mjs +0 -43
- package/esm2022/lib/ui/services/notification.service.mjs +0 -50
- package/esm2022/lib/ui/state/core.actions.mjs +0 -49
- package/esm2022/lib/ui/state/core.state.mjs +0 -95
- package/esm2022/public-api.mjs +0 -34
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import { Component, computed, inject, input, signal } from '@angular/core';
|
|
2
|
-
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
3
|
-
import { MatInputModule } from '@angular/material/input';
|
|
4
|
-
import { Store } from '@ngxs/store';
|
|
5
|
-
import { ReadPermission, UpdatePermission } from '../../../types/permissions';
|
|
6
|
-
import { AuthState } from '../../state/auth.state';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@angular/material/form-field";
|
|
9
|
-
import * as i2 from "@angular/material/input";
|
|
10
|
-
export var InputMode;
|
|
11
|
-
(function (InputMode) {
|
|
12
|
-
InputMode["Read"] = "read";
|
|
13
|
-
InputMode["Edit"] = "edit";
|
|
14
|
-
})(InputMode || (InputMode = {}));
|
|
15
|
-
export class CccInputFieldComponent {
|
|
16
|
-
store = inject(Store);
|
|
17
|
-
className = input();
|
|
18
|
-
mode = input.required();
|
|
19
|
-
resource = input.required();
|
|
20
|
-
domain = input.required();
|
|
21
|
-
value = input.required();
|
|
22
|
-
name = input.required();
|
|
23
|
-
inputMode = InputMode;
|
|
24
|
-
canEdit = signal(false);
|
|
25
|
-
canEditSelector = false;
|
|
26
|
-
canRead = signal(false);
|
|
27
|
-
canReadSelector = false;
|
|
28
|
-
ngOnInit() {
|
|
29
|
-
this.canEditSelector = this.store.selectSnapshot(AuthState.hasPermission)({
|
|
30
|
-
resource: this.resource(),
|
|
31
|
-
permission: ReadPermission,
|
|
32
|
-
domain: this.domain(),
|
|
33
|
-
});
|
|
34
|
-
this.canReadSelector = this.store.selectSnapshot(AuthState.hasPermission)({
|
|
35
|
-
resource: this.resource(),
|
|
36
|
-
permission: UpdatePermission,
|
|
37
|
-
domain: this.domain(),
|
|
38
|
-
});
|
|
39
|
-
this.canRead = computed(() => {
|
|
40
|
-
const res = this.resource();
|
|
41
|
-
if (!res) {
|
|
42
|
-
return false;
|
|
43
|
-
}
|
|
44
|
-
if (AuthState.requiresPermission(this.resource(), ReadPermission)) {
|
|
45
|
-
return this.canReadSelector;
|
|
46
|
-
}
|
|
47
|
-
return false;
|
|
48
|
-
});
|
|
49
|
-
this.canEdit = computed(() => {
|
|
50
|
-
const res = this.resource();
|
|
51
|
-
if (!res) {
|
|
52
|
-
return false;
|
|
53
|
-
}
|
|
54
|
-
if (AuthState.requiresPermission(this.resource(), UpdatePermission)) {
|
|
55
|
-
return this.canEditSelector;
|
|
56
|
-
}
|
|
57
|
-
return false;
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: CccInputFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
61
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.7", type: CccInputFieldComponent, isStandalone: true, selector: "ccc-input-field", inputs: { className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: true, transformFunction: null }, resource: { classPropertyName: "resource", publicName: "resource", isSignal: true, isRequired: true, transformFunction: null }, domain: { classPropertyName: "domain", publicName: "domain", isSignal: true, isRequired: true, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
|
|
62
|
-
<mat-form-field [class]="className()">
|
|
63
|
-
<mat-label>{{ name() }}</mat-label>
|
|
64
|
-
<input matInput [disabled]="mode() === inputMode.Edit && canEdit()" [value]="value()" />
|
|
65
|
-
</mat-form-field>
|
|
66
|
-
`, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }] });
|
|
67
|
-
}
|
|
68
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: CccInputFieldComponent, decorators: [{
|
|
69
|
-
type: Component,
|
|
70
|
-
args: [{ selector: 'ccc-input-field', standalone: true, imports: [MatFormFieldModule, MatInputModule], template: `
|
|
71
|
-
<mat-form-field [class]="className()">
|
|
72
|
-
<mat-label>{{ name() }}</mat-label>
|
|
73
|
-
<input matInput [disabled]="mode() === inputMode.Edit && canEdit()" [value]="value()" />
|
|
74
|
-
</mat-form-field>
|
|
75
|
-
` }]
|
|
76
|
-
}] });
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2NjLWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjYy1saWIvc3JjL2xpYi9hdXRoL2Zvcm1zL2NjYy1maWVsZC9jY2MtZmllbGQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBVSxjQUFjLEVBQVksZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7QUFFbkQsTUFBTSxDQUFOLElBQVksU0FHWDtBQUhELFdBQVksU0FBUztJQUNuQiwwQkFBYSxDQUFBO0lBQ2IsMEJBQWEsQ0FBQTtBQUNmLENBQUMsRUFIVyxTQUFTLEtBQVQsU0FBUyxRQUdwQjtBQWNELE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QixTQUFTLEdBQUcsS0FBSyxFQUFFLENBQUM7SUFDcEIsSUFBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQWEsQ0FBQztJQUNuQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBWSxDQUFDO0lBQ3RDLE1BQU0sR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7SUFDbEMsS0FBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN6QixJQUFJLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO0lBRWhDLFNBQVMsR0FBRyxTQUFTLENBQUM7SUFFdEIsT0FBTyxHQUFvQixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekMsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUV4QixPQUFPLEdBQW9CLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QyxlQUFlLEdBQUcsS0FBSyxDQUFDO0lBRXhCLFFBQVE7UUFDTixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUN4RSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUN6QixVQUFVLEVBQUUsY0FBYztZQUMxQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRTtTQUN0QixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUN4RSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUN6QixVQUFVLEVBQUUsZ0JBQWdCO1lBQzVCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFO1NBQ3RCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUMzQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNULE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztZQUNELElBQUksU0FBUyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxjQUFjLENBQUMsRUFBRSxDQUFDO2dCQUNsRSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7WUFDOUIsQ0FBQztZQUNELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDM0IsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDVCxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7WUFDRCxJQUFJLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO2dCQUNwRSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7WUFDOUIsQ0FBQztZQUNELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO3VHQWxEVSxzQkFBc0I7MkZBQXRCLHNCQUFzQixvekJBUnZCOzs7OztHQUtULHlFQU5TLGtCQUFrQiwwU0FBRSxjQUFjOzsyRkFTakMsc0JBQXNCO2tCQVpsQyxTQUFTOytCQUNFLGlCQUFpQixjQUNmLElBQUksV0FDUCxDQUFDLGtCQUFrQixFQUFFLGNBQWMsQ0FBQyxZQUNuQzs7Ozs7R0FLVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCwgaW5wdXQsIE9uSW5pdCwgc2lnbmFsLCBTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IERvbWFpbiwgUmVhZFBlcm1pc3Npb24sIFJlc291cmNlLCBVcGRhdGVQZXJtaXNzaW9uIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvcGVybWlzc2lvbnMnO1xuaW1wb3J0IHsgQXV0aFN0YXRlIH0gZnJvbSAnLi4vLi4vc3RhdGUvYXV0aC5zdGF0ZSc7XG5cbmV4cG9ydCBlbnVtIElucHV0TW9kZSB7XG4gIFJlYWQgPSAncmVhZCcsXG4gIEVkaXQgPSAnZWRpdCcsXG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjYy1pbnB1dC1maWVsZCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtNYXRGb3JtRmllbGRNb2R1bGUsIE1hdElucHV0TW9kdWxlXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bWF0LWZvcm0tZmllbGQgW2NsYXNzXT1cImNsYXNzTmFtZSgpXCI+XG4gICAgICA8bWF0LWxhYmVsPnt7IG5hbWUoKSB9fTwvbWF0LWxhYmVsPlxuICAgICAgPGlucHV0IG1hdElucHV0IFtkaXNhYmxlZF09XCJtb2RlKCkgPT09IGlucHV0TW9kZS5FZGl0ICYmIGNhbkVkaXQoKVwiIFt2YWx1ZV09XCJ2YWx1ZSgpXCIgLz5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICBgLFxuICBzdHlsZVVybDogJy4vY2NjLWZpZWxkLmNvbXBvbmVudC5zY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgQ2NjSW5wdXRGaWVsZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHN0b3JlID0gaW5qZWN0KFN0b3JlKTtcbiAgY2xhc3NOYW1lID0gaW5wdXQoKTtcbiAgbW9kZSA9IGlucHV0LnJlcXVpcmVkPElucHV0TW9kZT4oKTtcbiAgcmVzb3VyY2UgPSBpbnB1dC5yZXF1aXJlZDxSZXNvdXJjZT4oKTtcbiAgZG9tYWluID0gaW5wdXQucmVxdWlyZWQ8RG9tYWluPigpO1xuICB2YWx1ZSA9IGlucHV0LnJlcXVpcmVkKCk7XG4gIG5hbWUgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG5cbiAgaW5wdXRNb2RlID0gSW5wdXRNb2RlO1xuXG4gIGNhbkVkaXQ6IFNpZ25hbDxib29sZWFuPiA9IHNpZ25hbChmYWxzZSk7XG4gIGNhbkVkaXRTZWxlY3RvciA9IGZhbHNlO1xuXG4gIGNhblJlYWQ6IFNpZ25hbDxib29sZWFuPiA9IHNpZ25hbChmYWxzZSk7XG4gIGNhblJlYWRTZWxlY3RvciA9IGZhbHNlO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY2FuRWRpdFNlbGVjdG9yID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChBdXRoU3RhdGUuaGFzUGVybWlzc2lvbikoe1xuICAgICAgcmVzb3VyY2U6IHRoaXMucmVzb3VyY2UoKSxcbiAgICAgIHBlcm1pc3Npb246IFJlYWRQZXJtaXNzaW9uLFxuICAgICAgZG9tYWluOiB0aGlzLmRvbWFpbigpLFxuICAgIH0pO1xuICAgIHRoaXMuY2FuUmVhZFNlbGVjdG9yID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChBdXRoU3RhdGUuaGFzUGVybWlzc2lvbikoe1xuICAgICAgcmVzb3VyY2U6IHRoaXMucmVzb3VyY2UoKSxcbiAgICAgIHBlcm1pc3Npb246IFVwZGF0ZVBlcm1pc3Npb24sXG4gICAgICBkb21haW46IHRoaXMuZG9tYWluKCksXG4gICAgfSk7XG5cbiAgICB0aGlzLmNhblJlYWQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBjb25zdCByZXMgPSB0aGlzLnJlc291cmNlKCk7XG4gICAgICBpZiAoIXJlcykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAoQXV0aFN0YXRlLnJlcXVpcmVzUGVybWlzc2lvbih0aGlzLnJlc291cmNlKCksIFJlYWRQZXJtaXNzaW9uKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5jYW5SZWFkU2VsZWN0b3I7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSk7XG5cbiAgICB0aGlzLmNhbkVkaXQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBjb25zdCByZXMgPSB0aGlzLnJlc291cmNlKCk7XG4gICAgICBpZiAoIXJlcykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAoQXV0aFN0YXRlLnJlcXVpcmVzUGVybWlzc2lvbih0aGlzLnJlc291cmNlKCksIFVwZGF0ZVBlcm1pc3Npb24pKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhbkVkaXRTZWxlY3RvcjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { isEqual } from 'lodash-es';
|
|
2
|
-
/**
|
|
3
|
-
* Accepts a FormGroup and compares it to an object to return the dirty form values
|
|
4
|
-
* as a sparse object
|
|
5
|
-
* @param form - FormGroup
|
|
6
|
-
* @param compareData - object to compare form values against
|
|
7
|
-
* @returns Partial<T>
|
|
8
|
-
* @example sparseFormData<UserCreate>(this.userForm, initUser)
|
|
9
|
-
*/
|
|
10
|
-
export function sparseFormData(form, compareData) {
|
|
11
|
-
const sparseFormData = {};
|
|
12
|
-
for (const [key, control] of Object.entries(form.controls)) {
|
|
13
|
-
const controlValue = control.value;
|
|
14
|
-
const compareValue = compareData[key];
|
|
15
|
-
if (!isEqual(controlValue, compareValue)) {
|
|
16
|
-
sparseFormData[key] = controlValue;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
return sparseFormData;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Accepts a FormArray and removes empty strings
|
|
23
|
-
* @param formArray - FormArray
|
|
24
|
-
* @returns FormArray
|
|
25
|
-
*/
|
|
26
|
-
export function cleanStringFormArray(formArray) {
|
|
27
|
-
for (let i = formArray.controls.length - 1; i >= 0; i--) {
|
|
28
|
-
if (formArray.at(i).value === '') {
|
|
29
|
-
formArray.removeAt(i);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
return formArray;
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NjLWxpYi9zcmMvbGliL2F1dGgvZm9ybXMvZm9ybS1oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFcEM7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUksSUFBZSxFQUFFLFdBQWM7SUFDL0QsTUFBTSxjQUFjLEdBQU0sRUFBTyxDQUFDO0lBRWxDLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQzNELE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDbkMsTUFBTSxZQUFZLEdBQUcsV0FBVyxDQUFDLEdBQWMsQ0FBQyxDQUFDO1FBRWpELElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDekMsY0FBYyxDQUFDLEdBQWMsQ0FBQyxHQUFHLFlBQTBCLENBQUM7UUFDOUQsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLGNBQWMsQ0FBQztBQUN4QixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxTQUFvQjtJQUN2RCxLQUFLLElBQUksQ0FBQyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDeEQsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUNqQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgaXNFcXVhbCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbi8qKlxuICogQWNjZXB0cyBhIEZvcm1Hcm91cCBhbmQgY29tcGFyZXMgaXQgdG8gYW4gb2JqZWN0IHRvIHJldHVybiB0aGUgZGlydHkgZm9ybSB2YWx1ZXNcbiAqIGFzIGEgc3BhcnNlIG9iamVjdFxuICogQHBhcmFtIGZvcm0gLSBGb3JtR3JvdXBcbiAqIEBwYXJhbSBjb21wYXJlRGF0YSAtIG9iamVjdCB0byBjb21wYXJlIGZvcm0gdmFsdWVzIGFnYWluc3RcbiAqIEByZXR1cm5zIFBhcnRpYWw8VD5cbiAqIEBleGFtcGxlIHNwYXJzZUZvcm1EYXRhPFVzZXJDcmVhdGU+KHRoaXMudXNlckZvcm0sIGluaXRVc2VyKVxuICovXG5leHBvcnQgZnVuY3Rpb24gc3BhcnNlRm9ybURhdGE8VD4oZm9ybTogRm9ybUdyb3VwLCBjb21wYXJlRGF0YTogVCk6IFQge1xuICBjb25zdCBzcGFyc2VGb3JtRGF0YTogVCA9IHt9IGFzIFQ7XG5cbiAgZm9yIChjb25zdCBba2V5LCBjb250cm9sXSBvZiBPYmplY3QuZW50cmllcyhmb3JtLmNvbnRyb2xzKSkge1xuICAgIGNvbnN0IGNvbnRyb2xWYWx1ZSA9IGNvbnRyb2wudmFsdWU7XG4gICAgY29uc3QgY29tcGFyZVZhbHVlID0gY29tcGFyZURhdGFba2V5IGFzIGtleW9mIFRdO1xuXG4gICAgaWYgKCFpc0VxdWFsKGNvbnRyb2xWYWx1ZSwgY29tcGFyZVZhbHVlKSkge1xuICAgICAgc3BhcnNlRm9ybURhdGFba2V5IGFzIGtleW9mIFRdID0gY29udHJvbFZhbHVlIGFzIFRba2V5b2YgVF07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHNwYXJzZUZvcm1EYXRhO1xufVxuXG4vKipcbiAqIEFjY2VwdHMgYSBGb3JtQXJyYXkgYW5kIHJlbW92ZXMgZW1wdHkgc3RyaW5nc1xuICogQHBhcmFtIGZvcm1BcnJheSAtIEZvcm1BcnJheVxuICogQHJldHVybnMgRm9ybUFycmF5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGVhblN0cmluZ0Zvcm1BcnJheShmb3JtQXJyYXk6IEZvcm1BcnJheSk6IEZvcm1BcnJheSB7XG4gIGZvciAobGV0IGkgPSBmb3JtQXJyYXkuY29udHJvbHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBpZiAoZm9ybUFycmF5LmF0KGkpLnZhbHVlID09PSAnJykge1xuICAgICAgZm9ybUFycmF5LnJlbW92ZUF0KGkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZm9ybUFycmF5O1xufVxuIl19
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { inject } from '@angular/core';
|
|
2
|
-
import { Store } from '@ngxs/store';
|
|
3
|
-
import { of } from 'rxjs';
|
|
4
|
-
import { catchError, map, switchMap } from 'rxjs/operators';
|
|
5
|
-
import { BASE_URL } from '../../types/base/tokens';
|
|
6
|
-
import { AuthService } from '../services/auth.service';
|
|
7
|
-
import { AuthenticationGuardAction } from '../state/auth.actions';
|
|
8
|
-
import { AuthState } from '../state/auth.state';
|
|
9
|
-
export const AuthenticationGuard = (route, routerState) => {
|
|
10
|
-
const store = inject(Store);
|
|
11
|
-
const authService = inject(AuthService);
|
|
12
|
-
const baseUrl = inject(BASE_URL);
|
|
13
|
-
const authenticate = () => {
|
|
14
|
-
const url = routerState.url;
|
|
15
|
-
const absoluteUrl = baseUrl + (!url.toString().startsWith('/') ? '/' + url : url);
|
|
16
|
-
const encodedUrl = encodeURIComponent(absoluteUrl);
|
|
17
|
-
window.location.href = `${authService.loginRoute()}?returnUrl=${encodedUrl}`;
|
|
18
|
-
};
|
|
19
|
-
return store.select(AuthState.isAuthenticated).pipe(switchMap((authenticated) => {
|
|
20
|
-
if (authenticated) {
|
|
21
|
-
return of(authenticated);
|
|
22
|
-
}
|
|
23
|
-
// Handle uninitialized state (ie Browser reload)
|
|
24
|
-
return store.dispatch(AuthenticationGuardAction.CheckUserSession).pipe(switchMap(() => {
|
|
25
|
-
return store.select(AuthState.isAuthenticated);
|
|
26
|
-
}));
|
|
27
|
-
}), map((authenticated) => {
|
|
28
|
-
if (authenticated) {
|
|
29
|
-
return true;
|
|
30
|
-
}
|
|
31
|
-
authenticate();
|
|
32
|
-
return false;
|
|
33
|
-
}), catchError(() => {
|
|
34
|
-
authenticate();
|
|
35
|
-
return of(false);
|
|
36
|
-
}));
|
|
37
|
-
};
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24uZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2MtbGliL3NyYy9saWIvYXV0aC9ndWFyZHMvYXV0aGVudGljYXRpb24uZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFaEQsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FDakMsS0FBNkIsRUFDN0IsV0FBZ0MsRUFDWCxFQUFFO0lBQ3ZCLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFeEMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRWpDLE1BQU0sWUFBWSxHQUFHLEdBQVMsRUFBRTtRQUM5QixNQUFNLEdBQUcsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDO1FBQzVCLE1BQU0sV0FBVyxHQUFHLE9BQU8sR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbEYsTUFBTSxVQUFVLEdBQUcsa0JBQWtCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsR0FBRyxXQUFXLENBQUMsVUFBVSxFQUFFLGNBQWMsVUFBVSxFQUFFLENBQUM7SUFDL0UsQ0FBQyxDQUFDO0lBRUYsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxJQUFJLENBQ2pELFNBQVMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUFFO1FBQzFCLElBQUksYUFBYSxFQUFFLENBQUM7WUFDbEIsT0FBTyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDM0IsQ0FBQztRQUNELGlEQUFpRDtRQUNqRCxPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMseUJBQXlCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQ3BFLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDYixPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2pELENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRTtRQUNwQixJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ2xCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELFlBQVksRUFBRSxDQUFDO1FBRWYsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsR0FBRyxFQUFFO1FBQ2QsWUFBWSxFQUFFLENBQUM7UUFFZixPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQixDQUFDLENBQUMsQ0FDSCxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBSb3V0ZXJTdGF0ZVNuYXBzaG90IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5neHMvc3RvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQkFTRV9VUkwgfSBmcm9tICcuLi8uLi90eXBlcy9iYXNlL3Rva2Vucyc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvbkd1YXJkQWN0aW9uIH0gZnJvbSAnLi4vc3RhdGUvYXV0aC5hY3Rpb25zJztcbmltcG9ydCB7IEF1dGhTdGF0ZSB9IGZyb20gJy4uL3N0YXRlL2F1dGguc3RhdGUnO1xuXG5leHBvcnQgY29uc3QgQXV0aGVudGljYXRpb25HdWFyZCA9IChcbiAgcm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gIHJvdXRlclN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90LFxuKTogT2JzZXJ2YWJsZTxib29sZWFuPiA9PiB7XG4gIGNvbnN0IHN0b3JlID0gaW5qZWN0KFN0b3JlKTtcbiAgY29uc3QgYXV0aFNlcnZpY2UgPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuXG4gIGNvbnN0IGJhc2VVcmwgPSBpbmplY3QoQkFTRV9VUkwpO1xuXG4gIGNvbnN0IGF1dGhlbnRpY2F0ZSA9ICgpOiB2b2lkID0+IHtcbiAgICBjb25zdCB1cmwgPSByb3V0ZXJTdGF0ZS51cmw7XG4gICAgY29uc3QgYWJzb2x1dGVVcmwgPSBiYXNlVXJsICsgKCF1cmwudG9TdHJpbmcoKS5zdGFydHNXaXRoKCcvJykgPyAnLycgKyB1cmwgOiB1cmwpO1xuICAgIGNvbnN0IGVuY29kZWRVcmwgPSBlbmNvZGVVUklDb21wb25lbnQoYWJzb2x1dGVVcmwpO1xuICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYCR7YXV0aFNlcnZpY2UubG9naW5Sb3V0ZSgpfT9yZXR1cm5Vcmw9JHtlbmNvZGVkVXJsfWA7XG4gIH07XG5cbiAgcmV0dXJuIHN0b3JlLnNlbGVjdChBdXRoU3RhdGUuaXNBdXRoZW50aWNhdGVkKS5waXBlKFxuICAgIHN3aXRjaE1hcCgoYXV0aGVudGljYXRlZCkgPT4ge1xuICAgICAgaWYgKGF1dGhlbnRpY2F0ZWQpIHtcbiAgICAgICAgcmV0dXJuIG9mKGF1dGhlbnRpY2F0ZWQpO1xuICAgICAgfVxuICAgICAgLy8gSGFuZGxlIHVuaW5pdGlhbGl6ZWQgc3RhdGUgKGllIEJyb3dzZXIgcmVsb2FkKVxuICAgICAgcmV0dXJuIHN0b3JlLmRpc3BhdGNoKEF1dGhlbnRpY2F0aW9uR3VhcmRBY3Rpb24uQ2hlY2tVc2VyU2Vzc2lvbikucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgICByZXR1cm4gc3RvcmUuc2VsZWN0KEF1dGhTdGF0ZS5pc0F1dGhlbnRpY2F0ZWQpO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfSksXG4gICAgbWFwKChhdXRoZW50aWNhdGVkKSA9PiB7XG4gICAgICBpZiAoYXV0aGVudGljYXRlZCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgYXV0aGVudGljYXRlKCk7XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KSxcbiAgICBjYXRjaEVycm9yKCgpID0+IHtcbiAgICAgIGF1dGhlbnRpY2F0ZSgpO1xuXG4gICAgICByZXR1cm4gb2YoZmFsc2UpO1xuICAgIH0pLFxuICApO1xufTtcbiJdfQ==
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { inject } from '@angular/core';
|
|
2
|
-
import { Router } from '@angular/router';
|
|
3
|
-
import { Store } from '@ngxs/store';
|
|
4
|
-
import { map } from 'rxjs';
|
|
5
|
-
import { AuthState } from '../state/auth.state';
|
|
6
|
-
export const AuthorizationGuard = (route) => {
|
|
7
|
-
const store = inject(Store);
|
|
8
|
-
const router = inject(Router);
|
|
9
|
-
return store.select(AuthState.hasPermission).pipe(map((permissionFn) => permissionFn(route.data['scope'])), map((hasPermission) => {
|
|
10
|
-
if (hasPermission) {
|
|
11
|
-
return true;
|
|
12
|
-
}
|
|
13
|
-
router.navigate(['/']);
|
|
14
|
-
return false;
|
|
15
|
-
}));
|
|
16
|
-
};
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aG9yaXphdGlvbi5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjYy1saWIvc3JjL2xpYi9hdXRoL2d1YXJkcy9hdXRob3JpemF0aW9uLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUEwQixNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxHQUFHLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWhELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsS0FBNkIsRUFBdUIsRUFBRTtJQUN2RixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUIsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlCLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUMvQyxHQUFHLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFDeEQsR0FBRyxDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUU7UUFDcEIsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNsQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDRCxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN2QixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUMsQ0FBQyxDQUNILENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IG1hcCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXV0aFN0YXRlIH0gZnJvbSAnLi4vc3RhdGUvYXV0aC5zdGF0ZSc7XG5cbmV4cG9ydCBjb25zdCBBdXRob3JpemF0aW9uR3VhcmQgPSAocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0+IHtcbiAgY29uc3Qgc3RvcmUgPSBpbmplY3QoU3RvcmUpO1xuICBjb25zdCByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgcmV0dXJuIHN0b3JlLnNlbGVjdChBdXRoU3RhdGUuaGFzUGVybWlzc2lvbikucGlwZShcbiAgICBtYXAoKHBlcm1pc3Npb25GbikgPT4gcGVybWlzc2lvbkZuKHJvdXRlLmRhdGFbJ3Njb3BlJ10pKSxcbiAgICBtYXAoKGhhc1Blcm1pc3Npb24pID0+IHtcbiAgICAgIGlmIChoYXNQZXJtaXNzaW9uKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcm91dGVyLm5hdmlnYXRlKFsnLyddKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KSxcbiAgKTtcbn07XG4iXX0=
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { Inject, Injectable } from '@angular/core';
|
|
2
|
-
import { map } from 'rxjs';
|
|
3
|
-
import { API_URL } from '../../types/base/tokens';
|
|
4
|
-
import { errorOptions } from './request-options';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@angular/common/http";
|
|
7
|
-
const routes = {
|
|
8
|
-
login: (rootUrl) => `${rootUrl}/user/login`,
|
|
9
|
-
session: (rootUrl) => `${rootUrl}/user/session`,
|
|
10
|
-
};
|
|
11
|
-
export class AuthService {
|
|
12
|
-
http;
|
|
13
|
-
apiUrl;
|
|
14
|
-
constructor(http, apiUrl) {
|
|
15
|
-
this.http = http;
|
|
16
|
-
this.apiUrl = apiUrl;
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Logs a user out.
|
|
20
|
-
*
|
|
21
|
-
* @returns Observable with a boolean indicating whether they were logged out.
|
|
22
|
-
*/
|
|
23
|
-
logout() {
|
|
24
|
-
return this.http.delete(routes.session(this.apiUrl), errorOptions(false)).pipe(map(() => true));
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Checks a user's session with the server.
|
|
28
|
-
*
|
|
29
|
-
* @returns Observable with the user session info
|
|
30
|
-
*/
|
|
31
|
-
checkUserSession() {
|
|
32
|
-
return this.http.get(routes.session(this.apiUrl), errorOptions(false));
|
|
33
|
-
}
|
|
34
|
-
loginRoute() {
|
|
35
|
-
return routes.login(this.apiUrl);
|
|
36
|
-
}
|
|
37
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: AuthService, deps: [{ token: i1.HttpClient }, { token: API_URL }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
38
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: AuthService, providedIn: 'root' });
|
|
39
|
-
}
|
|
40
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: AuthService, decorators: [{
|
|
41
|
-
type: Injectable,
|
|
42
|
-
args: [{
|
|
43
|
-
providedIn: 'root',
|
|
44
|
-
}]
|
|
45
|
-
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: undefined, decorators: [{
|
|
46
|
-
type: Inject,
|
|
47
|
-
args: [API_URL]
|
|
48
|
-
}] }] });
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NjLWxpYi9zcmMvbGliL2F1dGgvc2VydmljZXMvYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxHQUFHLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRWxELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBRWpELE1BQU0sTUFBTSxHQUFHO0lBQ2IsS0FBSyxFQUFFLENBQUMsT0FBZSxFQUFVLEVBQUUsQ0FBQyxHQUFHLE9BQU8sYUFBYTtJQUMzRCxPQUFPLEVBQUUsQ0FBQyxPQUFlLEVBQVUsRUFBRSxDQUFDLEdBQUcsT0FBTyxlQUFlO0NBQ2hFLENBQUM7QUFLRixNQUFNLE9BQU8sV0FBVztJQUVaO0lBQ2lCO0lBRjNCLFlBQ1UsSUFBZ0IsRUFDQyxNQUFjO1FBRC9CLFNBQUksR0FBSixJQUFJLENBQVk7UUFDQyxXQUFNLEdBQU4sTUFBTSxDQUFRO0lBQ3RDLENBQUM7SUFFSjs7OztPQUlHO0lBQ0gsTUFBTTtRQUNKLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2xHLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBYyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkMsQ0FBQzt1R0ExQlUsV0FBVyw0Q0FHWixPQUFPOzJHQUhOLFdBQVcsY0FGVixNQUFNOzsyRkFFUCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBSUksTUFBTTsyQkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBUElfVVJMIH0gZnJvbSAnLi4vLi4vdHlwZXMvYmFzZS90b2tlbnMnO1xuaW1wb3J0IHsgU2Vzc2lvbkluZm8gfSBmcm9tICcuLi8uLi90eXBlcy9zZXNzaW9uLWluZm8nO1xuaW1wb3J0IHsgZXJyb3JPcHRpb25zIH0gZnJvbSAnLi9yZXF1ZXN0LW9wdGlvbnMnO1xuXG5jb25zdCByb3V0ZXMgPSB7XG4gIGxvZ2luOiAocm9vdFVybDogc3RyaW5nKTogc3RyaW5nID0+IGAke3Jvb3RVcmx9L3VzZXIvbG9naW5gLFxuICBzZXNzaW9uOiAocm9vdFVybDogc3RyaW5nKTogc3RyaW5nID0+IGAke3Jvb3RVcmx9L3VzZXIvc2Vzc2lvbmAsXG59O1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQXV0aFNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgQEluamVjdChBUElfVVJMKSBwcml2YXRlIGFwaVVybDogc3RyaW5nLFxuICApIHt9XG5cbiAgLyoqXG4gICAqIExvZ3MgYSB1c2VyIG91dC5cbiAgICpcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZSB3aXRoIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhleSB3ZXJlIGxvZ2dlZCBvdXQuXG4gICAqL1xuICBsb2dvdXQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUocm91dGVzLnNlc3Npb24odGhpcy5hcGlVcmwpLCBlcnJvck9wdGlvbnMoZmFsc2UpKS5waXBlKG1hcCgoKSA9PiB0cnVlKSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGEgdXNlcidzIHNlc3Npb24gd2l0aCB0aGUgc2VydmVyLlxuICAgKlxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIHdpdGggdGhlIHVzZXIgc2Vzc2lvbiBpbmZvXG4gICAqL1xuICBjaGVja1VzZXJTZXNzaW9uKCk6IE9ic2VydmFibGU8U2Vzc2lvbkluZm8gfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8U2Vzc2lvbkluZm8+KHJvdXRlcy5zZXNzaW9uKHRoaXMuYXBpVXJsKSwgZXJyb3JPcHRpb25zKGZhbHNlKSk7XG4gIH1cblxuICBsb2dpblJvdXRlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHJvdXRlcy5sb2dpbih0aGlzLmFwaVVybCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { HttpContext, HttpContextToken } from '@angular/common/http';
|
|
2
|
-
export const CUSTOM_HTTP_REQUEST_OPTIONS = new HttpContextToken(() => ({
|
|
3
|
-
suppressGlobalError: false,
|
|
4
|
-
}));
|
|
5
|
-
export function errorOptions(suppressGlobalError) {
|
|
6
|
-
return {
|
|
7
|
-
context: new HttpContext().set(CUSTOM_HTTP_REQUEST_OPTIONS, {
|
|
8
|
-
suppressGlobalError: suppressGlobalError ?? false,
|
|
9
|
-
}),
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1vcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NjLWxpYi9zcmMvbGliL2F1dGgvc2VydmljZXMvcmVxdWVzdC1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQU1yRSxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxJQUFJLGdCQUFnQixDQUEyQixHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQy9GLG1CQUFtQixFQUFFLEtBQUs7Q0FDM0IsQ0FBQyxDQUFDLENBQUM7QUFFSixNQUFNLFVBQVUsWUFBWSxDQUFDLG1CQUF3QztJQUNuRSxPQUFPO1FBQ0wsT0FBTyxFQUFFLElBQUksV0FBVyxFQUFFLENBQUMsR0FBRyxDQUFDLDJCQUEyQixFQUFFO1lBQzFELG1CQUFtQixFQUFFLG1CQUFtQixJQUFJLEtBQUs7U0FDbEQsQ0FBQztLQUNILENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENvbnRleHQsIEh0dHBDb250ZXh0VG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tSHR0cFJlcXVlc3RPcHRpb25zIHtcbiAgc3VwcHJlc3NHbG9iYWxFcnJvcjogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IENVU1RPTV9IVFRQX1JFUVVFU1RfT1BUSU9OUyA9IG5ldyBIdHRwQ29udGV4dFRva2VuPEN1c3RvbUh0dHBSZXF1ZXN0T3B0aW9ucz4oKCkgPT4gKHtcbiAgc3VwcHJlc3NHbG9iYWxFcnJvcjogZmFsc2UsXG59KSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBlcnJvck9wdGlvbnMoc3VwcHJlc3NHbG9iYWxFcnJvcjogYm9vbGVhbiB8IHVuZGVmaW5lZCk6IHsgY29udGV4dDogSHR0cENvbnRleHQgfSB7XG4gIHJldHVybiB7XG4gICAgY29udGV4dDogbmV3IEh0dHBDb250ZXh0KCkuc2V0KENVU1RPTV9IVFRQX1JFUVVFU1RfT1BUSU9OUywge1xuICAgICAgc3VwcHJlc3NHbG9iYWxFcnJvcjogc3VwcHJlc3NHbG9iYWxFcnJvciA/PyBmYWxzZSxcbiAgICB9KSxcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-namespace */
|
|
2
|
-
// no-namespace rule is disabled because action hygiene prevents import pollution
|
|
3
|
-
export var AuthenticationGuardAction;
|
|
4
|
-
(function (AuthenticationGuardAction) {
|
|
5
|
-
class SetRedirectUrl {
|
|
6
|
-
redirectUrl;
|
|
7
|
-
static type = '[AuthenticationGuard] Set Redirect Url And Navigate To Login Page';
|
|
8
|
-
constructor(redirectUrl) {
|
|
9
|
-
this.redirectUrl = redirectUrl;
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
AuthenticationGuardAction.SetRedirectUrl = SetRedirectUrl;
|
|
13
|
-
class CheckUserSession {
|
|
14
|
-
static type = '[AuthenticationGuard] Check User Session';
|
|
15
|
-
}
|
|
16
|
-
AuthenticationGuardAction.CheckUserSession = CheckUserSession;
|
|
17
|
-
})(AuthenticationGuardAction || (AuthenticationGuardAction = {}));
|
|
18
|
-
export var LoginAction;
|
|
19
|
-
(function (LoginAction) {
|
|
20
|
-
class Logout {
|
|
21
|
-
static type = '[Login] Auto Logout';
|
|
22
|
-
}
|
|
23
|
-
LoginAction.Logout = Logout;
|
|
24
|
-
class SetRedirectUrl {
|
|
25
|
-
redirectUrl;
|
|
26
|
-
static type = '[Login] Set Redirect Url';
|
|
27
|
-
constructor(redirectUrl) {
|
|
28
|
-
this.redirectUrl = redirectUrl;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
LoginAction.SetRedirectUrl = SetRedirectUrl;
|
|
32
|
-
class PublishError {
|
|
33
|
-
message;
|
|
34
|
-
static type = '[Login] Publish Error';
|
|
35
|
-
constructor(message) {
|
|
36
|
-
this.message = message;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
LoginAction.PublishError = PublishError;
|
|
40
|
-
})(LoginAction || (LoginAction = {}));
|
|
41
|
-
export var AppAction;
|
|
42
|
-
(function (AppAction) {
|
|
43
|
-
class CheckUserSession {
|
|
44
|
-
static type = '[App] Check User Session';
|
|
45
|
-
}
|
|
46
|
-
AppAction.CheckUserSession = CheckUserSession;
|
|
47
|
-
class SetRedirectUrl {
|
|
48
|
-
redirectUrl;
|
|
49
|
-
static type = '[App] Set Redirect Url';
|
|
50
|
-
constructor(redirectUrl) {
|
|
51
|
-
this.redirectUrl = redirectUrl;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
AppAction.SetRedirectUrl = SetRedirectUrl;
|
|
55
|
-
class SetNavIdentifier {
|
|
56
|
-
identifier;
|
|
57
|
-
static type = '[App] Set Nav Identifier';
|
|
58
|
-
constructor(identifier) {
|
|
59
|
-
this.identifier = identifier;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
AppAction.SetNavIdentifier = SetNavIdentifier;
|
|
63
|
-
})(AppAction || (AppAction = {}));
|
|
64
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5hY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NjLWxpYi9zcmMvbGliL2F1dGgvc3RhdGUvYXV0aC5hY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9EQUFvRDtBQUNwRCxpRkFBaUY7QUFJakYsTUFBTSxLQUFXLHlCQUF5QixDQVN6QztBQVRELFdBQWlCLHlCQUF5QjtJQUN4QyxNQUFhLGNBQWM7UUFFTjtRQURuQixNQUFNLENBQVUsSUFBSSxHQUFHLG1FQUFtRSxDQUFDO1FBQzNGLFlBQW1CLFdBQW1CO1lBQW5CLGdCQUFXLEdBQVgsV0FBVyxDQUFRO1FBQUcsQ0FBQzs7SUFGL0Isd0NBQWMsaUJBRzFCLENBQUE7SUFFRCxNQUFhLGdCQUFnQjtRQUMzQixNQUFNLENBQVUsSUFBSSxHQUFHLDBDQUEwQyxDQUFDOztJQUR2RCwwQ0FBZ0IsbUJBRTVCLENBQUE7QUFDSCxDQUFDLEVBVGdCLHlCQUF5QixLQUF6Qix5QkFBeUIsUUFTekM7QUFFRCxNQUFNLEtBQVcsV0FBVyxDQWMzQjtBQWRELFdBQWlCLFdBQVc7SUFDMUIsTUFBYSxNQUFNO1FBQ2pCLE1BQU0sQ0FBVSxJQUFJLEdBQUcscUJBQXFCLENBQUM7O0lBRGxDLGtCQUFNLFNBRWxCLENBQUE7SUFFRCxNQUFhLGNBQWM7UUFFTjtRQURuQixNQUFNLENBQVUsSUFBSSxHQUFHLDBCQUEwQixDQUFDO1FBQ2xELFlBQW1CLFdBQW1CO1lBQW5CLGdCQUFXLEdBQVgsV0FBVyxDQUFRO1FBQUcsQ0FBQzs7SUFGL0IsMEJBQWMsaUJBRzFCLENBQUE7SUFFRCxNQUFhLFlBQVk7UUFFSjtRQURuQixNQUFNLENBQVUsSUFBSSxHQUFHLHVCQUF1QixDQUFDO1FBQy9DLFlBQW1CLE9BQWtDO1lBQWxDLFlBQU8sR0FBUCxPQUFPLENBQTJCO1FBQUcsQ0FBQzs7SUFGOUMsd0JBQVksZUFHeEIsQ0FBQTtBQUNILENBQUMsRUFkZ0IsV0FBVyxLQUFYLFdBQVcsUUFjM0I7QUFFRCxNQUFNLEtBQVcsU0FBUyxDQWN6QjtBQWRELFdBQWlCLFNBQVM7SUFDeEIsTUFBYSxnQkFBZ0I7UUFDM0IsTUFBTSxDQUFVLElBQUksR0FBRywwQkFBMEIsQ0FBQzs7SUFEdkMsMEJBQWdCLG1CQUU1QixDQUFBO0lBRUQsTUFBYSxjQUFjO1FBRU47UUFEbkIsTUFBTSxDQUFVLElBQUksR0FBRyx3QkFBd0IsQ0FBQztRQUNoRCxZQUFtQixXQUFtQjtZQUFuQixnQkFBVyxHQUFYLFdBQVcsQ0FBUTtRQUFHLENBQUM7O0lBRi9CLHdCQUFjLGlCQUcxQixDQUFBO0lBRUQsTUFBYSxnQkFBZ0I7UUFFUjtRQURuQixNQUFNLENBQVUsSUFBSSxHQUFHLDBCQUEwQixDQUFDO1FBQ2xELFlBQW1CLFVBQWtCO1lBQWxCLGVBQVUsR0FBVixVQUFVLENBQVE7UUFBRyxDQUFDOztJQUY5QiwwQkFBZ0IsbUJBRzVCLENBQUE7QUFDSCxDQUFDLEVBZGdCLFNBQVMsS0FBVCxTQUFTLFFBY3pCIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5hbWVzcGFjZSAqL1xuLy8gbm8tbmFtZXNwYWNlIHJ1bGUgaXMgZGlzYWJsZWQgYmVjYXVzZSBhY3Rpb24gaHlnaWVuZSBwcmV2ZW50cyBpbXBvcnQgcG9sbHV0aW9uXG5cbmltcG9ydCB7IENyZWF0ZU5vdGlmaWNhdGlvbk1lc3NhZ2UgfSBmcm9tICcuLi8uLi90eXBlcy9ub3RpZmljYXRpb24tbWVzc2FnZSc7XG5cbmV4cG9ydCBuYW1lc3BhY2UgQXV0aGVudGljYXRpb25HdWFyZEFjdGlvbiB7XG4gIGV4cG9ydCBjbGFzcyBTZXRSZWRpcmVjdFVybCB7XG4gICAgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW0F1dGhlbnRpY2F0aW9uR3VhcmRdIFNldCBSZWRpcmVjdCBVcmwgQW5kIE5hdmlnYXRlIFRvIExvZ2luIFBhZ2UnO1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyByZWRpcmVjdFVybDogc3RyaW5nKSB7fVxuICB9XG5cbiAgZXhwb3J0IGNsYXNzIENoZWNrVXNlclNlc3Npb24ge1xuICAgIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tBdXRoZW50aWNhdGlvbkd1YXJkXSBDaGVjayBVc2VyIFNlc3Npb24nO1xuICB9XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgTG9naW5BY3Rpb24ge1xuICBleHBvcnQgY2xhc3MgTG9nb3V0IHtcbiAgICBzdGF0aWMgcmVhZG9ubHkgdHlwZSA9ICdbTG9naW5dIEF1dG8gTG9nb3V0JztcbiAgfVxuXG4gIGV4cG9ydCBjbGFzcyBTZXRSZWRpcmVjdFVybCB7XG4gICAgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW0xvZ2luXSBTZXQgUmVkaXJlY3QgVXJsJztcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVkaXJlY3RVcmw6IHN0cmluZykge31cbiAgfVxuXG4gIGV4cG9ydCBjbGFzcyBQdWJsaXNoRXJyb3Ige1xuICAgIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tMb2dpbl0gUHVibGlzaCBFcnJvcic7XG4gICAgY29uc3RydWN0b3IocHVibGljIG1lc3NhZ2U6IENyZWF0ZU5vdGlmaWNhdGlvbk1lc3NhZ2UpIHt9XG4gIH1cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBBcHBBY3Rpb24ge1xuICBleHBvcnQgY2xhc3MgQ2hlY2tVc2VyU2Vzc2lvbiB7XG4gICAgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW0FwcF0gQ2hlY2sgVXNlciBTZXNzaW9uJztcbiAgfVxuXG4gIGV4cG9ydCBjbGFzcyBTZXRSZWRpcmVjdFVybCB7XG4gICAgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW0FwcF0gU2V0IFJlZGlyZWN0IFVybCc7XG4gICAgY29uc3RydWN0b3IocHVibGljIHJlZGlyZWN0VXJsOiBzdHJpbmcpIHt9XG4gIH1cblxuICBleHBvcnQgY2xhc3MgU2V0TmF2SWRlbnRpZmllciB7XG4gICAgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW0FwcF0gU2V0IE5hdiBJZGVudGlmaWVyJztcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgaWRlbnRpZmllcjogc3RyaW5nKSB7fVxuICB9XG59XG4iXX0=
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
var AuthState_1;
|
|
2
|
-
import { __decorate } from "tslib";
|
|
3
|
-
import { inject, Injectable } from '@angular/core';
|
|
4
|
-
import { Action, Selector, State } from '@ngxs/store';
|
|
5
|
-
import { patch } from '@ngxs/store/operators';
|
|
6
|
-
import { cloneDeep } from 'lodash-es';
|
|
7
|
-
import { tap } from 'rxjs';
|
|
8
|
-
import { PERMISSION_REQUIRED } from '../../types/base/tokens';
|
|
9
|
-
import { ApiInterceptorAction } from '../../ui/state/core.actions';
|
|
10
|
-
import { AuthService } from '../services/auth.service';
|
|
11
|
-
import { AppAction, AuthenticationGuardAction, LoginAction } from './auth.actions';
|
|
12
|
-
import * as i0 from "@angular/core";
|
|
13
|
-
export const initState = {
|
|
14
|
-
authenticated: false,
|
|
15
|
-
redirectUrl: '',
|
|
16
|
-
sessionInfo: null,
|
|
17
|
-
};
|
|
18
|
-
let AuthState = class AuthState {
|
|
19
|
-
static { AuthState_1 = this; }
|
|
20
|
-
authService = inject(AuthService);
|
|
21
|
-
static permissionFn;
|
|
22
|
-
constructor() {
|
|
23
|
-
AuthState_1.initializePermissionFn();
|
|
24
|
-
}
|
|
25
|
-
static initializePermissionFn() {
|
|
26
|
-
if (!AuthState_1.permissionFn) {
|
|
27
|
-
AuthState_1.permissionFn = inject(PERMISSION_REQUIRED);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
static hasPermission(state) {
|
|
31
|
-
return (scope) => {
|
|
32
|
-
if (!scope)
|
|
33
|
-
return true;
|
|
34
|
-
const resourcePermissions = state?.sessionInfo?.permissions?.[scope.domain]?.[scope.resource];
|
|
35
|
-
return Array.isArray(resourcePermissions) && resourcePermissions.includes(scope.permission);
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
static requiresPermission(resource, permission) {
|
|
39
|
-
if (!AuthState_1.permissionFn) {
|
|
40
|
-
throw new Error(`AuthState has not been initialized. Ensure AuthState is provided in your module or instantiated at least once.`);
|
|
41
|
-
}
|
|
42
|
-
return AuthState_1.permissionFn(resource, permission);
|
|
43
|
-
}
|
|
44
|
-
static isAuthenticated(state) {
|
|
45
|
-
return state?.authenticated;
|
|
46
|
-
}
|
|
47
|
-
static redirectUrl(state) {
|
|
48
|
-
return state?.redirectUrl;
|
|
49
|
-
}
|
|
50
|
-
checkUserSession(ctx) {
|
|
51
|
-
return this.authService.checkUserSession().pipe(tap((result) => ctx.setState(patch({
|
|
52
|
-
authenticated: !!result?.authenticated,
|
|
53
|
-
sessionInfo: result,
|
|
54
|
-
}))));
|
|
55
|
-
}
|
|
56
|
-
logout(ctx) {
|
|
57
|
-
const localStateCopy = cloneDeep(initState);
|
|
58
|
-
localStateCopy.redirectUrl = ctx.getState().redirectUrl;
|
|
59
|
-
return this.authService.logout().pipe(tap(() => {
|
|
60
|
-
ctx.setState(localStateCopy);
|
|
61
|
-
}));
|
|
62
|
-
}
|
|
63
|
-
setRedirectUrl(ctx, action) {
|
|
64
|
-
ctx.setState(patch({
|
|
65
|
-
redirectUrl: action.redirectUrl,
|
|
66
|
-
}));
|
|
67
|
-
return ctx.getState();
|
|
68
|
-
}
|
|
69
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: AuthState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
70
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: AuthState });
|
|
71
|
-
};
|
|
72
|
-
__decorate([
|
|
73
|
-
Action([AppAction.CheckUserSession, AuthenticationGuardAction.CheckUserSession])
|
|
74
|
-
], AuthState.prototype, "checkUserSession", null);
|
|
75
|
-
__decorate([
|
|
76
|
-
Action([LoginAction.Logout])
|
|
77
|
-
], AuthState.prototype, "logout", null);
|
|
78
|
-
__decorate([
|
|
79
|
-
Action([
|
|
80
|
-
AppAction.SetRedirectUrl,
|
|
81
|
-
LoginAction.SetRedirectUrl,
|
|
82
|
-
AuthenticationGuardAction.SetRedirectUrl,
|
|
83
|
-
ApiInterceptorAction.SetRedirectUrl,
|
|
84
|
-
])
|
|
85
|
-
], AuthState.prototype, "setRedirectUrl", null);
|
|
86
|
-
__decorate([
|
|
87
|
-
Selector()
|
|
88
|
-
], AuthState, "hasPermission", null);
|
|
89
|
-
__decorate([
|
|
90
|
-
Selector()
|
|
91
|
-
], AuthState, "isAuthenticated", null);
|
|
92
|
-
__decorate([
|
|
93
|
-
Selector()
|
|
94
|
-
], AuthState, "redirectUrl", null);
|
|
95
|
-
AuthState = AuthState_1 = __decorate([
|
|
96
|
-
State({
|
|
97
|
-
name: 'authState',
|
|
98
|
-
defaults: initState,
|
|
99
|
-
})
|
|
100
|
-
], AuthState);
|
|
101
|
-
export { AuthState };
|
|
102
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: AuthState, decorators: [{
|
|
103
|
-
type: Injectable
|
|
104
|
-
}], ctorParameters: () => [], propDecorators: { checkUserSession: [], logout: [], setRedirectUrl: [] } });
|
|
105
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjYy1saWIvc3JjL2xpYi9hdXRoL3N0YXRlL2F1dGguc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQWdCLE1BQU0sYUFBYSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RDLE9BQU8sRUFBYyxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHOUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQUUseUJBQXlCLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBUW5GLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBbUI7SUFDdkMsYUFBYSxFQUFFLEtBQUs7SUFDcEIsV0FBVyxFQUFFLEVBQUU7SUFDZixXQUFXLEVBQUUsSUFBSTtDQUNsQixDQUFDO0FBT0ssSUFBTSxTQUFTLEdBQWYsTUFBTSxTQUFTOztJQUNaLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEMsTUFBTSxDQUFDLFlBQVksQ0FBMEQ7SUFFckY7UUFDRSxXQUFTLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRU8sTUFBTSxDQUFDLHNCQUFzQjtRQUNuQyxJQUFJLENBQUMsV0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzVCLFdBQVMsQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDdkQsQ0FBQztJQUNILENBQUM7SUFHTSxBQUFQLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBcUI7UUFDeEMsT0FBTyxDQUFDLEtBQXVCLEVBQUUsRUFBRTtZQUNqQyxJQUFJLENBQUMsS0FBSztnQkFBRSxPQUFPLElBQUksQ0FBQztZQUN4QixNQUFNLG1CQUFtQixHQUFHLEtBQUssRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzlGLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDOUYsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxRQUFrQixFQUFFLFVBQXNCO1FBQ2xFLElBQUksQ0FBQyxXQUFTLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDNUIsTUFBTSxJQUFJLEtBQUssQ0FDYixnSEFBZ0gsQ0FDakgsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLFdBQVMsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFHTSxBQUFQLE1BQU0sQ0FBQyxlQUFlLENBQUMsS0FBcUI7UUFDMUMsT0FBTyxLQUFLLEVBQUUsYUFBYSxDQUFDO0lBQzlCLENBQUM7SUFHTSxBQUFQLE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBcUI7UUFDdEMsT0FBTyxLQUFLLEVBQUUsV0FBVyxDQUFDO0lBQzVCLENBQUM7SUFHRCxnQkFBZ0IsQ0FBQyxHQUFpQztRQUNoRCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxJQUFJLENBQzdDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQ2IsR0FBRyxDQUFDLFFBQVEsQ0FDVixLQUFLLENBQUM7WUFDSixhQUFhLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxhQUFhO1lBQ3RDLFdBQVcsRUFBRSxNQUFNO1NBQ3BCLENBQUMsQ0FDSCxDQUNGLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFHRCxNQUFNLENBQUMsR0FBaUM7UUFDdEMsTUFBTSxjQUFjLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzVDLGNBQWMsQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLFdBQVcsQ0FBQztRQUN4RCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUNuQyxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ1AsR0FBRyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQVFELGNBQWMsQ0FBQyxHQUFpQyxFQUFFLE1BQStCO1FBQy9FLEdBQUcsQ0FBQyxRQUFRLENBQ1YsS0FBSyxDQUFDO1lBQ0osV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXO1NBQ2hDLENBQUMsQ0FDSCxDQUFDO1FBQ0YsT0FBTyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDeEIsQ0FBQzt1R0FoRlUsU0FBUzsyR0FBVCxTQUFTOztBQTJDcEI7SUFEQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLEVBQUUseUJBQXlCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztpREFZaEY7QUFHRDtJQURDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQzt1Q0FTNUI7QUFRRDtJQU5DLE1BQU0sQ0FBQztRQUNOLFNBQVMsQ0FBQyxjQUFjO1FBQ3hCLFdBQVcsQ0FBQyxjQUFjO1FBQzFCLHlCQUF5QixDQUFDLGNBQWM7UUFDeEMsb0JBQW9CLENBQUMsY0FBYztLQUNwQyxDQUFDOytDQVFEO0FBakVNO0lBRE4sUUFBUSxFQUFFO29DQU9WO0FBWU07SUFETixRQUFRLEVBQUU7c0NBR1Y7QUFHTTtJQUROLFFBQVEsRUFBRTtrQ0FHVjtBQXhDVSxTQUFTO0lBTHJCLEtBQUssQ0FBaUI7UUFDckIsSUFBSSxFQUFFLFdBQVc7UUFDakIsUUFBUSxFQUFFLFNBQVM7S0FDcEIsQ0FBQztHQUVXLFNBQVMsQ0FpRnJCOzsyRkFqRlksU0FBUztrQkFEckIsVUFBVTt3REE0Q1QsZ0JBQWdCLE1BY2hCLE1BQU0sTUFnQk4sY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9uLCBTZWxlY3RvciwgU3RhdGUsIFN0YXRlQ29udGV4dCB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IHBhdGNoIH0gZnJvbSAnQG5neHMvc3RvcmUvb3BlcmF0b3JzJztcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFBFUk1JU1NJT05fUkVRVUlSRUQgfSBmcm9tICcuLi8uLi90eXBlcy9iYXNlL3Rva2Vucyc7XG5pbXBvcnQgeyBQZXJtaXNzaW9uLCBQZXJtaXNzaW9uU2NvcGUsIFJlc291cmNlIH0gZnJvbSAnLi4vLi4vdHlwZXMvcGVybWlzc2lvbnMnO1xuaW1wb3J0IHsgU2Vzc2lvbkluZm8gfSBmcm9tICcuLi8uLi90eXBlcy9zZXNzaW9uLWluZm8nO1xuaW1wb3J0IHsgQXBpSW50ZXJjZXB0b3JBY3Rpb24gfSBmcm9tICcuLi8uLi91aS9zdGF0ZS9jb3JlLmFjdGlvbnMnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXBwQWN0aW9uLCBBdXRoZW50aWNhdGlvbkd1YXJkQWN0aW9uLCBMb2dpbkFjdGlvbiB9IGZyb20gJy4vYXV0aC5hY3Rpb25zJztcblxuZXhwb3J0IGludGVyZmFjZSBBdXRoU3RhdGVNb2RlbCB7XG4gIGF1dGhlbnRpY2F0ZWQ6IGJvb2xlYW47XG4gIHJlZGlyZWN0VXJsOiBzdHJpbmc7XG4gIHNlc3Npb25JbmZvOiBTZXNzaW9uSW5mbyB8IG51bGw7XG59XG5cbmV4cG9ydCBjb25zdCBpbml0U3RhdGU6IEF1dGhTdGF0ZU1vZGVsID0ge1xuICBhdXRoZW50aWNhdGVkOiBmYWxzZSxcbiAgcmVkaXJlY3RVcmw6ICcnLFxuICBzZXNzaW9uSW5mbzogbnVsbCxcbn07XG5cbkBTdGF0ZTxBdXRoU3RhdGVNb2RlbD4oe1xuICBuYW1lOiAnYXV0aFN0YXRlJyxcbiAgZGVmYXVsdHM6IGluaXRTdGF0ZSxcbn0pXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQXV0aFN0YXRlIHtcbiAgcHJpdmF0ZSBhdXRoU2VydmljZSA9IGluamVjdChBdXRoU2VydmljZSk7XG4gIHByaXZhdGUgc3RhdGljIHBlcm1pc3Npb25GbjogKHJlc291cmNlOiBSZXNvdXJjZSwgcGVybWlzc2lvbjogUGVybWlzc2lvbikgPT4gYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBBdXRoU3RhdGUuaW5pdGlhbGl6ZVBlcm1pc3Npb25GbigpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgaW5pdGlhbGl6ZVBlcm1pc3Npb25GbigpOiB2b2lkIHtcbiAgICBpZiAoIUF1dGhTdGF0ZS5wZXJtaXNzaW9uRm4pIHtcbiAgICAgIEF1dGhTdGF0ZS5wZXJtaXNzaW9uRm4gPSBpbmplY3QoUEVSTUlTU0lPTl9SRVFVSVJFRCk7XG4gICAgfVxuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgc3RhdGljIGhhc1Blcm1pc3Npb24oc3RhdGU6IEF1dGhTdGF0ZU1vZGVsKTogKHNjb3BlPzogUGVybWlzc2lvblNjb3BlKSA9PiBib29sZWFuIHtcbiAgICByZXR1cm4gKHNjb3BlPzogUGVybWlzc2lvblNjb3BlKSA9PiB7XG4gICAgICBpZiAoIXNjb3BlKSByZXR1cm4gdHJ1ZTtcbiAgICAgIGNvbnN0IHJlc291cmNlUGVybWlzc2lvbnMgPSBzdGF0ZT8uc2Vzc2lvbkluZm8/LnBlcm1pc3Npb25zPy5bc2NvcGUuZG9tYWluXT8uW3Njb3BlLnJlc291cmNlXTtcbiAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHJlc291cmNlUGVybWlzc2lvbnMpICYmIHJlc291cmNlUGVybWlzc2lvbnMuaW5jbHVkZXMoc2NvcGUucGVybWlzc2lvbik7XG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyByZXF1aXJlc1Blcm1pc3Npb24ocmVzb3VyY2U6IFJlc291cmNlLCBwZXJtaXNzaW9uOiBQZXJtaXNzaW9uKTogYm9vbGVhbiB7XG4gICAgaWYgKCFBdXRoU3RhdGUucGVybWlzc2lvbkZuKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBBdXRoU3RhdGUgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkLiBFbnN1cmUgQXV0aFN0YXRlIGlzIHByb3ZpZGVkIGluIHlvdXIgbW9kdWxlIG9yIGluc3RhbnRpYXRlZCBhdCBsZWFzdCBvbmNlLmAsXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gQXV0aFN0YXRlLnBlcm1pc3Npb25GbihyZXNvdXJjZSwgcGVybWlzc2lvbik7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBzdGF0aWMgaXNBdXRoZW50aWNhdGVkKHN0YXRlOiBBdXRoU3RhdGVNb2RlbCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzdGF0ZT8uYXV0aGVudGljYXRlZDtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHN0YXRpYyByZWRpcmVjdFVybChzdGF0ZTogQXV0aFN0YXRlTW9kZWwpOiBzdHJpbmcge1xuICAgIHJldHVybiBzdGF0ZT8ucmVkaXJlY3RVcmw7XG4gIH1cblxuICBAQWN0aW9uKFtBcHBBY3Rpb24uQ2hlY2tVc2VyU2Vzc2lvbiwgQXV0aGVudGljYXRpb25HdWFyZEFjdGlvbi5DaGVja1VzZXJTZXNzaW9uXSlcbiAgY2hlY2tVc2VyU2Vzc2lvbihjdHg6IFN0YXRlQ29udGV4dDxBdXRoU3RhdGVNb2RlbD4pOiBPYnNlcnZhYmxlPFNlc3Npb25JbmZvIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLmF1dGhTZXJ2aWNlLmNoZWNrVXNlclNlc3Npb24oKS5waXBlKFxuICAgICAgdGFwKChyZXN1bHQpID0+XG4gICAgICAgIGN0eC5zZXRTdGF0ZShcbiAgICAgICAgICBwYXRjaCh7XG4gICAgICAgICAgICBhdXRoZW50aWNhdGVkOiAhIXJlc3VsdD8uYXV0aGVudGljYXRlZCxcbiAgICAgICAgICAgIHNlc3Npb25JbmZvOiByZXN1bHQsXG4gICAgICAgICAgfSksXG4gICAgICAgICksXG4gICAgICApLFxuICAgICk7XG4gIH1cblxuICBAQWN0aW9uKFtMb2dpbkFjdGlvbi5Mb2dvdXRdKVxuICBsb2dvdXQoY3R4OiBTdGF0ZUNvbnRleHQ8QXV0aFN0YXRlTW9kZWw+KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgY29uc3QgbG9jYWxTdGF0ZUNvcHkgPSBjbG9uZURlZXAoaW5pdFN0YXRlKTtcbiAgICBsb2NhbFN0YXRlQ29weS5yZWRpcmVjdFVybCA9IGN0eC5nZXRTdGF0ZSgpLnJlZGlyZWN0VXJsO1xuICAgIHJldHVybiB0aGlzLmF1dGhTZXJ2aWNlLmxvZ291dCgpLnBpcGUoXG4gICAgICB0YXAoKCkgPT4ge1xuICAgICAgICBjdHguc2V0U3RhdGUobG9jYWxTdGF0ZUNvcHkpO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIEBBY3Rpb24oW1xuICAgIEFwcEFjdGlvbi5TZXRSZWRpcmVjdFVybCxcbiAgICBMb2dpbkFjdGlvbi5TZXRSZWRpcmVjdFVybCxcbiAgICBBdXRoZW50aWNhdGlvbkd1YXJkQWN0aW9uLlNldFJlZGlyZWN0VXJsLFxuICAgIEFwaUludGVyY2VwdG9yQWN0aW9uLlNldFJlZGlyZWN0VXJsLFxuICBdKVxuICBzZXRSZWRpcmVjdFVybChjdHg6IFN0YXRlQ29udGV4dDxBdXRoU3RhdGVNb2RlbD4sIGFjdGlvbjogeyByZWRpcmVjdFVybDogc3RyaW5nIH0pOiBBdXRoU3RhdGVNb2RlbCB7XG4gICAgY3R4LnNldFN0YXRlKFxuICAgICAgcGF0Y2goe1xuICAgICAgICByZWRpcmVjdFVybDogYWN0aW9uLnJlZGlyZWN0VXJsLFxuICAgICAgfSksXG4gICAgKTtcbiAgICByZXR1cm4gY3R4LmdldFN0YXRlKCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { InjectionToken } from '@angular/core';
|
|
2
|
-
export const BASE_URL = new InjectionToken('BASE_URL');
|
|
3
|
-
export const API_URL = new InjectionToken('API_URL');
|
|
4
|
-
export const PERMISSION_REQUIRED = new InjectionToken('PERMISSION_REQUIRED');
|
|
5
|
-
export const AVAILABLE_PERMISSIONS = new InjectionToken('AVAILABLE_PERMISSIONS');
|
|
6
|
-
export const AVAILABLE_DOMAINS = new InjectionToken('AVAILABLE_DOMAINS');
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NjLWxpYi9zcmMvbGliL3R5cGVzL2Jhc2UvdG9rZW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0MsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLElBQUksY0FBYyxDQUFTLFVBQVUsQ0FBQyxDQUFDO0FBQy9ELE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxJQUFJLGNBQWMsQ0FBUyxTQUFTLENBQUMsQ0FBQztBQUM3RCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLGNBQWMsQ0FDbkQscUJBQXFCLENBQ3RCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLGNBQWMsQ0FNcEQsdUJBQXVCLENBQUMsQ0FBQztBQUM1QixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLGNBQWMsQ0FBMkIsbUJBQW1CLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21haW4sIFBlcm1pc3Npb24sIFJlc291cmNlIH0gZnJvbSAnLi4vcGVybWlzc2lvbnMnO1xuXG5leHBvcnQgY29uc3QgQkFTRV9VUkwgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPignQkFTRV9VUkwnKTtcbmV4cG9ydCBjb25zdCBBUElfVVJMID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ0FQSV9VUkwnKTtcbmV4cG9ydCBjb25zdCBQRVJNSVNTSU9OX1JFUVVJUkVEID0gbmV3IEluamVjdGlvblRva2VuPChyZXNvdXJjZTogUmVzb3VyY2UsIHBlcm1pc3Npb246IFBlcm1pc3Npb24pID0+IGJvb2xlYW4+KFxuICAnUEVSTUlTU0lPTl9SRVFVSVJFRCcsXG4pO1xuXG5leHBvcnQgY29uc3QgQVZBSUxBQkxFX1BFUk1JU1NJT05TID0gbmV3IEluamVjdGlvblRva2VuPHtcbiAgQ3JlYXRlOiBQZXJtaXNzaW9uO1xuICBEZWxldGU6IFBlcm1pc3Npb247XG4gIExpc3Q6IFBlcm1pc3Npb247XG4gIFJlYWQ6IFBlcm1pc3Npb247XG4gIFVwZGF0ZTogUGVybWlzc2lvbjtcbn0+KCdBVkFJTEFCTEVfUEVSTUlTU0lPTlMnKTtcbmV4cG9ydCBjb25zdCBBVkFJTEFCTEVfRE9NQUlOUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxSZWNvcmQ8c3RyaW5nLCBEb21haW4+W10+KCdBVkFJTEFCTEVfRE9NQUlOUycpO1xuIl19
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export var AlertLevel;
|
|
2
|
-
(function (AlertLevel) {
|
|
3
|
-
AlertLevel["ERROR"] = "warn";
|
|
4
|
-
AlertLevel["INFO"] = "accent";
|
|
5
|
-
AlertLevel["SUCCESS"] = "success";
|
|
6
|
-
})(AlertLevel || (AlertLevel = {}));
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLW1lc3NhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2MtbGliL3NyYy9saWIvdHlwZXMvbm90aWZpY2F0aW9uLW1lc3NhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksVUFJWDtBQUpELFdBQVksVUFBVTtJQUNwQiw0QkFBYyxDQUFBO0lBQ2QsNkJBQWUsQ0FBQTtJQUNmLGlDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFKVyxVQUFVLEtBQVYsVUFBVSxRQUlyQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIEFsZXJ0TGV2ZWwge1xuICBFUlJPUiA9ICd3YXJuJyxcbiAgSU5GTyA9ICdhY2NlbnQnLFxuICBTVUNDRVNTID0gJ3N1Y2Nlc3MnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZU5vdGlmaWNhdGlvbk1lc3NhZ2Uge1xuICBkdXJhdGlvbj86IG51bWJlcjtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBsaW5rOiBzdHJpbmc7XG4gIGxldmVsOiBBbGVydExldmVsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5vdGlmaWNhdGlvbk1lc3NhZ2Uge1xuICBpZDogbnVtYmVyO1xuICBkdXJhdGlvbj86IG51bWJlcjtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBsaW5rOiBzdHJpbmc7XG4gIGxldmVsOiBBbGVydExldmVsO1xufVxuIl19
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export const ReadPermission = 'Read';
|
|
2
|
-
export const UpdatePermission = 'Update';
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2MtbGliL3NyYy9saWIvdHlwZXMvcGVybWlzc2lvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBYUEsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLE1BQW9CLENBQUM7QUFDbkQsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsUUFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbInR5cGUgQnJhbmQ8SywgVD4gPSBLICYgeyBfX2JyYW5kOiBUIH07XG5cbmV4cG9ydCB0eXBlIFBlcm1pc3Npb24gPSBCcmFuZDxzdHJpbmcsICdQZXJtaXNzaW9uJz47XG5leHBvcnQgdHlwZSBSZXNvdXJjZSA9IEJyYW5kPHN0cmluZywgJ1Jlc291cmNlJz47XG5leHBvcnQgdHlwZSBEb21haW4gPSBCcmFuZDxzdHJpbmcsICdEb21haW4nPjtcbmV4cG9ydCB0eXBlIERvbWFpblBlcm1pc3Npb25zID0gUmVjb3JkPERvbWFpbiwgUmVjb3JkPFJlc291cmNlLCBSZWNvcmQ8UGVybWlzc2lvbiwgUGVybWlzc2lvbnM+Pj47XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGVybWlzc2lvblNjb3BlIHtcbiAgcmVzb3VyY2U6IFJlc291cmNlO1xuICBwZXJtaXNzaW9uOiBQZXJtaXNzaW9uO1xuICBkb21haW46IERvbWFpbjtcbn1cblxuZXhwb3J0IGNvbnN0IFJlYWRQZXJtaXNzaW9uID0gJ1JlYWQnIGFzIFBlcm1pc3Npb247XG5leHBvcnQgY29uc3QgVXBkYXRlUGVybWlzc2lvbiA9ICdVcGRhdGUnIGFzIFBlcm1pc3Npb247XG4iXX0=
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1pbmZvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NjLWxpYi9zcmMvbGliL3R5cGVzL3Nlc3Npb24taW5mby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRG9tYWluUGVybWlzc2lvbnMgfSBmcm9tICcuL3Blcm1pc3Npb25zJztcblxuLyoqXG4gKiBTZXNzaW9uIEluZm9ybWF0aW9uIGZvciBhIGxvZ2dlZCBpbiB1c2VyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2Vzc2lvbkluZm8ge1xuICBhdXRoZW50aWNhdGVkOiBib29sZWFuO1xuICB1c2VybmFtZTogc3RyaW5nO1xuICBwZXJtaXNzaW9uczogRG9tYWluUGVybWlzc2lvbnM7XG59XG4iXX0=
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { Component, EventEmitter, Input, Output, inject } from '@angular/core';
|
|
3
|
-
import { MatButtonModule } from '@angular/material/button';
|
|
4
|
-
import { MatIconModule } from '@angular/material/icon';
|
|
5
|
-
import { RouterModule } from '@angular/router';
|
|
6
|
-
import { NotificationService } from '../../services/notification.service';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@angular/material/icon";
|
|
9
|
-
import * as i2 from "@angular/material/button";
|
|
10
|
-
import * as i3 from "@angular/common";
|
|
11
|
-
import * as i4 from "@angular/router";
|
|
12
|
-
export class AlertComponent {
|
|
13
|
-
error;
|
|
14
|
-
dismiss = new EventEmitter();
|
|
15
|
-
errors = inject(NotificationService);
|
|
16
|
-
ngOnInit() {
|
|
17
|
-
if (this.error.duration === undefined) {
|
|
18
|
-
this.error.duration = 30000;
|
|
19
|
-
}
|
|
20
|
-
setTimeout(() => {
|
|
21
|
-
this.dismissAlert();
|
|
22
|
-
}, this.error.duration);
|
|
23
|
-
}
|
|
24
|
-
dismissAlert() {
|
|
25
|
-
if (this.error.id !== undefined) {
|
|
26
|
-
this.errors.dismissGlobalNotification(this.error);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: AlertComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
30
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: AlertComponent, isStandalone: true, selector: "ccc-alert", inputs: { error: "error" }, outputs: { dismiss: "dismiss" }, ngImport: i0, template: "<div class=\"alert\" [ngClass]=\"error.level\">\n <div class=\"message\">\n <span>{{ error.message }}</span>\n </div>\n <div class=\"alert-end\">\n @if (error.link) {\n <span [routerLink]=\"error.link\" class=\"link\">View</span>\n }\n <button (click)=\"dismissAlert()\" mat-icon-button aria-label=\"Close Alert\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n</div>\n", styles: [".alert{margin:auto;border:1px solid;max-width:450px;border-radius:5px;background-color:#d3d3d3;display:flex;flex-direction:row;align-items:center;justify-content:space-between}.message{padding-left:15px;max-width:400px;display:flex;justify-content:space-between}.alert-end{display:flex;flex-direction:row;align-items:center;gap:5px}.link{cursor:pointer}.link:hover{text-decoration:underline}.warn{border-color:red;background-color:#fff5f4}.accent{border-color:#dfb51d;background-color:#fff8e0}.success{border-color:#4caf50;background-color:#f0fff0}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i4.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] });
|
|
31
|
-
}
|
|
32
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: AlertComponent, decorators: [{
|
|
33
|
-
type: Component,
|
|
34
|
-
args: [{ selector: 'ccc-alert', standalone: true, imports: [MatIconModule, MatButtonModule, CommonModule, RouterModule], template: "<div class=\"alert\" [ngClass]=\"error.level\">\n <div class=\"message\">\n <span>{{ error.message }}</span>\n </div>\n <div class=\"alert-end\">\n @if (error.link) {\n <span [routerLink]=\"error.link\" class=\"link\">View</span>\n }\n <button (click)=\"dismissAlert()\" mat-icon-button aria-label=\"Close Alert\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n</div>\n", styles: [".alert{margin:auto;border:1px solid;max-width:450px;border-radius:5px;background-color:#d3d3d3;display:flex;flex-direction:row;align-items:center;justify-content:space-between}.message{padding-left:15px;max-width:400px;display:flex;justify-content:space-between}.alert-end{display:flex;flex-direction:row;align-items:center;gap:5px}.link{cursor:pointer}.link:hover{text-decoration:underline}.warn{border-color:red;background-color:#fff5f4}.accent{border-color:#dfb51d;background-color:#fff8e0}.success{border-color:#4caf50;background-color:#f0fff0}\n"] }]
|
|
35
|
-
}], propDecorators: { error: [{
|
|
36
|
-
type: Input,
|
|
37
|
-
args: [{ required: true }]
|
|
38
|
-
}], dismiss: [{
|
|
39
|
-
type: Output
|
|
40
|
-
}] } });
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NjLWxpYi9zcmMvbGliL3VpL2NvbXBvbmVudHMvYWxlcnQvYWxlcnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NjLWxpYi9zcmMvbGliL3VpL2NvbXBvbmVudHMvYWxlcnQvYWxlcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7QUFTMUUsTUFBTSxPQUFPLGNBQWM7SUFDRSxLQUFLLENBQXVCO0lBQzdDLE9BQU8sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBRXZDLE1BQU0sR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUNyQyxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN0QyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDOUIsQ0FBQztRQUVELFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEIsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxNQUFNLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BELENBQUM7SUFDSCxDQUFDO3VHQW5CVSxjQUFjOzJGQUFkLGNBQWMsa0lDZjNCLG1aQWFBLCtsQkRBWSxhQUFhLG1MQUFFLGVBQWUsMklBQUUsWUFBWSw0SEFBRSxZQUFZOzsyRkFFekQsY0FBYztrQkFQMUIsU0FBUzsrQkFDRSxXQUFXLGNBR1QsSUFBSSxXQUNQLENBQUMsYUFBYSxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsWUFBWSxDQUFDOzhCQUcxQyxLQUFLO3NCQUEvQixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFDZixPQUFPO3NCQUFoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25NZXNzYWdlIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvbm90aWZpY2F0aW9uLW1lc3NhZ2UnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25vdGlmaWNhdGlvbi5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NjLWFsZXJ0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FsZXJ0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYWxlcnQuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW01hdEljb25Nb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZSwgQ29tbW9uTW9kdWxlLCBSb3V0ZXJNb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBBbGVydENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIGVycm9yITogTm90aWZpY2F0aW9uTWVzc2FnZTtcbiAgQE91dHB1dCgpIGRpc21pc3MgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgZXJyb3JzID0gaW5qZWN0KE5vdGlmaWNhdGlvblNlcnZpY2UpO1xuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5lcnJvci5kdXJhdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmVycm9yLmR1cmF0aW9uID0gMzAwMDA7XG4gICAgfVxuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmRpc21pc3NBbGVydCgpO1xuICAgIH0sIHRoaXMuZXJyb3IuZHVyYXRpb24pO1xuICB9XG5cbiAgZGlzbWlzc0FsZXJ0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmVycm9yLmlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuZXJyb3JzLmRpc21pc3NHbG9iYWxOb3RpZmljYXRpb24odGhpcy5lcnJvcik7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYWxlcnRcIiBbbmdDbGFzc109XCJlcnJvci5sZXZlbFwiPlxuICA8ZGl2IGNsYXNzPVwibWVzc2FnZVwiPlxuICAgIDxzcGFuPnt7IGVycm9yLm1lc3NhZ2UgfX08L3NwYW4+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiYWxlcnQtZW5kXCI+XG4gICAgQGlmIChlcnJvci5saW5rKSB7XG4gICAgPHNwYW4gW3JvdXRlckxpbmtdPVwiZXJyb3IubGlua1wiIGNsYXNzPVwibGlua1wiPlZpZXc8L3NwYW4+XG4gICAgfVxuICAgIDxidXR0b24gKGNsaWNrKT1cImRpc21pc3NBbGVydCgpXCIgbWF0LWljb24tYnV0dG9uIGFyaWEtbGFiZWw9XCJDbG9zZSBBbGVydFwiPlxuICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|