@valtimo/access-control-management 11.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 +33 -0
- package/esm2022/lib/access-control-management-routing.module.mjs +55 -0
- package/esm2022/lib/access-control-management.module.mjs +101 -0
- package/esm2022/lib/components/delete-role-modal/delete-role-modal.component.mjs +39 -0
- package/esm2022/lib/components/editor/access-control-editor.component.mjs +181 -0
- package/esm2022/lib/components/export-role-modal/export-role-modal.component.mjs +78 -0
- package/esm2022/lib/components/overview/access-control-overview.component.mjs +117 -0
- package/esm2022/lib/components/role-metadata-modal/role-metadata-modal.component.mjs +79 -0
- package/esm2022/lib/models/index.mjs +17 -0
- package/esm2022/lib/models/role.model.mjs +17 -0
- package/esm2022/lib/services/access-control-export.service.mjs +53 -0
- package/esm2022/lib/services/access-control.service.mjs +72 -0
- package/esm2022/lib/services/index.mjs +17 -0
- package/esm2022/public-api.mjs +22 -0
- package/esm2022/valtimo-access-control-management.mjs +5 -0
- package/fesm2022/valtimo-access-control-management.mjs +792 -0
- package/fesm2022/valtimo-access-control-management.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/access-control-management-routing.module.d.ts +8 -0
- package/lib/access-control-management.module.d.ts +17 -0
- package/lib/components/delete-role-modal/delete-role-modal.component.d.ts +11 -0
- package/lib/components/editor/access-control-editor.component.d.ts +52 -0
- package/lib/components/export-role-modal/export-role-modal.component.d.ts +23 -0
- package/lib/components/overview/access-control-overview.component.d.ts +39 -0
- package/lib/components/role-metadata-modal/role-metadata-modal.component.d.ts +24 -0
- package/lib/models/index.d.ts +1 -0
- package/lib/models/role.model.d.ts +13 -0
- package/lib/services/access-control-export.service.d.ts +12 -0
- package/lib/services/access-control.service.d.ts +24 -0
- package/lib/services/index.d.ts +1 -0
- package/package.json +25 -0
- package/public-api.d.ts +3 -0
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2015-2023 Ritense BV, the Netherlands.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { ChangeDetectionStrategy, Component, ViewChild } from '@angular/core';
|
|
17
|
+
import { CARBON_CONSTANTS, CarbonListComponent, ViewType } from '@valtimo/components';
|
|
18
|
+
import { BehaviorSubject, delay, finalize, Subject, tap } from 'rxjs';
|
|
19
|
+
import * as i0 from "@angular/core";
|
|
20
|
+
import * as i1 from "../../services/access-control.service";
|
|
21
|
+
import * as i2 from "../../services/access-control-export.service";
|
|
22
|
+
import * as i3 from "@angular/router";
|
|
23
|
+
import * as i4 from "@angular/common";
|
|
24
|
+
import * as i5 from "carbon-components-angular";
|
|
25
|
+
import * as i6 from "@valtimo/components";
|
|
26
|
+
import * as i7 from "../role-metadata-modal/role-metadata-modal.component";
|
|
27
|
+
import * as i8 from "../delete-role-modal/delete-role-modal.component";
|
|
28
|
+
import * as i9 from "../export-role-modal/export-role-modal.component";
|
|
29
|
+
import * as i10 from "@ngx-translate/core";
|
|
30
|
+
export class AccessControlOverviewComponent {
|
|
31
|
+
constructor(accessControlService, accessControlExportService, router) {
|
|
32
|
+
this.accessControlService = accessControlService;
|
|
33
|
+
this.accessControlExportService = accessControlExportService;
|
|
34
|
+
this.router = router;
|
|
35
|
+
this.fields = [
|
|
36
|
+
{
|
|
37
|
+
viewType: ViewType.TEXT,
|
|
38
|
+
key: 'roleKey',
|
|
39
|
+
label: 'accessControl.roles.key',
|
|
40
|
+
},
|
|
41
|
+
];
|
|
42
|
+
this.roles$ = this.accessControlService.roles$;
|
|
43
|
+
this.loading$ = this.accessControlService.loading$;
|
|
44
|
+
this.skeleton$ = new BehaviorSubject(false);
|
|
45
|
+
this.showAddModal$ = new BehaviorSubject(false);
|
|
46
|
+
this.showDeleteModal$ = new BehaviorSubject(false);
|
|
47
|
+
this.showExportModal$ = new BehaviorSubject(false);
|
|
48
|
+
this.selectedRowKeys$ = new BehaviorSubject([]);
|
|
49
|
+
this.resetExportType$ = new Subject();
|
|
50
|
+
this.exportDisabled$ = new BehaviorSubject(false);
|
|
51
|
+
}
|
|
52
|
+
ngOnInit() {
|
|
53
|
+
this.accessControlService.loadRoles();
|
|
54
|
+
}
|
|
55
|
+
openAddModal() {
|
|
56
|
+
this.showAddModal$.next(true);
|
|
57
|
+
}
|
|
58
|
+
onAdd(data) {
|
|
59
|
+
this.showAddModal$.next(false);
|
|
60
|
+
if (!data) {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
this.accessControlService.dispatchAction(this.accessControlService.addRole(data).pipe(finalize(() => {
|
|
64
|
+
this.showAddModal$.next(false);
|
|
65
|
+
})));
|
|
66
|
+
}
|
|
67
|
+
showDeleteModal() {
|
|
68
|
+
this.setSelectedRoleKeys();
|
|
69
|
+
this.showDeleteModal$.next(true);
|
|
70
|
+
}
|
|
71
|
+
showExportModal() {
|
|
72
|
+
this.setSelectedRoleKeys();
|
|
73
|
+
this.showExportModal$.next(true);
|
|
74
|
+
}
|
|
75
|
+
closeExportModal() {
|
|
76
|
+
this.showExportModal$.next(false);
|
|
77
|
+
}
|
|
78
|
+
onDelete(roles) {
|
|
79
|
+
this.enableSkeleton();
|
|
80
|
+
this.accessControlService.dispatchAction(this.accessControlService.deleteRoles({ roles }).pipe(finalize(() => {
|
|
81
|
+
this.disableSkeleton();
|
|
82
|
+
})));
|
|
83
|
+
}
|
|
84
|
+
onExport(event) {
|
|
85
|
+
this.exportDisabled$.next(true);
|
|
86
|
+
this.accessControlExportService
|
|
87
|
+
.exportRoles(event)
|
|
88
|
+
.pipe(tap(() => {
|
|
89
|
+
this.resetExportType$.next(null);
|
|
90
|
+
}), delay(CARBON_CONSTANTS.modalAnimationMs), tap(() => {
|
|
91
|
+
this.exportDisabled$.next(false);
|
|
92
|
+
}))
|
|
93
|
+
.subscribe();
|
|
94
|
+
}
|
|
95
|
+
onRowClick(role) {
|
|
96
|
+
this.router.navigate([`/access-control/${role.roleKey}`]);
|
|
97
|
+
}
|
|
98
|
+
enableSkeleton() {
|
|
99
|
+
this.skeleton$.next(true);
|
|
100
|
+
}
|
|
101
|
+
disableSkeleton() {
|
|
102
|
+
this.skeleton$.next(false);
|
|
103
|
+
}
|
|
104
|
+
setSelectedRoleKeys() {
|
|
105
|
+
this.selectedRowKeys$.next(this.carbonList.selectedItems.map((role) => role.roleKey));
|
|
106
|
+
}
|
|
107
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AccessControlOverviewComponent, deps: [{ token: i1.AccessControlService }, { token: i2.AccessControlExportService }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
108
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AccessControlOverviewComponent, selector: "ng-component", viewQueries: [{ propertyName: "carbonList", first: true, predicate: CarbonListComponent, descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-carbon-list\n [header]=\"true\"\n [items]=\"roles$ | async\"\n [fields]=\"fields\"\n [loading]=\"loading$ | async\"\n [showSelectionColumn]=\"true\"\n (rowClicked)=\"onRowClick($event)\"\n>\n <ng-container header> {{ 'accessControl.roles.title' | translate }} </ng-container>\n\n <div carbonToolbarContent>\n <ng-container [ngTemplateOutlet]=\"addRoleButton\"></ng-container>\n </div>\n\n <ng-container carbonToolbarActions>\n <button cdsButton=\"primary\" (click)=\"showDeleteModal()\">\n {{ 'interface.delete' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n\n <button cdsButton=\"primary\" (click)=\"showExportModal()\">\n {{ 'interface.export' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"download\" size=\"16\"></svg>\n </button>\n </ng-container>\n\n <valtimo-no-results\n [action]=\"addRoleButton\"\n description=\"{{ 'accessControl.roles.noResults.description' | translate }}\"\n title=\"{{ 'accessControl.roles.noResults.title' | translate }}\"\n ></valtimo-no-results>\n</valtimo-carbon-list>\n\n<valtimo-role-metadata-modal\n [open]=\"showAddModal$ | async\"\n (closeEvent)=\"onAdd($event)\"\n></valtimo-role-metadata-modal>\n\n<ng-container *ngIf=\"{selectedRowKeys: selectedRowKeys$ | async} as obs\">\n <valtimo-delete-role-modal\n [deleteRowKeys]=\"obs.selectedRowKeys\"\n [showDeleteModal$]=\"showDeleteModal$\"\n (deleteEvent)=\"onDelete($event)\"\n >\n </valtimo-delete-role-modal>\n\n <valtimo-export-role-modal\n [disabled]=\"exportDisabled$ | async\"\n [exportRowKeys]=\"obs.selectedRowKeys\"\n [open]=\"showExportModal$ | async\"\n [reset$]=\"resetExportType$\"\n (exportEvent)=\"onExport($event)\"\n (closeEvent)=\"closeExportModal()\"\n >\n </valtimo-export-role-modal>\n</ng-container>\n\n<ng-template #addRoleButton>\n <button cdsButton=\"primary\" (click)=\"openAddModal()\">\n {{ 'accessControl.roles.add' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i5.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i5.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: i6.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "actions", "header", "initialSortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged"] }, { kind: "component", type: i6.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title"] }, { kind: "component", type: i7.RoleMetadataModalComponent, selector: "valtimo-role-metadata-modal", inputs: ["open", "type", "defaultKeyValue"], outputs: ["closeEvent"] }, { kind: "component", type: i8.DeleteRoleModalComponent, selector: "valtimo-delete-role-modal", inputs: ["deleteRowKeys", "showDeleteModal$"], outputs: ["deleteEvent"] }, { kind: "component", type: i9.ExportRoleModalComponent, selector: "valtimo-export-role-modal", inputs: ["open", "exportRowKeys", "reset$", "disabled"], outputs: ["exportEvent", "closeEvent"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i10.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
109
|
+
}
|
|
110
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AccessControlOverviewComponent, decorators: [{
|
|
111
|
+
type: Component,
|
|
112
|
+
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-carbon-list\n [header]=\"true\"\n [items]=\"roles$ | async\"\n [fields]=\"fields\"\n [loading]=\"loading$ | async\"\n [showSelectionColumn]=\"true\"\n (rowClicked)=\"onRowClick($event)\"\n>\n <ng-container header> {{ 'accessControl.roles.title' | translate }} </ng-container>\n\n <div carbonToolbarContent>\n <ng-container [ngTemplateOutlet]=\"addRoleButton\"></ng-container>\n </div>\n\n <ng-container carbonToolbarActions>\n <button cdsButton=\"primary\" (click)=\"showDeleteModal()\">\n {{ 'interface.delete' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n\n <button cdsButton=\"primary\" (click)=\"showExportModal()\">\n {{ 'interface.export' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"download\" size=\"16\"></svg>\n </button>\n </ng-container>\n\n <valtimo-no-results\n [action]=\"addRoleButton\"\n description=\"{{ 'accessControl.roles.noResults.description' | translate }}\"\n title=\"{{ 'accessControl.roles.noResults.title' | translate }}\"\n ></valtimo-no-results>\n</valtimo-carbon-list>\n\n<valtimo-role-metadata-modal\n [open]=\"showAddModal$ | async\"\n (closeEvent)=\"onAdd($event)\"\n></valtimo-role-metadata-modal>\n\n<ng-container *ngIf=\"{selectedRowKeys: selectedRowKeys$ | async} as obs\">\n <valtimo-delete-role-modal\n [deleteRowKeys]=\"obs.selectedRowKeys\"\n [showDeleteModal$]=\"showDeleteModal$\"\n (deleteEvent)=\"onDelete($event)\"\n >\n </valtimo-delete-role-modal>\n\n <valtimo-export-role-modal\n [disabled]=\"exportDisabled$ | async\"\n [exportRowKeys]=\"obs.selectedRowKeys\"\n [open]=\"showExportModal$ | async\"\n [reset$]=\"resetExportType$\"\n (exportEvent)=\"onExport($event)\"\n (closeEvent)=\"closeExportModal()\"\n >\n </valtimo-export-role-modal>\n</ng-container>\n\n<ng-template #addRoleButton>\n <button cdsButton=\"primary\" (click)=\"openAddModal()\">\n {{ 'accessControl.roles.add' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\n" }]
|
|
113
|
+
}], ctorParameters: function () { return [{ type: i1.AccessControlService }, { type: i2.AccessControlExportService }, { type: i3.Router }]; }, propDecorators: { carbonList: [{
|
|
114
|
+
type: ViewChild,
|
|
115
|
+
args: [CarbonListComponent]
|
|
116
|
+
}] } });
|
|
117
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzLWNvbnRyb2wtb3ZlcnZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9hY2Nlc3MtY29udHJvbC1tYW5hZ2VtZW50L3NyYy9saWIvY29tcG9uZW50cy9vdmVydmlldy9hY2Nlc3MtY29udHJvbC1vdmVydmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2FjY2Vzcy1jb250cm9sLW1hbmFnZW1lbnQvc3JjL2xpYi9jb21wb25lbnRzL292ZXJ2aWV3L2FjY2Vzcy1jb250cm9sLW92ZXJ2aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBVSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFcEYsT0FBTyxFQUFDLGdCQUFnQixFQUFFLG1CQUFtQixFQUFnQixRQUFRLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRyxPQUFPLEVBQUMsZUFBZSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQWMsT0FBTyxFQUFFLEdBQUcsRUFBQyxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7O0FBU2hGLE1BQU0sT0FBTyw4QkFBOEI7SUFxQnpDLFlBQ21CLG9CQUEwQyxFQUMxQywwQkFBc0QsRUFDdEQsTUFBYztRQUZkLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsK0JBQTBCLEdBQTFCLDBCQUEwQixDQUE0QjtRQUN0RCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBckIxQixXQUFNLEdBQW1CO1lBQzlCO2dCQUNFLFFBQVEsRUFBRSxRQUFRLENBQUMsSUFBSTtnQkFDdkIsR0FBRyxFQUFFLFNBQVM7Z0JBQ2QsS0FBSyxFQUFFLHlCQUF5QjthQUNqQztTQUNGLENBQUM7UUFFYyxXQUFNLEdBQXVCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUM7UUFDOUQsYUFBUSxHQUF3QixJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDO1FBQ25FLGNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNoRCxrQkFBYSxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3BELHFCQUFnQixHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3ZELHFCQUFnQixHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3ZELHFCQUFnQixHQUFHLElBQUksZUFBZSxDQUFnQixFQUFFLENBQUMsQ0FBQztRQUMxRCxxQkFBZ0IsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ3ZDLG9CQUFlLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7SUFNbkUsQ0FBQztJQUVHLFFBQVE7UUFDYixJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVNLFlBQVk7UUFDakIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVNLEtBQUssQ0FBQyxJQUFpQjtRQUM1QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUvQixJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1QsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGNBQWMsQ0FDdEMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQzFDLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FDSCxDQUNGLENBQUM7SUFDSixDQUFDO0lBRU0sZUFBZTtRQUNwQixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFTSxlQUFlO1FBQ3BCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVNLGdCQUFnQjtRQUNyQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFTSxRQUFRLENBQUMsS0FBb0I7UUFDbEMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRXRCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxjQUFjLENBQ3RDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FDakQsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FDSCxDQUNGLENBQUM7SUFDSixDQUFDO0lBRU0sUUFBUSxDQUFDLEtBQXVCO1FBQ3JDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWhDLElBQUksQ0FBQywwQkFBMEI7YUFDNUIsV0FBVyxDQUFDLEtBQUssQ0FBQzthQUNsQixJQUFJLENBQ0gsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNQLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkMsQ0FBQyxDQUFDLEVBQ0YsS0FBSyxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLEVBQ3hDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDUCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FDSDthQUNBLFNBQVMsRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFTSxVQUFVLENBQUMsSUFBVTtRQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLG1CQUFtQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFTyxjQUFjO1FBQ3BCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFTyxlQUFlO1FBQ3JCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFTyxtQkFBbUI7UUFDekIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFVLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzlGLENBQUM7K0dBNUdVLDhCQUE4QjttR0FBOUIsOEJBQThCLGdHQUM5QixtQkFBbUIsZ0RDNUJoQywrdEZBa0ZBOzs0RkR2RGEsOEJBQThCO2tCQUoxQyxTQUFTO3NDQUVTLHVCQUF1QixDQUFDLE1BQU07eUtBR2YsVUFBVTtzQkFBekMsU0FBUzt1QkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMyBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1JvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7Q0FSQk9OX0NPTlNUQU5UUywgQ2FyYm9uTGlzdENvbXBvbmVudCwgQ29sdW1uQ29uZmlnLCBWaWV3VHlwZX0gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgZGVsYXksIGZpbmFsaXplLCBPYnNlcnZhYmxlLCBTdWJqZWN0LCB0YXB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtFeHBvcnRSb2xlT3V0cHV0LCBSb2xlfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtBY2Nlc3NDb250cm9sRXhwb3J0U2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvYWNjZXNzLWNvbnRyb2wtZXhwb3J0LnNlcnZpY2UnO1xuaW1wb3J0IHtBY2Nlc3NDb250cm9sU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvYWNjZXNzLWNvbnRyb2wuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vYWNjZXNzLWNvbnRyb2wtb3ZlcnZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQWNjZXNzQ29udHJvbE92ZXJ2aWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQFZpZXdDaGlsZChDYXJib25MaXN0Q29tcG9uZW50KSBjYXJib25MaXN0OiBDYXJib25MaXN0Q29tcG9uZW50PFJvbGU+O1xuXG4gIHB1YmxpYyBmaWVsZHM6IENvbHVtbkNvbmZpZ1tdID0gW1xuICAgIHtcbiAgICAgIHZpZXdUeXBlOiBWaWV3VHlwZS5URVhULFxuICAgICAga2V5OiAncm9sZUtleScsXG4gICAgICBsYWJlbDogJ2FjY2Vzc0NvbnRyb2wucm9sZXMua2V5JyxcbiAgICB9LFxuICBdO1xuXG4gIHB1YmxpYyByZWFkb25seSByb2xlcyQ6IE9ic2VydmFibGU8Um9sZVtdPiA9IHRoaXMuYWNjZXNzQ29udHJvbFNlcnZpY2Uucm9sZXMkO1xuICBwdWJsaWMgcmVhZG9ubHkgbG9hZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmFjY2Vzc0NvbnRyb2xTZXJ2aWNlLmxvYWRpbmckO1xuICBwdWJsaWMgcmVhZG9ubHkgc2tlbGV0b24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBzaG93QWRkTW9kYWwkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBzaG93RGVsZXRlTW9kYWwkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBzaG93RXhwb3J0TW9kYWwkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBzZWxlY3RlZFJvd0tleXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBcnJheTxzdHJpbmc+PihbXSk7XG4gIHB1YmxpYyByZWFkb25seSByZXNldEV4cG9ydFR5cGUkID0gbmV3IFN1YmplY3Q8bnVsbD4oKTtcbiAgcHVibGljIHJlYWRvbmx5IGV4cG9ydERpc2FibGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWNjZXNzQ29udHJvbFNlcnZpY2U6IEFjY2Vzc0NvbnRyb2xTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWNjZXNzQ29udHJvbEV4cG9ydFNlcnZpY2U6IEFjY2Vzc0NvbnRyb2xFeHBvcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXJcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmFjY2Vzc0NvbnRyb2xTZXJ2aWNlLmxvYWRSb2xlcygpO1xuICB9XG5cbiAgcHVibGljIG9wZW5BZGRNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dBZGRNb2RhbCQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkFkZChkYXRhOiBSb2xlIHwgbnVsbCk6IHZvaWQge1xuICAgIHRoaXMuc2hvd0FkZE1vZGFsJC5uZXh0KGZhbHNlKTtcblxuICAgIGlmICghZGF0YSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYWNjZXNzQ29udHJvbFNlcnZpY2UuZGlzcGF0Y2hBY3Rpb24oXG4gICAgICB0aGlzLmFjY2Vzc0NvbnRyb2xTZXJ2aWNlLmFkZFJvbGUoZGF0YSkucGlwZShcbiAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2hvd0FkZE1vZGFsJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHNob3dEZWxldGVNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldFNlbGVjdGVkUm9sZUtleXMoKTtcbiAgICB0aGlzLnNob3dEZWxldGVNb2RhbCQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBzaG93RXhwb3J0TW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRTZWxlY3RlZFJvbGVLZXlzKCk7XG4gICAgdGhpcy5zaG93RXhwb3J0TW9kYWwkLm5leHQodHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgY2xvc2VFeHBvcnRNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dFeHBvcnRNb2RhbCQubmV4dChmYWxzZSk7XG4gIH1cblxuICBwdWJsaWMgb25EZWxldGUocm9sZXM6IEFycmF5PHN0cmluZz4pOiB2b2lkIHtcbiAgICB0aGlzLmVuYWJsZVNrZWxldG9uKCk7XG5cbiAgICB0aGlzLmFjY2Vzc0NvbnRyb2xTZXJ2aWNlLmRpc3BhdGNoQWN0aW9uKFxuICAgICAgdGhpcy5hY2Nlc3NDb250cm9sU2VydmljZS5kZWxldGVSb2xlcyh7cm9sZXN9KS5waXBlKFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5kaXNhYmxlU2tlbGV0b24oKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcHVibGljIG9uRXhwb3J0KGV2ZW50OiBFeHBvcnRSb2xlT3V0cHV0KTogdm9pZCB7XG4gICAgdGhpcy5leHBvcnREaXNhYmxlZCQubmV4dCh0cnVlKTtcblxuICAgIHRoaXMuYWNjZXNzQ29udHJvbEV4cG9ydFNlcnZpY2VcbiAgICAgIC5leHBvcnRSb2xlcyhldmVudClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMucmVzZXRFeHBvcnRUeXBlJC5uZXh0KG51bGwpO1xuICAgICAgICB9KSxcbiAgICAgICAgZGVsYXkoQ0FSQk9OX0NPTlNUQU5UUy5tb2RhbEFuaW1hdGlvbk1zKSxcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmV4cG9ydERpc2FibGVkJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBvblJvd0NsaWNrKHJvbGU6IFJvbGUpOiB2b2lkIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYC9hY2Nlc3MtY29udHJvbC8ke3JvbGUucm9sZUtleX1gXSk7XG4gIH1cblxuICBwcml2YXRlIGVuYWJsZVNrZWxldG9uKCk6IHZvaWQge1xuICAgIHRoaXMuc2tlbGV0b24kLm5leHQodHJ1ZSk7XG4gIH1cblxuICBwcml2YXRlIGRpc2FibGVTa2VsZXRvbigpOiB2b2lkIHtcbiAgICB0aGlzLnNrZWxldG9uJC5uZXh0KGZhbHNlKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0U2VsZWN0ZWRSb2xlS2V5cygpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkUm93S2V5cyQubmV4dCh0aGlzLmNhcmJvbkxpc3Quc2VsZWN0ZWRJdGVtcy5tYXAoKHJvbGU6IFJvbGUpID0+IHJvbGUucm9sZUtleSkpO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyMyBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjx2YWx0aW1vLWNhcmJvbi1saXN0XG4gIFtoZWFkZXJdPVwidHJ1ZVwiXG4gIFtpdGVtc109XCJyb2xlcyQgfCBhc3luY1wiXG4gIFtmaWVsZHNdPVwiZmllbGRzXCJcbiAgW2xvYWRpbmddPVwibG9hZGluZyQgfCBhc3luY1wiXG4gIFtzaG93U2VsZWN0aW9uQ29sdW1uXT1cInRydWVcIlxuICAocm93Q2xpY2tlZCk9XCJvblJvd0NsaWNrKCRldmVudClcIlxuPlxuICA8bmctY29udGFpbmVyIGhlYWRlcj4ge3sgJ2FjY2Vzc0NvbnRyb2wucm9sZXMudGl0bGUnIHwgdHJhbnNsYXRlIH19IDwvbmctY29udGFpbmVyPlxuXG4gIDxkaXYgY2FyYm9uVG9vbGJhckNvbnRlbnQ+XG4gICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJhZGRSb2xlQnV0dG9uXCI+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuXG4gIDxuZy1jb250YWluZXIgY2FyYm9uVG9vbGJhckFjdGlvbnM+XG4gICAgPGJ1dHRvbiBjZHNCdXR0b249XCJwcmltYXJ5XCIgKGNsaWNrKT1cInNob3dEZWxldGVNb2RhbCgpXCI+XG4gICAgICB7eyAnaW50ZXJmYWNlLmRlbGV0ZScgfCB0cmFuc2xhdGUgfX1cblxuICAgICAgPHN2ZyBjbGFzcz1cImNkcy0tYnRuX19pY29uXCIgY2RzSWNvbj1cInRyYXNoLWNhblwiIHNpemU9XCIxNlwiPjwvc3ZnPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGJ1dHRvbiBjZHNCdXR0b249XCJwcmltYXJ5XCIgKGNsaWNrKT1cInNob3dFeHBvcnRNb2RhbCgpXCI+XG4gICAgICB7eyAnaW50ZXJmYWNlLmV4cG9ydCcgfCB0cmFuc2xhdGUgfX1cblxuICAgICAgPHN2ZyBjbGFzcz1cImNkcy0tYnRuX19pY29uXCIgY2RzSWNvbj1cImRvd25sb2FkXCIgc2l6ZT1cIjE2XCI+PC9zdmc+XG4gICAgPC9idXR0b24+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDx2YWx0aW1vLW5vLXJlc3VsdHNcbiAgICBbYWN0aW9uXT1cImFkZFJvbGVCdXR0b25cIlxuICAgIGRlc2NyaXB0aW9uPVwie3sgJ2FjY2Vzc0NvbnRyb2wucm9sZXMubm9SZXN1bHRzLmRlc2NyaXB0aW9uJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgdGl0bGU9XCJ7eyAnYWNjZXNzQ29udHJvbC5yb2xlcy5ub1Jlc3VsdHMudGl0bGUnIHwgdHJhbnNsYXRlIH19XCJcbiAgPjwvdmFsdGltby1uby1yZXN1bHRzPlxuPC92YWx0aW1vLWNhcmJvbi1saXN0PlxuXG48dmFsdGltby1yb2xlLW1ldGFkYXRhLW1vZGFsXG4gIFtvcGVuXT1cInNob3dBZGRNb2RhbCQgfCBhc3luY1wiXG4gIChjbG9zZUV2ZW50KT1cIm9uQWRkKCRldmVudClcIlxuPjwvdmFsdGltby1yb2xlLW1ldGFkYXRhLW1vZGFsPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwie3NlbGVjdGVkUm93S2V5czogc2VsZWN0ZWRSb3dLZXlzJCB8IGFzeW5jfSBhcyBvYnNcIj5cbiAgPHZhbHRpbW8tZGVsZXRlLXJvbGUtbW9kYWxcbiAgICBbZGVsZXRlUm93S2V5c109XCJvYnMuc2VsZWN0ZWRSb3dLZXlzXCJcbiAgICBbc2hvd0RlbGV0ZU1vZGFsJF09XCJzaG93RGVsZXRlTW9kYWwkXCJcbiAgICAoZGVsZXRlRXZlbnQpPVwib25EZWxldGUoJGV2ZW50KVwiXG4gID5cbiAgPC92YWx0aW1vLWRlbGV0ZS1yb2xlLW1vZGFsPlxuXG4gIDx2YWx0aW1vLWV4cG9ydC1yb2xlLW1vZGFsXG4gICAgW2Rpc2FibGVkXT1cImV4cG9ydERpc2FibGVkJCB8IGFzeW5jXCJcbiAgICBbZXhwb3J0Um93S2V5c109XCJvYnMuc2VsZWN0ZWRSb3dLZXlzXCJcbiAgICBbb3Blbl09XCJzaG93RXhwb3J0TW9kYWwkIHwgYXN5bmNcIlxuICAgIFtyZXNldCRdPVwicmVzZXRFeHBvcnRUeXBlJFwiXG4gICAgKGV4cG9ydEV2ZW50KT1cIm9uRXhwb3J0KCRldmVudClcIlxuICAgIChjbG9zZUV2ZW50KT1cImNsb3NlRXhwb3J0TW9kYWwoKVwiXG4gID5cbiAgPC92YWx0aW1vLWV4cG9ydC1yb2xlLW1vZGFsPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjYWRkUm9sZUJ1dHRvbj5cbiAgPGJ1dHRvbiBjZHNCdXR0b249XCJwcmltYXJ5XCIgKGNsaWNrKT1cIm9wZW5BZGRNb2RhbCgpXCI+XG4gICAge3sgJ2FjY2Vzc0NvbnRyb2wucm9sZXMuYWRkJyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgPHN2ZyBjbGFzcz1cImNkcy0tYnRuX19pY29uXCIgY2RzSWNvbj1cImFkZFwiIHNpemU9XCIxNlwiPjwvc3ZnPlxuICA8L2J1dHRvbj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2015-2023 Ritense BV, the Netherlands.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, } from '@angular/core';
|
|
17
|
+
import { Validators } from '@angular/forms';
|
|
18
|
+
import { CARBON_CONSTANTS } from '@valtimo/components';
|
|
19
|
+
import * as i0 from "@angular/core";
|
|
20
|
+
import * as i1 from "@angular/forms";
|
|
21
|
+
import * as i2 from "@angular/common";
|
|
22
|
+
import * as i3 from "carbon-components-angular";
|
|
23
|
+
import * as i4 from "@ngx-translate/core";
|
|
24
|
+
export class RoleMetadataModalComponent {
|
|
25
|
+
set defaultKeyValue(value) {
|
|
26
|
+
this._defaultKeyValue = value;
|
|
27
|
+
this.setDefaultKeyValue(value);
|
|
28
|
+
}
|
|
29
|
+
get key() {
|
|
30
|
+
return this.form?.get('key');
|
|
31
|
+
}
|
|
32
|
+
constructor(fb) {
|
|
33
|
+
this.fb = fb;
|
|
34
|
+
this.open = false;
|
|
35
|
+
this.type = 'add';
|
|
36
|
+
this.closeEvent = new EventEmitter();
|
|
37
|
+
this.form = this.fb.group({
|
|
38
|
+
key: this.fb.control('', Validators.required),
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
ngOnInit() { }
|
|
42
|
+
onCancel() {
|
|
43
|
+
this.closeEvent.emit(null);
|
|
44
|
+
this.resetForm();
|
|
45
|
+
}
|
|
46
|
+
onConfirm() {
|
|
47
|
+
if (!this.key) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
this.closeEvent.emit({ roleKey: this.key.value });
|
|
51
|
+
this.resetForm();
|
|
52
|
+
}
|
|
53
|
+
setDefaultKeyValue(value) {
|
|
54
|
+
this.key.setValue(value);
|
|
55
|
+
}
|
|
56
|
+
resetForm() {
|
|
57
|
+
setTimeout(() => {
|
|
58
|
+
this.form.reset();
|
|
59
|
+
if (this.type === 'edit') {
|
|
60
|
+
this.setDefaultKeyValue(this._defaultKeyValue);
|
|
61
|
+
}
|
|
62
|
+
}, CARBON_CONSTANTS.modalAnimationMs);
|
|
63
|
+
}
|
|
64
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RoleMetadataModalComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
65
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RoleMetadataModalComponent, selector: "valtimo-role-metadata-modal", inputs: { open: "open", type: "type", defaultKeyValue: "defaultKeyValue" }, outputs: { closeEvent: "closeEvent" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal\n *ngIf=\"{\n isAdd: type === 'add'\n } as vars\"\n [open]=\"open\"\n showFooter=\"true\"\n [title]=\"vars.title\"\n valtimoCdsModal\n>\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCancel()\">\n <h3 cdsModalHeaderHeading>\n {{\n vars.isAdd\n ? ('accessControl.roles.add' | translate)\n : ('accessControl.roles.editRole' | translate)\n }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent>\n <form [formGroup]=\"form\">\n <cds-label [invalid]=\"key.dirty && key.invalid\">\n {{ 'accessControl.roles.name' | translate }}\n\n <input\n formControlName=\"key\"\n cdsText\n placeholder=\"{{ 'accessControl.roles.name' | translate }}\"\n [attr.modal-primary-focus]=\"true\"\n [invalid]=\"key.dirty && key.invalid\"\n />\n </cds-label>\n </form>\n </section>\n\n <cds-modal-footer>\n <button cdsButton=\"ghost\" (click)=\"onCancel()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button [disabled]=\"this.form.invalid\" (click)=\"onConfirm()\" cdsButton=\"primary\">\n {{ vars.isAdd ? ('interface.create' | translate) : ('interface.save' | translate) }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i3.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i3.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i3.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i3.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i3.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i3.Label, selector: "cds-label, ibm-label", inputs: ["labelInputID", "disabled", "skeleton", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i3.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
66
|
+
}
|
|
67
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RoleMetadataModalComponent, decorators: [{
|
|
68
|
+
type: Component,
|
|
69
|
+
args: [{ selector: 'valtimo-role-metadata-modal', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal\n *ngIf=\"{\n isAdd: type === 'add'\n } as vars\"\n [open]=\"open\"\n showFooter=\"true\"\n [title]=\"vars.title\"\n valtimoCdsModal\n>\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCancel()\">\n <h3 cdsModalHeaderHeading>\n {{\n vars.isAdd\n ? ('accessControl.roles.add' | translate)\n : ('accessControl.roles.editRole' | translate)\n }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent>\n <form [formGroup]=\"form\">\n <cds-label [invalid]=\"key.dirty && key.invalid\">\n {{ 'accessControl.roles.name' | translate }}\n\n <input\n formControlName=\"key\"\n cdsText\n placeholder=\"{{ 'accessControl.roles.name' | translate }}\"\n [attr.modal-primary-focus]=\"true\"\n [invalid]=\"key.dirty && key.invalid\"\n />\n </cds-label>\n </form>\n </section>\n\n <cds-modal-footer>\n <button cdsButton=\"ghost\" (click)=\"onCancel()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button [disabled]=\"this.form.invalid\" (click)=\"onConfirm()\" cdsButton=\"primary\">\n {{ vars.isAdd ? ('interface.create' | translate) : ('interface.save' | translate) }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n" }]
|
|
70
|
+
}], ctorParameters: function () { return [{ type: i1.FormBuilder }]; }, propDecorators: { open: [{
|
|
71
|
+
type: Input
|
|
72
|
+
}], type: [{
|
|
73
|
+
type: Input
|
|
74
|
+
}], defaultKeyValue: [{
|
|
75
|
+
type: Input
|
|
76
|
+
}], closeEvent: [{
|
|
77
|
+
type: Output
|
|
78
|
+
}] } });
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS1tZXRhZGF0YS1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2FjY2Vzcy1jb250cm9sLW1hbmFnZW1lbnQvc3JjL2xpYi9jb21wb25lbnRzL3JvbGUtbWV0YWRhdGEtbW9kYWwvcm9sZS1tZXRhZGF0YS1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2FjY2Vzcy1jb250cm9sLW1hbmFnZW1lbnQvc3JjL2xpYi9jb21wb25lbnRzL3JvbGUtbWV0YWRhdGEtbW9kYWwvcm9sZS1tZXRhZGF0YS1tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBYyxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7O0FBT3JELE1BQU0sT0FBTywwQkFBMEI7SUFHckMsSUFBYSxlQUFlLENBQUMsS0FBYTtRQUN4QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQzlCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBU0QsSUFBVyxHQUFHO1FBQ1osT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsWUFBNkIsRUFBZTtRQUFmLE9BQUUsR0FBRixFQUFFLENBQWE7UUFsQm5DLFNBQUksR0FBRyxLQUFLLENBQUM7UUFDYixTQUFJLEdBQXNCLEtBQUssQ0FBQztRQUsvQixlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQWUsQ0FBQztRQUVoRCxTQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDMUIsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1NBQzlDLENBQUMsQ0FBQztJQVE0QyxDQUFDO0lBRXpDLFFBQVEsS0FBVSxDQUFDO0lBRW5CLFFBQVE7UUFDYixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVNLFNBQVM7UUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNiLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVPLGtCQUFrQixDQUFDLEtBQWE7UUFDdEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVPLFNBQVM7UUFDZixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNsQixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFO2dCQUN4QixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7YUFDaEQ7UUFDSCxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUN4QyxDQUFDOytHQWhEVSwwQkFBMEI7bUdBQTFCLDBCQUEwQixzTENqQ3ZDLDY2REE2REE7OzRGRDVCYSwwQkFBMEI7a0JBTHRDLFNBQVM7K0JBQ0UsNkJBQTZCLG1CQUV0Qix1QkFBdUIsQ0FBQyxNQUFNO2tHQUd0QyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNPLGVBQWU7c0JBQTNCLEtBQUs7Z0JBSUksVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDIzIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Rm9ybUJ1aWxkZXIsIFZhbGlkYXRvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7Um9sZSwgUm9sZU1ldGFkYXRhTW9kYWx9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQge0NBUkJPTl9DT05TVEFOVFN9IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLXJvbGUtbWV0YWRhdGEtbW9kYWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vcm9sZS1tZXRhZGF0YS1tb2RhbC5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBSb2xlTWV0YWRhdGFNb2RhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIG9wZW4gPSBmYWxzZTtcbiAgQElucHV0KCkgdHlwZTogUm9sZU1ldGFkYXRhTW9kYWwgPSAnYWRkJztcbiAgQElucHV0KCkgc2V0IGRlZmF1bHRLZXlWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fZGVmYXVsdEtleVZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5zZXREZWZhdWx0S2V5VmFsdWUodmFsdWUpO1xuICB9XG4gIEBPdXRwdXQoKSBjbG9zZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxSb2xlIHwgbnVsbD4oKTtcblxuICBwdWJsaWMgZm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgIGtleTogdGhpcy5mYi5jb250cm9sKCcnLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgfSk7XG5cbiAgcHJpdmF0ZSBfZGVmYXVsdEtleVZhbHVlITogc3RyaW5nO1xuXG4gIHB1YmxpYyBnZXQga2V5KCkge1xuICAgIHJldHVybiB0aGlzLmZvcm0/LmdldCgna2V5Jyk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGZiOiBGb3JtQnVpbGRlcikge31cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7fVxuXG4gIHB1YmxpYyBvbkNhbmNlbCgpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlRXZlbnQuZW1pdChudWxsKTtcbiAgICB0aGlzLnJlc2V0Rm9ybSgpO1xuICB9XG5cbiAgcHVibGljIG9uQ29uZmlybSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMua2V5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5jbG9zZUV2ZW50LmVtaXQoe3JvbGVLZXk6IHRoaXMua2V5LnZhbHVlfSk7XG4gICAgdGhpcy5yZXNldEZvcm0oKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0RGVmYXVsdEtleVZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmtleS5zZXRWYWx1ZSh2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIHJlc2V0Rm9ybSgpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuZm9ybS5yZXNldCgpO1xuICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ2VkaXQnKSB7XG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdEtleVZhbHVlKHRoaXMuX2RlZmF1bHRLZXlWYWx1ZSk7XG4gICAgICB9XG4gICAgfSwgQ0FSQk9OX0NPTlNUQU5UUy5tb2RhbEFuaW1hdGlvbk1zKTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjMgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuXG48Y2RzLW1vZGFsXG4gICpuZ0lmPVwie1xuICAgIGlzQWRkOiB0eXBlID09PSAnYWRkJ1xuICB9IGFzIHZhcnNcIlxuICBbb3Blbl09XCJvcGVuXCJcbiAgc2hvd0Zvb3Rlcj1cInRydWVcIlxuICBbdGl0bGVdPVwidmFycy50aXRsZVwiXG4gIHZhbHRpbW9DZHNNb2RhbFxuPlxuICA8Y2RzLW1vZGFsLWhlYWRlciBbc2hvd0Nsb3NlQnV0dG9uXT1cInRydWVcIiAoY2xvc2VTZWxlY3QpPVwib25DYW5jZWwoKVwiPlxuICAgIDxoMyBjZHNNb2RhbEhlYWRlckhlYWRpbmc+XG4gICAgICB7e1xuICAgICAgICB2YXJzLmlzQWRkXG4gICAgICAgICAgPyAoJ2FjY2Vzc0NvbnRyb2wucm9sZXMuYWRkJyB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICA6ICgnYWNjZXNzQ29udHJvbC5yb2xlcy5lZGl0Um9sZScgfCB0cmFuc2xhdGUpXG4gICAgICB9fVxuICAgIDwvaDM+XG4gIDwvY2RzLW1vZGFsLWhlYWRlcj5cblxuICA8c2VjdGlvbiBjZHNNb2RhbENvbnRlbnQ+XG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gICAgICA8Y2RzLWxhYmVsIFtpbnZhbGlkXT1cImtleS5kaXJ0eSAmJiBrZXkuaW52YWxpZFwiPlxuICAgICAgICB7eyAnYWNjZXNzQ29udHJvbC5yb2xlcy5uYW1lJyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImtleVwiXG4gICAgICAgICAgY2RzVGV4dFxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2FjY2Vzc0NvbnRyb2wucm9sZXMubmFtZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgIFthdHRyLm1vZGFsLXByaW1hcnktZm9jdXNdPVwidHJ1ZVwiXG4gICAgICAgICAgW2ludmFsaWRdPVwia2V5LmRpcnR5ICYmIGtleS5pbnZhbGlkXCJcbiAgICAgICAgLz5cbiAgICAgIDwvY2RzLWxhYmVsPlxuICAgIDwvZm9ybT5cbiAgPC9zZWN0aW9uPlxuXG4gIDxjZHMtbW9kYWwtZm9vdGVyPlxuICAgIDxidXR0b24gY2RzQnV0dG9uPVwiZ2hvc3RcIiAoY2xpY2spPVwib25DYW5jZWwoKVwiPlxuICAgICAge3sgJ2ludGVyZmFjZS5jYW5jZWwnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCJ0aGlzLmZvcm0uaW52YWxpZFwiIChjbGljayk9XCJvbkNvbmZpcm0oKVwiIGNkc0J1dHRvbj1cInByaW1hcnlcIj5cbiAgICAgIHt7IHZhcnMuaXNBZGQgPyAoJ2ludGVyZmFjZS5jcmVhdGUnIHwgdHJhbnNsYXRlKSA6ICgnaW50ZXJmYWNlLnNhdmUnIHwgdHJhbnNsYXRlKSB9fVxuICAgIDwvYnV0dG9uPlxuICA8L2Nkcy1tb2RhbC1mb290ZXI+XG48L2Nkcy1tb2RhbD5cbiJdfQ==
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2015-2023 Ritense BV, the Netherlands.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
export * from './role.model';
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2FjY2Vzcy1jb250cm9sLW1hbmFnZW1lbnQvc3JjL2xpYi9tb2RlbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDIzIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcm9sZS5tb2RlbCc7XG4iXX0=
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2015-2023 Ritense BV, the Netherlands.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vYWNjZXNzLWNvbnRyb2wtbWFuYWdlbWVudC9zcmMvbGliL21vZGVscy9yb2xlLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjMgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW50ZXJmYWNlIFJvbGUge1xuICByb2xlS2V5OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBEZWxldGVSb2xlc1JlcXVlc3Qge1xuICByb2xlczogQXJyYXk8c3RyaW5nPjtcbn1cblxudHlwZSBSb2xlTWV0YWRhdGFNb2RhbCA9ICdhZGQnIHwgJ2VkaXQnO1xuXG50eXBlIFJvbGVFeHBvcnQgPSAndW5pZmllZCcgfCAnc2VwYXJhdGUnO1xuXG5pbnRlcmZhY2UgRXhwb3J0Um9sZU91dHB1dCB7XG4gIHJvbGVLZXlzOiBBcnJheTxzdHJpbmc+O1xuICB0eXBlOiBSb2xlRXhwb3J0O1xufVxuXG5leHBvcnQge1JvbGUsIERlbGV0ZVJvbGVzUmVxdWVzdCwgUm9sZU1ldGFkYXRhTW9kYWwsIFJvbGVFeHBvcnQsIEV4cG9ydFJvbGVPdXRwdXR9O1xuIl19
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2015-2023 Ritense BV, the Netherlands.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { Injectable } from '@angular/core';
|
|
17
|
+
import { catchError, combineLatest, map, of, tap } from 'rxjs';
|
|
18
|
+
import * as i0 from "@angular/core";
|
|
19
|
+
import * as i1 from "./access-control.service";
|
|
20
|
+
export class AccessControlExportService {
|
|
21
|
+
constructor(accessControlService) {
|
|
22
|
+
this.accessControlService = accessControlService;
|
|
23
|
+
}
|
|
24
|
+
exportRoles(event) {
|
|
25
|
+
return (event.type === 'unified'
|
|
26
|
+
? this.accessControlService.exportRolePermissions(event.roleKeys).pipe(tap(res => {
|
|
27
|
+
this.downloadJson(res, event.type);
|
|
28
|
+
}))
|
|
29
|
+
: combineLatest(event.roleKeys.map((roleKey) => this.accessControlService.exportRolePermissions([roleKey]))).pipe(tap(res => {
|
|
30
|
+
res.forEach((permissions, index) => {
|
|
31
|
+
const roleKey = event.roleKeys[index];
|
|
32
|
+
this.downloadJson(permissions, event.type, roleKey);
|
|
33
|
+
});
|
|
34
|
+
}))).pipe(map(() => true), catchError(() => of(false)));
|
|
35
|
+
}
|
|
36
|
+
downloadJson(permissions, type, roleKey) {
|
|
37
|
+
const sJson = JSON.stringify({ permissions }, null, 2);
|
|
38
|
+
const element = document.createElement('a');
|
|
39
|
+
element.setAttribute('href', 'data:text/json;charset=UTF-8,' + encodeURIComponent(sJson));
|
|
40
|
+
element.setAttribute('download', `${type === 'separate' ? roleKey : 'combined'}.permissions.json`);
|
|
41
|
+
element.style.display = 'none';
|
|
42
|
+
document.body.appendChild(element);
|
|
43
|
+
element.click(); // simulate click
|
|
44
|
+
document.body.removeChild(element);
|
|
45
|
+
}
|
|
46
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AccessControlExportService, deps: [{ token: i1.AccessControlService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
47
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AccessControlExportService, providedIn: 'root' }); }
|
|
48
|
+
}
|
|
49
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AccessControlExportService, decorators: [{
|
|
50
|
+
type: Injectable,
|
|
51
|
+
args: [{ providedIn: 'root' }]
|
|
52
|
+
}], ctorParameters: function () { return [{ type: i1.AccessControlService }]; } });
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzLWNvbnRyb2wtZXhwb3J0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2FjY2Vzcy1jb250cm9sLW1hbmFnZW1lbnQvc3JjL2xpYi9zZXJ2aWNlcy9hY2Nlc3MtY29udHJvbC1leHBvcnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFHekMsT0FBTyxFQUFDLFVBQVUsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxHQUFHLEVBQUMsTUFBTSxNQUFNLENBQUM7OztBQUd6RSxNQUFNLE9BQU8sMEJBQTBCO0lBQ3JDLFlBQTZCLG9CQUEwQztRQUExQyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO0lBQUcsQ0FBQztJQUVwRSxXQUFXLENBQUMsS0FBdUI7UUFDeEMsT0FBTyxDQUNMLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUztZQUN0QixDQUFDLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQ2xFLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDUixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckMsQ0FBQyxDQUFDLENBQ0g7WUFDSCxDQUFDLENBQUMsYUFBYSxDQUNYLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBZSxFQUFFLEVBQUUsQ0FDckMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLHFCQUFxQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FDM0QsQ0FDRixDQUFDLElBQUksQ0FDSixHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ1IsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsRUFBRTtvQkFDakMsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDdEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDdEQsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FDSCxDQUNOLENBQUMsSUFBSSxDQUNKLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFDZixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQzVCLENBQUM7SUFDSixDQUFDO0lBRU0sWUFBWSxDQUFDLFdBQTBCLEVBQUUsSUFBZ0IsRUFBRSxPQUFnQjtRQUNoRixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUMsV0FBVyxFQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsK0JBQStCLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMxRixPQUFPLENBQUMsWUFBWSxDQUNsQixVQUFVLEVBQ1YsR0FBRyxJQUFJLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFVBQVUsbUJBQW1CLENBQ2pFLENBQUM7UUFDRixPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDL0IsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsaUJBQWlCO1FBQ2xDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7K0dBekNVLDBCQUEwQjttSEFBMUIsMEJBQTBCLGNBRGQsTUFBTTs7NEZBQ2xCLDBCQUEwQjtrQkFEdEMsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMyBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBY2Nlc3NDb250cm9sU2VydmljZX0gZnJvbSAnLi9hY2Nlc3MtY29udHJvbC5zZXJ2aWNlJztcbmltcG9ydCB7RXhwb3J0Um9sZU91dHB1dCwgUm9sZUV4cG9ydH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7Y2F0Y2hFcnJvciwgY29tYmluZUxhdGVzdCwgbWFwLCBPYnNlcnZhYmxlLCBvZiwgdGFwfSBmcm9tICdyeGpzJztcblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgQWNjZXNzQ29udHJvbEV4cG9ydFNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGFjY2Vzc0NvbnRyb2xTZXJ2aWNlOiBBY2Nlc3NDb250cm9sU2VydmljZSkge31cblxuICBwdWJsaWMgZXhwb3J0Um9sZXMoZXZlbnQ6IEV4cG9ydFJvbGVPdXRwdXQpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gKFxuICAgICAgZXZlbnQudHlwZSA9PT0gJ3VuaWZpZWQnXG4gICAgICAgID8gdGhpcy5hY2Nlc3NDb250cm9sU2VydmljZS5leHBvcnRSb2xlUGVybWlzc2lvbnMoZXZlbnQucm9sZUtleXMpLnBpcGUoXG4gICAgICAgICAgICB0YXAocmVzID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5kb3dubG9hZEpzb24ocmVzLCBldmVudC50eXBlKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICA6IGNvbWJpbmVMYXRlc3QoXG4gICAgICAgICAgICBldmVudC5yb2xlS2V5cy5tYXAoKHJvbGVLZXk6IHN0cmluZykgPT5cbiAgICAgICAgICAgICAgdGhpcy5hY2Nlc3NDb250cm9sU2VydmljZS5leHBvcnRSb2xlUGVybWlzc2lvbnMoW3JvbGVLZXldKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICkucGlwZShcbiAgICAgICAgICAgIHRhcChyZXMgPT4ge1xuICAgICAgICAgICAgICByZXMuZm9yRWFjaCgocGVybWlzc2lvbnMsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgcm9sZUtleSA9IGV2ZW50LnJvbGVLZXlzW2luZGV4XTtcbiAgICAgICAgICAgICAgICB0aGlzLmRvd25sb2FkSnNvbihwZXJtaXNzaW9ucywgZXZlbnQudHlwZSwgcm9sZUtleSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgKS5waXBlKFxuICAgICAgbWFwKCgpID0+IHRydWUpLFxuICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZihmYWxzZSkpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBkb3dubG9hZEpzb24ocGVybWlzc2lvbnM6IEFycmF5PG9iamVjdD4sIHR5cGU6IFJvbGVFeHBvcnQsIHJvbGVLZXk/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBzSnNvbiA9IEpTT04uc3RyaW5naWZ5KHtwZXJtaXNzaW9uc30sIG51bGwsIDIpO1xuICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCAnZGF0YTp0ZXh0L2pzb247Y2hhcnNldD1VVEYtOCwnICsgZW5jb2RlVVJJQ29tcG9uZW50KHNKc29uKSk7XG4gICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoXG4gICAgICAnZG93bmxvYWQnLFxuICAgICAgYCR7dHlwZSA9PT0gJ3NlcGFyYXRlJyA/IHJvbGVLZXkgOiAnY29tYmluZWQnfS5wZXJtaXNzaW9ucy5qc29uYFxuICAgICk7XG4gICAgZWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG4gICAgZWxlbWVudC5jbGljaygpOyAvLyBzaW11bGF0ZSBjbGlja1xuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZWxlbWVudCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject, catchError, of, switchMap, take, tap } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@valtimo/config";
|
|
5
|
+
import * as i2 from "@angular/common/http";
|
|
6
|
+
export class AccessControlService {
|
|
7
|
+
get roleDtos$() {
|
|
8
|
+
return this.http.get(`${this.valtimoEndpointUri}v1/roles`);
|
|
9
|
+
}
|
|
10
|
+
constructor(configService, http) {
|
|
11
|
+
this.configService = configService;
|
|
12
|
+
this.http = http;
|
|
13
|
+
this.roles$ = new BehaviorSubject([]);
|
|
14
|
+
this.loading$ = new BehaviorSubject(false);
|
|
15
|
+
this.valtimoEndpointUri = `${this.configService.config.valtimoApi.endpointUri}management/`;
|
|
16
|
+
}
|
|
17
|
+
addRole(role) {
|
|
18
|
+
return this.http.post(`${this.valtimoEndpointUri}v1/roles`, role);
|
|
19
|
+
}
|
|
20
|
+
deleteRoles(request) {
|
|
21
|
+
return this.http.delete(`${this.valtimoEndpointUri}v1/roles`, { body: request });
|
|
22
|
+
}
|
|
23
|
+
dispatchAction(actionResult) {
|
|
24
|
+
actionResult
|
|
25
|
+
.pipe(tap(() => {
|
|
26
|
+
this.loading$.next(true);
|
|
27
|
+
}), switchMap(() => this.roleDtos$), take(1), catchError(error => of(error)))
|
|
28
|
+
.subscribe({
|
|
29
|
+
next: (roles) => {
|
|
30
|
+
this.roles$.next(roles);
|
|
31
|
+
this.loading$.next(false);
|
|
32
|
+
},
|
|
33
|
+
error: error => {
|
|
34
|
+
console.error(error);
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
loadRoles() {
|
|
39
|
+
this.roleDtos$
|
|
40
|
+
.pipe(tap(() => {
|
|
41
|
+
this.loading$.next(true);
|
|
42
|
+
}), take(1))
|
|
43
|
+
.subscribe({
|
|
44
|
+
next: (items) => {
|
|
45
|
+
this.roles$.next(items);
|
|
46
|
+
this.loading$.next(false);
|
|
47
|
+
},
|
|
48
|
+
error: error => {
|
|
49
|
+
console.error(error);
|
|
50
|
+
},
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
getRolePermissions(roleKey) {
|
|
54
|
+
return this.http.get(`${this.valtimoEndpointUri}v1/roles/${roleKey}/permissions`);
|
|
55
|
+
}
|
|
56
|
+
exportRolePermissions(roles) {
|
|
57
|
+
return this.http.post(`${this.valtimoEndpointUri}v1/permissions/search`, { roles });
|
|
58
|
+
}
|
|
59
|
+
updateRolePermissions(roleKey, updatedPermission) {
|
|
60
|
+
return this.http.put(`${this.valtimoEndpointUri}v1/roles/${roleKey}/permissions`, updatedPermission);
|
|
61
|
+
}
|
|
62
|
+
updateRole(roleKey, request) {
|
|
63
|
+
return this.http.put(`${this.valtimoEndpointUri}v1/roles/${roleKey}`, request);
|
|
64
|
+
}
|
|
65
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AccessControlService, deps: [{ token: i1.ConfigService }, { token: i2.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
66
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AccessControlService, providedIn: 'root' }); }
|
|
67
|
+
}
|
|
68
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AccessControlService, decorators: [{
|
|
69
|
+
type: Injectable,
|
|
70
|
+
args: [{ providedIn: 'root' }]
|
|
71
|
+
}], ctorParameters: function () { return [{ type: i1.ConfigService }, { type: i2.HttpClient }]; } });
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzLWNvbnRyb2wuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vYWNjZXNzLWNvbnRyb2wtbWFuYWdlbWVudC9zcmMvbGliL3NlcnZpY2VzL2FjY2Vzcy1jb250cm9sLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBaUJBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFDLGVBQWUsRUFBRSxVQUFVLEVBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7O0FBSXZGLE1BQU0sT0FBTyxvQkFBb0I7SUFNL0IsSUFBWSxTQUFTO1FBQ25CLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQVMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLFVBQVUsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxZQUNtQixhQUE0QixFQUM1QixJQUFnQjtRQURoQixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixTQUFJLEdBQUosSUFBSSxDQUFZO1FBWG5CLFdBQU0sR0FBRyxJQUFJLGVBQWUsQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUN6QyxhQUFRLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFZN0QsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFdBQVcsYUFBYSxDQUFDO0lBQzdGLENBQUM7SUFFTSxPQUFPLENBQUMsSUFBVTtRQUN2QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFPLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVNLFdBQVcsQ0FBQyxPQUEyQjtRQUM1QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFPLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixVQUFVLEVBQUUsRUFBQyxJQUFJLEVBQUUsT0FBTyxFQUFDLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRU0sY0FBYyxDQUFDLFlBQXFDO1FBQ3pELFlBQVk7YUFDVCxJQUFJLENBQ0gsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNQLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQy9CLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDL0I7YUFDQSxTQUFTLENBQUM7WUFDVCxJQUFJLEVBQUUsQ0FBQyxLQUFhLEVBQUUsRUFBRTtnQkFDdEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzVCLENBQUM7WUFDRCxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUU7Z0JBQ2IsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN2QixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLFNBQVM7UUFDZCxJQUFJLENBQUMsU0FBUzthQUNYLElBQUksQ0FDSCxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ1AsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsQ0FBQyxDQUFDLEVBQ0YsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUNSO2FBQ0EsU0FBUyxDQUFDO1lBQ1QsSUFBSSxFQUFFLENBQUMsS0FBYSxFQUFFLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN4QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM1QixDQUFDO1lBQ0QsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFO2dCQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxrQkFBa0IsQ0FBQyxPQUFlO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2xCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixZQUFZLE9BQU8sY0FBYyxDQUM1RCxDQUFDO0lBQ0osQ0FBQztJQUVNLHFCQUFxQixDQUFDLEtBQWU7UUFDMUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBVyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsdUJBQXVCLEVBQUUsRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDO0lBQzlGLENBQUM7SUFFTSxxQkFBcUIsQ0FBQyxPQUFlLEVBQUUsaUJBQXlCO1FBQ3JFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2xCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixZQUFZLE9BQU8sY0FBYyxFQUMzRCxpQkFBaUIsQ0FDbEIsQ0FBQztJQUNKLENBQUM7SUFFTSxVQUFVLENBQUMsT0FBZSxFQUFFLE9BQWE7UUFDOUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBUyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsWUFBWSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN6RixDQUFDOytHQXBGVSxvQkFBb0I7bUhBQXBCLG9CQUFvQixjQURSLE1BQU07OzRGQUNsQixvQkFBb0I7a0JBRGhDLFVBQVU7bUJBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjMgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtIdHRwQ2xpZW50fSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb25maWdTZXJ2aWNlfSBmcm9tICdAdmFsdGltby9jb25maWcnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNhdGNoRXJyb3IsIE9ic2VydmFibGUsIG9mLCBzd2l0Y2hNYXAsIHRha2UsIHRhcH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0RlbGV0ZVJvbGVzUmVxdWVzdCwgUm9sZX0gZnJvbSAnLi4vbW9kZWxzJztcblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgQWNjZXNzQ29udHJvbFNlcnZpY2Uge1xuICBwdWJsaWMgcmVhZG9ubHkgcm9sZXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxSb2xlW10+KFtdKTtcbiAgcHVibGljIHJlYWRvbmx5IGxvYWRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgcHJpdmF0ZSB2YWx0aW1vRW5kcG9pbnRVcmk6IHN0cmluZztcblxuICBwcml2YXRlIGdldCByb2xlRHRvcyQoKTogT2JzZXJ2YWJsZTxSb2xlW10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxSb2xlW10+KGAke3RoaXMudmFsdGltb0VuZHBvaW50VXJpfXYxL3JvbGVzYCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBodHRwOiBIdHRwQ2xpZW50XG4gICkge1xuICAgIHRoaXMudmFsdGltb0VuZHBvaW50VXJpID0gYCR7dGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZy52YWx0aW1vQXBpLmVuZHBvaW50VXJpfW1hbmFnZW1lbnQvYDtcbiAgfVxuXG4gIHB1YmxpYyBhZGRSb2xlKHJvbGU6IFJvbGUpOiBPYnNlcnZhYmxlPFJvbGU+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8Um9sZT4oYCR7dGhpcy52YWx0aW1vRW5kcG9pbnRVcml9djEvcm9sZXNgLCByb2xlKTtcbiAgfVxuXG4gIHB1YmxpYyBkZWxldGVSb2xlcyhyZXF1ZXN0OiBEZWxldGVSb2xlc1JlcXVlc3QpOiBPYnNlcnZhYmxlPG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZTxudWxsPihgJHt0aGlzLnZhbHRpbW9FbmRwb2ludFVyaX12MS9yb2xlc2AsIHtib2R5OiByZXF1ZXN0fSk7XG4gIH1cblxuICBwdWJsaWMgZGlzcGF0Y2hBY3Rpb24oYWN0aW9uUmVzdWx0OiBPYnNlcnZhYmxlPFJvbGUgfCBudWxsPik6IHZvaWQge1xuICAgIGFjdGlvblJlc3VsdFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nJC5uZXh0KHRydWUpO1xuICAgICAgICB9KSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMucm9sZUR0b3MkKSxcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiBvZihlcnJvcikpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJvbGVzOiBSb2xlW10pID0+IHtcbiAgICAgICAgICB0aGlzLnJvbGVzJC5uZXh0KHJvbGVzKTtcbiAgICAgICAgICB0aGlzLmxvYWRpbmckLm5leHQoZmFsc2UpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogZXJyb3IgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbG9hZFJvbGVzKCk6IHZvaWQge1xuICAgIHRoaXMucm9sZUR0b3MkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmxvYWRpbmckLm5leHQodHJ1ZSk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlKDEpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKGl0ZW1zOiBSb2xlW10pID0+IHtcbiAgICAgICAgICB0aGlzLnJvbGVzJC5uZXh0KGl0ZW1zKTtcbiAgICAgICAgICB0aGlzLmxvYWRpbmckLm5leHQoZmFsc2UpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogZXJyb3IgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Um9sZVBlcm1pc3Npb25zKHJvbGVLZXk6IHN0cmluZyk6IE9ic2VydmFibGU8QXJyYXk8b2JqZWN0Pj4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFycmF5PG9iamVjdD4+KFxuICAgICAgYCR7dGhpcy52YWx0aW1vRW5kcG9pbnRVcml9djEvcm9sZXMvJHtyb2xlS2V5fS9wZXJtaXNzaW9uc2BcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGV4cG9ydFJvbGVQZXJtaXNzaW9ucyhyb2xlczogc3RyaW5nW10pOiBPYnNlcnZhYmxlPG9iamVjdFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PG9iamVjdFtdPihgJHt0aGlzLnZhbHRpbW9FbmRwb2ludFVyaX12MS9wZXJtaXNzaW9ucy9zZWFyY2hgLCB7cm9sZXN9KTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVSb2xlUGVybWlzc2lvbnMocm9sZUtleTogc3RyaW5nLCB1cGRhdGVkUGVybWlzc2lvbjogb2JqZWN0KTogT2JzZXJ2YWJsZTxvYmplY3Q+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dDxvYmplY3Q+KFxuICAgICAgYCR7dGhpcy52YWx0aW1vRW5kcG9pbnRVcml9djEvcm9sZXMvJHtyb2xlS2V5fS9wZXJtaXNzaW9uc2AsXG4gICAgICB1cGRhdGVkUGVybWlzc2lvblxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlUm9sZShyb2xlS2V5OiBzdHJpbmcsIHJlcXVlc3Q6IFJvbGUpOiBPYnNlcnZhYmxlPG9iamVjdD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0PG9iamVjdD4oYCR7dGhpcy52YWx0aW1vRW5kcG9pbnRVcml9djEvcm9sZXMvJHtyb2xlS2V5fWAsIHJlcXVlc3QpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2015-2023 Ritense BV, the Netherlands.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
export * from './access-control.service';
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2FjY2Vzcy1jb250cm9sLW1hbmFnZW1lbnQvc3JjL2xpYi9zZXJ2aWNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILGNBQWMsMEJBQTBCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMyBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2FjY2Vzcy1jb250cm9sLnNlcnZpY2UnO1xuIl19
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2015-2023 Ritense BV, the Netherlands.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
/*
|
|
17
|
+
* Public API Surface of access-control
|
|
18
|
+
*/
|
|
19
|
+
export * from './lib/models';
|
|
20
|
+
export * from './lib/services';
|
|
21
|
+
export * from './lib/access-control-management.module';
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vYWNjZXNzLWNvbnRyb2wtbWFuYWdlbWVudC9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVIOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLHdDQUF3QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjMgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBhY2Nlc3MtY29udHJvbFxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hY2Nlc3MtY29udHJvbC1tYW5hZ2VtZW50Lm1vZHVsZSc7XG4iXX0=
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdGltby1hY2Nlc3MtY29udHJvbC1tYW5hZ2VtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9hY2Nlc3MtY29udHJvbC1tYW5hZ2VtZW50L3NyYy92YWx0aW1vLWFjY2Vzcy1jb250cm9sLW1hbmFnZW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|