@valtimo/access-control-management 13.5.0 → 13.6.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.
@@ -625,7 +625,7 @@ class AccessControlEditorComponent {
625
625
  });
626
626
  }
627
627
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: AccessControlEditorComponent, deps: [{ token: AccessControlService }, { token: i2$1.ActivatedRoute }, { token: i3$1.PageTitleService }, { token: i2$1.Router }, { token: i1.GlobalNotificationService }, { token: i5.TranslateService }, { token: AccessControlExportService }, { token: i3$1.PageHeaderService }], target: i0.ɵɵFactoryTarget.Component }); }
628
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: AccessControlEditorComponent, isStandalone: false, selector: "ng-component", ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 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<ng-container *ngIf=\"model$ | async as model; else loading\">\n <valtimo-editor\n [disabled]=\"editorDisabled$ | async\"\n [model]=\"model\"\n (validEvent)=\"onValid($event)\"\n (valueChangeEvent)=\"onValueChange($event)\"\n [fitPage]=\"true\"\n ></valtimo-editor>\n</ng-container>\n\n<ng-container renderInPageHeader>\n <ng-template>\n <div\n *ngIf=\"{\n model: model$ | async,\n moreDisabled: moreDisabled$ | async,\n compactMode: compactMode$ | async,\n } as obs\"\n class=\"buttons-container\"\n >\n <cds-overflow-menu class=\"overflow-button\">\n <cds-overflow-menu-option [disabled]=\"obs.moreDisabled\" (selected)=\"showEditModal()\">{{\n 'accessControl.roles.editMetadata' | translate\n }}</cds-overflow-menu-option>\n\n <cds-overflow-menu-option [disabled]=\"obs.moreDisabled\" (selected)=\"exportPermissions()\">{{\n 'interface.export' | translate\n }}</cds-overflow-menu-option>\n\n <cds-overflow-menu-option\n [disabled]=\"obs.moreDisabled\"\n type=\"danger\"\n (selected)=\"showDeleteModal()\"\n >{{ 'interface.delete' | translate }}</cds-overflow-menu-option\n >\n </cds-overflow-menu>\n\n <button\n [disabled]=\"saveDisabled$ | async\"\n cdsButton=\"primary\"\n [size]=\"obs.compactMode ? 'sm' : 'md'\"\n (click)=\"updatePermissions()\"\n >\n {{ 'interface.save' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"save\" size=\"16\"></svg>\n </button>\n </div>\n </ng-template>\n</ng-container>\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-role-metadata-modal\n [defaultKeyValue]=\"obs.selectedRowKeys[0]\"\n [open]=\"showEditModal$ | async\"\n type=\"edit\"\n (closeEvent)=\"onEdit(obs.selectedRowKeys[0], $event)\"\n ></valtimo-role-metadata-modal>\n</ng-container>\n\n<ng-template #loading>\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n</ng-template>\n", styles: [".loading-container{display:flex;width:100%;justify-content:center}.overflow-button{margin-right:16px}.buttons-container{display:flex;flex-direction:row;align-items:center}.buttons-container button{height:min-content}\n/*!\n * Copyright 2015-2025 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"], dependencies: [{ kind: "directive", type: i4.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: i3.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: i3$1.EditorComponent, selector: "valtimo-editor", inputs: ["editorOptions", "model", "disabled", "formatOnLoad", "widthPx", "heightPx", "heightStyle", "jsonSchema", "fitPage", "fitPageExtraSpace"], outputs: ["validEvent", "valueChangeEvent"] }, { kind: "directive", type: i3$1.RenderInPageHeaderDirective, selector: "[renderInPageHeader]", inputs: ["fullWidth"] }, { kind: "component", type: i3.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "component", type: i3.OverflowMenu, selector: "cds-overflow-menu, ibm-overflow-menu", inputs: ["buttonLabel", "description", "flip", "placement", "open", "customTrigger", "offset", "wrapperClass", "triggerClass"], outputs: ["openChange"] }, { kind: "component", type: i3.OverflowMenuOption, selector: "cds-overflow-menu-option, ibm-overflow-menu-option", inputs: ["divider", "type", "disabled", "href", "target", "innerClass"], outputs: ["selected"] }, { kind: "component", type: RoleMetadataModalComponent, selector: "valtimo-role-metadata-modal", inputs: ["open", "type", "defaultKeyValue"], outputs: ["closeEvent"] }, { kind: "component", type: DeleteRoleModalComponent, selector: "valtimo-delete-role-modal", inputs: ["deleteRowKeys", "showDeleteModal$"], outputs: ["deleteEvent"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
628
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: AccessControlEditorComponent, isStandalone: false, selector: "ng-component", ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 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<ng-container *ngIf=\"model$ | async as model; else loading\">\n <valtimo-editor\n [disabled]=\"editorDisabled$ | async\"\n [model]=\"model\"\n (validEvent)=\"onValid($event)\"\n (valueChangeEvent)=\"onValueChange($event)\"\n [fitPage]=\"true\"\n ></valtimo-editor>\n</ng-container>\n\n<ng-container renderInPageHeader>\n <ng-template>\n <div\n *ngIf=\"{\n model: model$ | async,\n moreDisabled: moreDisabled$ | async,\n compactMode: compactMode$ | async,\n } as obs\"\n class=\"buttons-container\"\n >\n <cds-overflow-menu class=\"overflow-button\">\n <cds-overflow-menu-option [disabled]=\"obs.moreDisabled\" (selected)=\"showEditModal()\">{{\n 'accessControl.roles.editMetadata' | translate\n }}</cds-overflow-menu-option>\n\n <cds-overflow-menu-option [disabled]=\"obs.moreDisabled\" (selected)=\"exportPermissions()\">{{\n 'interface.export' | translate\n }}</cds-overflow-menu-option>\n\n <cds-overflow-menu-option\n [disabled]=\"obs.moreDisabled\"\n type=\"danger\"\n (selected)=\"showDeleteModal()\"\n >{{ 'interface.delete' | translate }}</cds-overflow-menu-option\n >\n </cds-overflow-menu>\n\n <button\n [disabled]=\"saveDisabled$ | async\"\n cdsButton=\"primary\"\n [size]=\"obs.compactMode ? 'sm' : 'md'\"\n (click)=\"updatePermissions()\"\n >\n {{ 'interface.save' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"save\" size=\"16\"></svg>\n </button>\n </div>\n </ng-template>\n</ng-container>\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-role-metadata-modal\n [defaultKeyValue]=\"obs.selectedRowKeys[0]\"\n [open]=\"showEditModal$ | async\"\n type=\"edit\"\n (closeEvent)=\"onEdit(obs.selectedRowKeys[0], $event)\"\n ></valtimo-role-metadata-modal>\n</ng-container>\n\n<ng-template #loading>\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n</ng-template>\n", styles: [".loading-container{display:flex;width:100%;justify-content:center}.overflow-button{margin-right:16px}.buttons-container{display:flex;flex-direction:row;align-items:center}.buttons-container button{height:min-content}\n/*!\n * Copyright 2015-2025 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"], dependencies: [{ kind: "directive", type: i4.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: i3.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: i3$1.EditorComponent, selector: "valtimo-editor", inputs: ["editorOptions", "model", "disabled", "formatOnLoad", "widthPx", "heightPx", "heightStyle", "jsonSchema", "fitPage", "fitPageSpaceAdjustment"], outputs: ["validEvent", "valueChangeEvent"] }, { kind: "directive", type: i3$1.RenderInPageHeaderDirective, selector: "[renderInPageHeader]", inputs: ["fullWidth"] }, { kind: "component", type: i3.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "component", type: i3.OverflowMenu, selector: "cds-overflow-menu, ibm-overflow-menu", inputs: ["buttonLabel", "description", "flip", "placement", "open", "customTrigger", "offset", "wrapperClass", "triggerClass"], outputs: ["openChange"] }, { kind: "component", type: i3.OverflowMenuOption, selector: "cds-overflow-menu-option, ibm-overflow-menu-option", inputs: ["divider", "type", "disabled", "href", "target", "innerClass"], outputs: ["selected"] }, { kind: "component", type: RoleMetadataModalComponent, selector: "valtimo-role-metadata-modal", inputs: ["open", "type", "defaultKeyValue"], outputs: ["closeEvent"] }, { kind: "component", type: DeleteRoleModalComponent, selector: "valtimo-delete-role-modal", inputs: ["deleteRowKeys", "showDeleteModal$"], outputs: ["deleteEvent"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
629
629
  }
630
630
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: AccessControlEditorComponent, decorators: [{
631
631
  type: Component,
@@ -1 +1 @@
1
- {"version":3,"file":"valtimo-access-control-management.mjs","sources":["../../../../projects/valtimo/access-control-management/src/lib/models/role.model.ts","../../../../projects/valtimo/access-control-management/src/lib/models/index.ts","../../../../projects/valtimo/access-control-management/src/lib/services/access-control.service.ts","../../../../projects/valtimo/access-control-management/src/lib/services/index.ts","../../../../projects/valtimo/access-control-management/src/lib/services/access-control-export.service.ts","../../../../projects/valtimo/access-control-management/src/lib/components/role-metadata-modal/role-metadata-modal.component.ts","../../../../projects/valtimo/access-control-management/src/lib/components/role-metadata-modal/role-metadata-modal.component.html","../../../../projects/valtimo/access-control-management/src/lib/components/delete-role-modal/delete-role-modal.component.ts","../../../../projects/valtimo/access-control-management/src/lib/components/delete-role-modal/delete-role-modal.component.html","../../../../projects/valtimo/access-control-management/src/lib/components/export-role-modal/export-role-modal.component.ts","../../../../projects/valtimo/access-control-management/src/lib/components/export-role-modal/export-role-modal.component.html","../../../../projects/valtimo/access-control-management/src/lib/components/overview/access-control-overview.component.ts","../../../../projects/valtimo/access-control-management/src/lib/components/overview/access-control-overview.component.html","../../../../projects/valtimo/access-control-management/src/lib/components/editor/access-control-editor.component.ts","../../../../projects/valtimo/access-control-management/src/lib/components/editor/access-control-editor.component.html","../../../../projects/valtimo/access-control-management/src/lib/access-control-management-routing.module.ts","../../../../projects/valtimo/access-control-management/src/lib/access-control-management.module.ts","../../../../projects/valtimo/access-control-management/src/public-api.ts","../../../../projects/valtimo/access-control-management/src/valtimo-access-control-management.ts"],"sourcesContent":["/*\n * Copyright 2015-2025 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\ninterface Role {\n roleKey: string;\n}\n\ninterface DeleteRolesRequest {\n roles: Array<string>;\n}\n\ntype RoleMetadataModal = 'add' | 'edit';\n\ntype RoleExport = 'unified' | 'separate';\n\ninterface ExportRoleOutput {\n roleKeys: Array<string>;\n type: RoleExport;\n}\n\nexport {Role, DeleteRolesRequest, RoleMetadataModal, RoleExport, ExportRoleOutput};\n","/*\n * Copyright 2015-2025 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\nexport * from './role.model';\n","/*\n * Copyright 2015-2025 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\nimport {HttpClient} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {ConfigService} from '@valtimo/shared';\nimport {BehaviorSubject, catchError, Observable, of, switchMap, take, tap} from 'rxjs';\nimport {DeleteRolesRequest, Role} from '../models';\n\n@Injectable({providedIn: 'root'})\nexport class AccessControlService {\n public readonly roles$ = new BehaviorSubject<Role[]>([]);\n public readonly loading$ = new BehaviorSubject<boolean>(false);\n\n private valtimoEndpointUri: string;\n\n private get roleDtos$(): Observable<Role[]> {\n return this.http.get<Role[]>(`${this.valtimoEndpointUri}v1/roles`);\n }\n\n constructor(\n private readonly configService: ConfigService,\n private readonly http: HttpClient\n ) {\n this.valtimoEndpointUri = `${this.configService.config.valtimoApi.endpointUri}management/`;\n }\n\n public addRole(role: Role): Observable<Role> {\n return this.http.post<Role>(`${this.valtimoEndpointUri}v1/roles`, role);\n }\n\n public deleteRoles(request: DeleteRolesRequest): Observable<null> {\n return this.http.delete<null>(`${this.valtimoEndpointUri}v1/roles`, {body: request});\n }\n\n public dispatchAction(actionResult: Observable<Role | null>): void {\n actionResult\n .pipe(\n tap(() => {\n this.loading$.next(true);\n }),\n switchMap(() => this.roleDtos$),\n take(1),\n catchError(error => of(error))\n )\n .subscribe({\n next: (roles: Role[]) => {\n this.roles$.next(roles);\n this.loading$.next(false);\n },\n error: error => {\n console.error(error);\n },\n });\n }\n\n public loadRoles(): void {\n this.roleDtos$\n .pipe(\n tap(() => {\n this.loading$.next(true);\n }),\n take(1)\n )\n .subscribe({\n next: (items: Role[]) => {\n this.roles$.next(items);\n this.loading$.next(false);\n },\n error: error => {\n console.error(error);\n },\n });\n }\n\n public getRolePermissions(roleKey: string): Observable<Array<object>> {\n return this.http.get<Array<object>>(\n `${this.valtimoEndpointUri}v1/roles/${roleKey}/permissions`\n );\n }\n\n public exportRolePermissions(roles: string[]): Observable<object[]> {\n return this.http.post<object[]>(`${this.valtimoEndpointUri}v1/permissions/search`, {roles});\n }\n\n public updateRolePermissions(roleKey: string, updatedPermission: object): Observable<object> {\n return this.http.put<object>(\n `${this.valtimoEndpointUri}v1/roles/${roleKey}/permissions`,\n updatedPermission\n );\n }\n\n public updateRole(roleKey: string, request: Role): Observable<object> {\n return this.http.put<object>(`${this.valtimoEndpointUri}v1/roles/${roleKey}`, request);\n }\n}\n","/*\n * Copyright 2015-2025 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\nexport * from './access-control.service';\n","/*\n * Copyright 2015-2025 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\nimport {Injectable} from '@angular/core';\nimport {AccessControlService} from './access-control.service';\nimport {ExportRoleOutput, RoleExport} from '../models';\nimport {catchError, combineLatest, map, Observable, of, tap} from 'rxjs';\n\n@Injectable({providedIn: 'root'})\nexport class AccessControlExportService {\n constructor(private readonly accessControlService: AccessControlService) {}\n\n public exportRoles(event: ExportRoleOutput): Observable<boolean> {\n return (\n event.type === 'unified'\n ? this.accessControlService.exportRolePermissions(event.roleKeys).pipe(\n tap(res => {\n this.downloadJson(res, event.type);\n })\n )\n : combineLatest(\n event.roleKeys.map((roleKey: string) =>\n this.accessControlService.exportRolePermissions([roleKey])\n )\n ).pipe(\n tap(res => {\n res.forEach((permissions, index) => {\n const roleKey = event.roleKeys[index];\n this.downloadJson(permissions, event.type, roleKey);\n });\n })\n )\n ).pipe(\n map(() => true),\n catchError(() => of(false))\n );\n }\n\n private downloadJson(permissions: Array<object>, type: RoleExport, roleKey?: string): void {\n const sJson = JSON.stringify({permissions}, null, 2);\n const element = document.createElement('a');\n element.setAttribute('href', 'data:text/json;charset=UTF-8,' + encodeURIComponent(sJson));\n element.setAttribute(\n 'download',\n `${type === 'separate' ? roleKey : 'combined'}.permission.json`\n );\n element.style.display = 'none';\n document.body.appendChild(element);\n element.click(); // simulate click\n document.body.removeChild(element);\n }\n}\n","/*\n * Copyright 2015-2025 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\nimport {ChangeDetectionStrategy, Component, EventEmitter, Input, Output} from '@angular/core';\nimport {FormBuilder, Validators} from '@angular/forms';\nimport {Role, RoleMetadataModal} from '../../models';\nimport {CARBON_CONSTANTS} from '@valtimo/components';\n\n@Component({\n standalone: false,\n selector: 'valtimo-role-metadata-modal',\n templateUrl: './role-metadata-modal.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RoleMetadataModalComponent {\n @Input() open = false;\n @Input() type: RoleMetadataModal = 'add';\n @Input() set defaultKeyValue(value: string) {\n this._defaultKeyValue = value;\n this.setDefaultKeyValue(value);\n }\n @Output() closeEvent = new EventEmitter<Role | null>();\n\n public form = this.fb.group({\n key: this.fb.control('', Validators.required),\n });\n\n private _defaultKeyValue!: string;\n\n public get key() {\n return this.form?.get('key');\n }\n\n constructor(private readonly fb: FormBuilder) {}\n\n public onCancel(): void {\n this.closeEvent.emit(null);\n this.resetForm();\n }\n\n public onConfirm(): void {\n if (!this.key) {\n return;\n }\n\n this.closeEvent.emit({roleKey: this.key.value});\n this.resetForm();\n }\n\n private setDefaultKeyValue(value: string) {\n this.key.setValue(value);\n }\n\n private resetForm(): void {\n setTimeout(() => {\n this.form.reset();\n if (this.type === 'edit') {\n this.setDefaultKeyValue(this._defaultKeyValue);\n }\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n}\n","<!--\n ~ Copyright 2015-2025 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 (close)=\"onCancel()\"\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","/*\n * Copyright 2015-2025 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\nimport {ChangeDetectionStrategy, Component, EventEmitter, Input, Output} from '@angular/core';\nimport {Observable} from 'rxjs';\n\n@Component({\n standalone: false,\n selector: 'valtimo-delete-role-modal',\n templateUrl: './delete-role-modal.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DeleteRoleModalComponent {\n @Input() deleteRowKeys: Array<string>;\n @Input() showDeleteModal$: Observable<boolean>;\n @Output() deleteEvent = new EventEmitter<Array<string>>();\n\n public onDelete(roles: Array<string>): void {\n this.deleteEvent.emit(roles);\n }\n}\n","<!--\n ~ Copyright 2015-2025 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-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"accessControl.roles.deleteModalContent\"\n [outputOnConfirm]=\"deleteRowKeys\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"interface.delete\"\n (confirmEvent)=\"onDelete($event)\"\n></valtimo-confirmation-modal>\n","/*\n * Copyright 2015-2025 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\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport {ExportRoleOutput, RoleExport} from '../../models';\nimport {BehaviorSubject, Observable, Subscription} from 'rxjs';\nimport {CARBON_CONSTANTS} from '@valtimo/components';\n\n@Component({\n standalone: false,\n selector: 'valtimo-export-role-modal',\n templateUrl: './export-role-modal.component.html',\n styleUrls: ['./export-role-modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ExportRoleModalComponent implements OnInit, OnDestroy {\n @Input() open = false;\n @Input() exportRowKeys: Array<string>;\n @Input() reset$!: Observable<null>;\n @Input() disabled: boolean;\n\n @Output() exportEvent = new EventEmitter<ExportRoleOutput>();\n @Output() closeEvent = new EventEmitter<any>();\n\n public readonly selectedType$ = new BehaviorSubject<RoleExport | null>(null);\n\n private _resetSubscription!: Subscription;\n\n public ngOnInit(): void {\n this.openResetSubscription();\n }\n\n public ngOnDestroy(): void {\n this._resetSubscription?.unsubscribe();\n }\n\n public onCancel(): void {\n if (!this.disabled) {\n this.resetType();\n this.closeEvent.emit();\n }\n }\n\n public onConfirm(type: RoleExport): void {\n this.exportEvent.emit({type, roleKeys: this.exportRowKeys});\n }\n\n public selectType(type: RoleExport): void {\n this.selectedType$.next(type);\n }\n\n private resetType(): void {\n setTimeout(() => {\n this.selectedType$.next(null);\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n\n private openResetSubscription(): void {\n this._resetSubscription = this.reset$?.subscribe(() => {\n this.closeEvent.emit();\n this.resetType();\n });\n }\n}\n","<!--\n ~ Copyright 2015-2025 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=\"{title: ('interface.export' | translate), selectedType: selectedType$ | async} as vars\"\n valtimoCdsModal\n [open]=\"open\"\n size=\"sm\"\n showFooter=\"true\"\n [title]=\"vars.title\"\n (close)=\"onCancel()\"\n>\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCancel()\">\n <h3 cdsModalHeaderHeading>\n {{ vars.title }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent>\n <div class=\"export-buttons\">\n <button [disabled]=\"disabled\" cdsButton=\"secondary\" (click)=\"selectType('unified')\">\n {{ 'accessControl.roles.singleExport' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"document\" size=\"16\"></svg>\n </button>\n\n <button [disabled]=\"disabled\" cdsButton=\"secondary\" (click)=\"selectType('separate')\">\n {{ 'accessControl.roles.multipleExport' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"copy--file\" size=\"16\"></svg>\n </button>\n </div>\n </section>\n\n <cds-modal-footer>\n <button [disabled]=\"disabled\" cdsButton=\"ghost\" (click)=\"onCancel()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button\n [disabled]=\"!vars.selectedType || disabled\"\n cdsButton=\"primary\"\n (click)=\"onConfirm(vars.selectedType)\"\n >\n {{ vars.title }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2025 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 */\nimport {ChangeDetectionStrategy, Component, OnInit, ViewChild} from '@angular/core';\nimport {Router} from '@angular/router';\nimport {CARBON_CONSTANTS, CarbonListComponent, ColumnConfig, ViewType} from '@valtimo/components';\nimport {BehaviorSubject, delay, finalize, Observable, Subject, tap} from 'rxjs';\nimport {ExportRoleOutput, Role} from '../../models';\nimport {AccessControlExportService} from '../../services/access-control-export.service';\nimport {AccessControlService} from '../../services/access-control.service';\n\n@Component({\n standalone: false,\n templateUrl: './access-control-overview.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AccessControlOverviewComponent implements OnInit {\n @ViewChild(CarbonListComponent) carbonList: CarbonListComponent;\n\n public fields: ColumnConfig[] = [\n {\n viewType: ViewType.TEXT,\n key: 'roleKey',\n label: 'accessControl.roles.key',\n },\n ];\n\n public readonly roles$: Observable<Role[]> = this.accessControlService.roles$;\n public readonly loading$: Observable<boolean> = this.accessControlService.loading$;\n public readonly skeleton$ = new BehaviorSubject<boolean>(false);\n public readonly showAddModal$ = new BehaviorSubject<boolean>(false);\n public readonly showDeleteModal$ = new BehaviorSubject<boolean>(false);\n public readonly showExportModal$ = new BehaviorSubject<boolean>(false);\n public readonly selectedRowKeys$ = new BehaviorSubject<Array<string>>([]);\n public readonly resetExportType$ = new Subject<null>();\n public readonly exportDisabled$ = new BehaviorSubject<boolean>(false);\n\n constructor(\n private readonly accessControlService: AccessControlService,\n private readonly accessControlExportService: AccessControlExportService,\n private readonly router: Router\n ) {}\n\n public ngOnInit(): void {\n this.accessControlService.loadRoles();\n }\n\n public openAddModal(): void {\n this.showAddModal$.next(true);\n }\n\n public onAdd(data: Role | null): void {\n this.showAddModal$.next(false);\n\n if (!data) {\n return;\n }\n\n this.accessControlService.dispatchAction(\n this.accessControlService.addRole(data).pipe(\n finalize(() => {\n this.showAddModal$.next(false);\n })\n )\n );\n }\n\n public showDeleteModal(): void {\n this.setSelectedRoleKeys();\n this.showDeleteModal$.next(true);\n }\n\n public showExportModal(): void {\n this.setSelectedRoleKeys();\n this.showExportModal$.next(true);\n }\n\n public closeExportModal(): void {\n this.showExportModal$.next(false);\n }\n\n public onDelete(roles: Array<string>): void {\n this.enableSkeleton();\n\n this.accessControlService.dispatchAction(\n this.accessControlService.deleteRoles({roles}).pipe(\n finalize(() => {\n this.disableSkeleton();\n })\n )\n );\n }\n\n public onExport(event: ExportRoleOutput): void {\n this.exportDisabled$.next(true);\n\n this.accessControlExportService\n .exportRoles(event)\n .pipe(\n tap(() => {\n this.resetExportType$.next(null);\n }),\n delay(CARBON_CONSTANTS.modalAnimationMs),\n tap(() => {\n this.exportDisabled$.next(false);\n })\n )\n .subscribe();\n }\n\n public onRowClick(role: Role): void {\n this.router.navigate([`/access-control/${role.roleKey}`]);\n }\n\n private enableSkeleton(): void {\n this.skeleton$.next(true);\n }\n\n private disableSkeleton(): void {\n this.skeleton$.next(false);\n }\n\n private setSelectedRoleKeys(): void {\n this.selectedRowKeys$.next(this.carbonList.selectedItems.map((role: Role) => role.roleKey));\n }\n}\n","<!--\n ~ Copyright 2015-2025 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]=\"false\"\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","/*\n * Copyright 2015-2025 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\nimport {ChangeDetectionStrategy, Component, OnDestroy, OnInit} from '@angular/core';\nimport {AccessControlService} from '../../services/access-control.service';\nimport {BehaviorSubject, filter, finalize, map, Subscription, switchMap, take, tap} from 'rxjs';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {EditorModel, PageHeaderService, PageTitleService} from '@valtimo/components';\nimport {Role} from '../../models';\nimport {TranslateService} from '@ngx-translate/core';\nimport {AccessControlExportService} from '../../services/access-control-export.service';\nimport {GlobalNotificationService} from '@valtimo/shared';\n\n@Component({\n standalone: false,\n templateUrl: './access-control-editor.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['./access-control-editor.component.scss'],\n})\nexport class AccessControlEditorComponent implements OnInit, OnDestroy {\n public readonly model$ = new BehaviorSubject<EditorModel | null>(null);\n public readonly saveDisabled$ = new BehaviorSubject<boolean>(true);\n public readonly editorDisabled$ = new BehaviorSubject<boolean>(false);\n public readonly moreDisabled$ = new BehaviorSubject<boolean>(true);\n public readonly showDeleteModal$ = new BehaviorSubject<boolean>(false);\n public readonly showEditModal$ = new BehaviorSubject<boolean>(false);\n public readonly selectedRowKeys$ = new BehaviorSubject<Array<string> | null>(null);\n public readonly compactMode$ = this.pageHeaderService.compactMode$;\n\n private _roleKeySubscription!: Subscription;\n private _roleKey!: string;\n private readonly _updatedModelValue$ = new BehaviorSubject<string>('');\n\n constructor(\n private readonly accessControlService: AccessControlService,\n private readonly route: ActivatedRoute,\n private readonly pageTitleService: PageTitleService,\n private readonly router: Router,\n private readonly globalNotificationService: GlobalNotificationService,\n private readonly translateService: TranslateService,\n private readonly accessControlExportService: AccessControlExportService,\n private readonly pageHeaderService: PageHeaderService\n ) {}\n\n public ngOnInit(): void {\n this.getPermissions();\n this.openRoleKeySubscription();\n }\n\n public ngOnDestroy(): void {\n this.pageTitleService.enableReset();\n this._roleKeySubscription?.unsubscribe();\n }\n\n public onValid(valid: boolean): void {\n this.saveDisabled$.next(valid === false);\n }\n\n public onValueChange(value: string): void {\n this._updatedModelValue$.next(value);\n }\n\n public updatePermissions(): void {\n this.disableEditor();\n this.disableSave();\n this.disableMore();\n\n this._updatedModelValue$\n .pipe(\n take(1),\n switchMap(updatedModelValue =>\n this.accessControlService.updateRolePermissions(\n this._roleKey,\n JSON.parse(updatedModelValue)\n )\n )\n )\n .subscribe({\n next: result => {\n this.enableMore();\n this.enableSave();\n this.enableEditor();\n this.showSuccessMessage(this._roleKey);\n this.setModel(result);\n },\n error: () => {\n this.enableMore();\n this.enableSave();\n this.enableEditor();\n },\n });\n }\n\n public onDelete(roles: Array<string>): void {\n this.disableEditor();\n this.disableSave();\n this.disableMore();\n\n this.accessControlService.dispatchAction(\n this.accessControlService.deleteRoles({roles}).pipe(\n finalize(() => {\n this.router.navigate(['/access-control']);\n })\n )\n );\n }\n\n public showDeleteModal(): void {\n this.showDeleteModal$.next(true);\n }\n\n public showEditModal(): void {\n this.showEditModal$.next(true);\n }\n\n public onEdit(currentRoleKey: string, data: Role | null): void {\n this.showEditModal$.next(false);\n\n if (!data) {\n return;\n }\n\n this.disableEditor();\n this.disableSave();\n this.disableMore();\n\n this.accessControlService.updateRole(currentRoleKey, data).subscribe(() => {\n this.router.navigate([`/access-control/${data.roleKey}`]);\n this.showSuccessMessage(data.roleKey);\n });\n }\n\n public exportPermissions(): void {\n this.accessControlExportService\n .exportRoles({type: 'separate', roleKeys: [this._roleKey]})\n .subscribe();\n }\n\n private openRoleKeySubscription(): void {\n this._roleKeySubscription = this.route.params\n .pipe(\n filter(params => params?.id),\n map(params => params.id),\n tap(roleKey => {\n this._roleKey = roleKey;\n this.pageTitleService.setCustomPageTitle(roleKey, true);\n this.selectedRowKeys$.next([roleKey]);\n }),\n switchMap(roleKey => this.accessControlService.getRolePermissions(roleKey)),\n tap(permissions => {\n this.enableMore();\n this.enableSave();\n this.enableEditor();\n this.setModel(permissions);\n })\n )\n .subscribe();\n }\n\n private getPermissions(): void {\n this.route.params\n .pipe(\n tap(params => {\n this.pageTitleService.setCustomPageTitle(params?.id);\n this.selectedRowKeys$.next([params?.id]);\n }),\n switchMap(params => this.accessControlService.getRolePermissions(params.id))\n )\n .subscribe(permissions => {\n this.enableMore();\n this.enableSave();\n this.enableEditor();\n this.setModel(permissions);\n });\n }\n\n private setModel(permissions: object): void {\n this.model$.next({\n value: JSON.stringify(permissions),\n language: 'json',\n });\n }\n\n private disableMore(): void {\n this.moreDisabled$.next(true);\n }\n\n private enableMore(): void {\n this.moreDisabled$.next(false);\n }\n\n private disableSave(): void {\n this.saveDisabled$.next(true);\n }\n\n private enableSave(): void {\n this.saveDisabled$.next(false);\n }\n\n private disableEditor(): void {\n this.editorDisabled$.next(true);\n }\n\n private enableEditor(): void {\n this.editorDisabled$.next(false);\n }\n\n private showSuccessMessage(roleKey: string): void {\n this.globalNotificationService.showToast({\n title: this.translateService.instant('accessControl.roles.savedSuccessTitle'),\n caption: this.translateService.instant('accessControl.roles.savedSuccessTitleMessage', {\n roleKey,\n }),\n type: 'success',\n });\n }\n}\n","<!--\n ~ Copyright 2015-2025 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<ng-container *ngIf=\"model$ | async as model; else loading\">\n <valtimo-editor\n [disabled]=\"editorDisabled$ | async\"\n [model]=\"model\"\n (validEvent)=\"onValid($event)\"\n (valueChangeEvent)=\"onValueChange($event)\"\n [fitPage]=\"true\"\n ></valtimo-editor>\n</ng-container>\n\n<ng-container renderInPageHeader>\n <ng-template>\n <div\n *ngIf=\"{\n model: model$ | async,\n moreDisabled: moreDisabled$ | async,\n compactMode: compactMode$ | async,\n } as obs\"\n class=\"buttons-container\"\n >\n <cds-overflow-menu class=\"overflow-button\">\n <cds-overflow-menu-option [disabled]=\"obs.moreDisabled\" (selected)=\"showEditModal()\">{{\n 'accessControl.roles.editMetadata' | translate\n }}</cds-overflow-menu-option>\n\n <cds-overflow-menu-option [disabled]=\"obs.moreDisabled\" (selected)=\"exportPermissions()\">{{\n 'interface.export' | translate\n }}</cds-overflow-menu-option>\n\n <cds-overflow-menu-option\n [disabled]=\"obs.moreDisabled\"\n type=\"danger\"\n (selected)=\"showDeleteModal()\"\n >{{ 'interface.delete' | translate }}</cds-overflow-menu-option\n >\n </cds-overflow-menu>\n\n <button\n [disabled]=\"saveDisabled$ | async\"\n cdsButton=\"primary\"\n [size]=\"obs.compactMode ? 'sm' : 'md'\"\n (click)=\"updatePermissions()\"\n >\n {{ 'interface.save' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"save\" size=\"16\"></svg>\n </button>\n </div>\n </ng-template>\n</ng-container>\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-role-metadata-modal\n [defaultKeyValue]=\"obs.selectedRowKeys[0]\"\n [open]=\"showEditModal$ | async\"\n type=\"edit\"\n (closeEvent)=\"onEdit(obs.selectedRowKeys[0], $event)\"\n ></valtimo-role-metadata-modal>\n</ng-container>\n\n<ng-template #loading>\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n</ng-template>\n","/*\n * Copyright 2015-2025 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 */\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {ROLE_ADMIN} from '@valtimo/shared';\nimport {AuthGuardService} from '@valtimo/security';\nimport {AccessControlOverviewComponent} from './components/overview/access-control-overview.component';\nimport {AccessControlEditorComponent} from './components/editor/access-control-editor.component';\n\nconst routes: Routes = [\n {\n path: 'access-control',\n component: AccessControlOverviewComponent,\n canActivate: [AuthGuardService],\n data: {title: 'Access control', roles: [ROLE_ADMIN]},\n },\n {\n path: 'access-control/:id',\n component: AccessControlEditorComponent,\n canActivate: [AuthGuardService],\n data: {\n title: 'Role details',\n roles: [ROLE_ADMIN],\n customPageTitle: true,\n },\n },\n];\n\n@NgModule({\n imports: [CommonModule, RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class AccessControlManagementRoutingModule {}\n","/*\n * Copyright 2015-2025 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 */\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {\n CarbonListModule,\n ConfirmationModalModule,\n EditorModule,\n RenderInPageHeaderDirective,\n} from '@valtimo/components';\nimport {AccessControlManagementRoutingModule} from './access-control-management-routing.module';\nimport {AccessControlOverviewComponent} from './components/overview/access-control-overview.component';\nimport {RoleMetadataModalComponent} from './components/role-metadata-modal/role-metadata-modal.component';\nimport {\n ButtonModule,\n DialogModule,\n IconModule,\n InputModule,\n LoadingModule,\n ModalModule,\n NotificationModule,\n} from 'carbon-components-angular';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {AccessControlEditorComponent} from './components/editor/access-control-editor.component';\nimport {DeleteRoleModalComponent} from './components/delete-role-modal/delete-role-modal.component';\nimport {ExportRoleModalComponent} from './components/export-role-modal/export-role-modal.component';\n\n@NgModule({\n declarations: [\n AccessControlOverviewComponent,\n RoleMetadataModalComponent,\n AccessControlEditorComponent,\n DeleteRoleModalComponent,\n ExportRoleModalComponent,\n ],\n imports: [\n CommonModule,\n AccessControlManagementRoutingModule,\n ButtonModule,\n FormsModule,\n ModalModule,\n TranslateModule,\n ReactiveFormsModule,\n InputModule,\n IconModule,\n ConfirmationModalModule,\n EditorModule,\n RenderInPageHeaderDirective,\n LoadingModule,\n IconModule,\n DialogModule,\n NotificationModule,\n CarbonListModule,\n ],\n})\nexport class AccessControlManagementModule {}\n","/*\n * Copyright 2015-2025 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/*\n * Public API Surface of access-control\n */\n\nexport * from './lib/models';\nexport * from './lib/services';\nexport * from './lib/access-control-management.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.AccessControlService","i1","i2","i4","i3","i2.AccessControlExportService","i5","i6","i7.RoleMetadataModalComponent","i8.DeleteRoleModalComponent","i9.ExportRoleModalComponent","i10","i6.AccessControlExportService","i7","i8","i9.RoleMetadataModalComponent","i10.DeleteRoleModalComponent"],"mappings":"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"}
1
+ {"version":3,"file":"valtimo-access-control-management.mjs","sources":["../../../../projects/valtimo/access-control-management/src/lib/models/role.model.ts","../../../../projects/valtimo/access-control-management/src/lib/models/index.ts","../../../../projects/valtimo/access-control-management/src/lib/services/access-control.service.ts","../../../../projects/valtimo/access-control-management/src/lib/services/index.ts","../../../../projects/valtimo/access-control-management/src/lib/services/access-control-export.service.ts","../../../../projects/valtimo/access-control-management/src/lib/components/role-metadata-modal/role-metadata-modal.component.ts","../../../../projects/valtimo/access-control-management/src/lib/components/role-metadata-modal/role-metadata-modal.component.html","../../../../projects/valtimo/access-control-management/src/lib/components/delete-role-modal/delete-role-modal.component.ts","../../../../projects/valtimo/access-control-management/src/lib/components/delete-role-modal/delete-role-modal.component.html","../../../../projects/valtimo/access-control-management/src/lib/components/export-role-modal/export-role-modal.component.ts","../../../../projects/valtimo/access-control-management/src/lib/components/export-role-modal/export-role-modal.component.html","../../../../projects/valtimo/access-control-management/src/lib/components/overview/access-control-overview.component.ts","../../../../projects/valtimo/access-control-management/src/lib/components/overview/access-control-overview.component.html","../../../../projects/valtimo/access-control-management/src/lib/components/editor/access-control-editor.component.ts","../../../../projects/valtimo/access-control-management/src/lib/components/editor/access-control-editor.component.html","../../../../projects/valtimo/access-control-management/src/lib/access-control-management-routing.module.ts","../../../../projects/valtimo/access-control-management/src/lib/access-control-management.module.ts","../../../../projects/valtimo/access-control-management/src/public-api.ts","../../../../projects/valtimo/access-control-management/src/valtimo-access-control-management.ts"],"sourcesContent":["/*\n * Copyright 2015-2025 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\ninterface Role {\n roleKey: string;\n}\n\ninterface DeleteRolesRequest {\n roles: Array<string>;\n}\n\ntype RoleMetadataModal = 'add' | 'edit';\n\ntype RoleExport = 'unified' | 'separate';\n\ninterface ExportRoleOutput {\n roleKeys: Array<string>;\n type: RoleExport;\n}\n\nexport {Role, DeleteRolesRequest, RoleMetadataModal, RoleExport, ExportRoleOutput};\n","/*\n * Copyright 2015-2025 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\nexport * from './role.model';\n","/*\n * Copyright 2015-2025 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\nimport {HttpClient} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {ConfigService} from '@valtimo/shared';\nimport {BehaviorSubject, catchError, Observable, of, switchMap, take, tap} from 'rxjs';\nimport {DeleteRolesRequest, Role} from '../models';\n\n@Injectable({providedIn: 'root'})\nexport class AccessControlService {\n public readonly roles$ = new BehaviorSubject<Role[]>([]);\n public readonly loading$ = new BehaviorSubject<boolean>(false);\n\n private valtimoEndpointUri: string;\n\n private get roleDtos$(): Observable<Role[]> {\n return this.http.get<Role[]>(`${this.valtimoEndpointUri}v1/roles`);\n }\n\n constructor(\n private readonly configService: ConfigService,\n private readonly http: HttpClient\n ) {\n this.valtimoEndpointUri = `${this.configService.config.valtimoApi.endpointUri}management/`;\n }\n\n public addRole(role: Role): Observable<Role> {\n return this.http.post<Role>(`${this.valtimoEndpointUri}v1/roles`, role);\n }\n\n public deleteRoles(request: DeleteRolesRequest): Observable<null> {\n return this.http.delete<null>(`${this.valtimoEndpointUri}v1/roles`, {body: request});\n }\n\n public dispatchAction(actionResult: Observable<Role | null>): void {\n actionResult\n .pipe(\n tap(() => {\n this.loading$.next(true);\n }),\n switchMap(() => this.roleDtos$),\n take(1),\n catchError(error => of(error))\n )\n .subscribe({\n next: (roles: Role[]) => {\n this.roles$.next(roles);\n this.loading$.next(false);\n },\n error: error => {\n console.error(error);\n },\n });\n }\n\n public loadRoles(): void {\n this.roleDtos$\n .pipe(\n tap(() => {\n this.loading$.next(true);\n }),\n take(1)\n )\n .subscribe({\n next: (items: Role[]) => {\n this.roles$.next(items);\n this.loading$.next(false);\n },\n error: error => {\n console.error(error);\n },\n });\n }\n\n public getRolePermissions(roleKey: string): Observable<Array<object>> {\n return this.http.get<Array<object>>(\n `${this.valtimoEndpointUri}v1/roles/${roleKey}/permissions`\n );\n }\n\n public exportRolePermissions(roles: string[]): Observable<object[]> {\n return this.http.post<object[]>(`${this.valtimoEndpointUri}v1/permissions/search`, {roles});\n }\n\n public updateRolePermissions(roleKey: string, updatedPermission: object): Observable<object> {\n return this.http.put<object>(\n `${this.valtimoEndpointUri}v1/roles/${roleKey}/permissions`,\n updatedPermission\n );\n }\n\n public updateRole(roleKey: string, request: Role): Observable<object> {\n return this.http.put<object>(`${this.valtimoEndpointUri}v1/roles/${roleKey}`, request);\n }\n}\n","/*\n * Copyright 2015-2025 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\nexport * from './access-control.service';\n","/*\n * Copyright 2015-2025 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\nimport {Injectable} from '@angular/core';\nimport {AccessControlService} from './access-control.service';\nimport {ExportRoleOutput, RoleExport} from '../models';\nimport {catchError, combineLatest, map, Observable, of, tap} from 'rxjs';\n\n@Injectable({providedIn: 'root'})\nexport class AccessControlExportService {\n constructor(private readonly accessControlService: AccessControlService) {}\n\n public exportRoles(event: ExportRoleOutput): Observable<boolean> {\n return (\n event.type === 'unified'\n ? this.accessControlService.exportRolePermissions(event.roleKeys).pipe(\n tap(res => {\n this.downloadJson(res, event.type);\n })\n )\n : combineLatest(\n event.roleKeys.map((roleKey: string) =>\n this.accessControlService.exportRolePermissions([roleKey])\n )\n ).pipe(\n tap(res => {\n res.forEach((permissions, index) => {\n const roleKey = event.roleKeys[index];\n this.downloadJson(permissions, event.type, roleKey);\n });\n })\n )\n ).pipe(\n map(() => true),\n catchError(() => of(false))\n );\n }\n\n private downloadJson(permissions: Array<object>, type: RoleExport, roleKey?: string): void {\n const sJson = JSON.stringify({permissions}, null, 2);\n const element = document.createElement('a');\n element.setAttribute('href', 'data:text/json;charset=UTF-8,' + encodeURIComponent(sJson));\n element.setAttribute(\n 'download',\n `${type === 'separate' ? roleKey : 'combined'}.permission.json`\n );\n element.style.display = 'none';\n document.body.appendChild(element);\n element.click(); // simulate click\n document.body.removeChild(element);\n }\n}\n","/*\n * Copyright 2015-2025 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\nimport {ChangeDetectionStrategy, Component, EventEmitter, Input, Output} from '@angular/core';\nimport {FormBuilder, Validators} from '@angular/forms';\nimport {Role, RoleMetadataModal} from '../../models';\nimport {CARBON_CONSTANTS} from '@valtimo/components';\n\n@Component({\n standalone: false,\n selector: 'valtimo-role-metadata-modal',\n templateUrl: './role-metadata-modal.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RoleMetadataModalComponent {\n @Input() open = false;\n @Input() type: RoleMetadataModal = 'add';\n @Input() set defaultKeyValue(value: string) {\n this._defaultKeyValue = value;\n this.setDefaultKeyValue(value);\n }\n @Output() closeEvent = new EventEmitter<Role | null>();\n\n public form = this.fb.group({\n key: this.fb.control('', Validators.required),\n });\n\n private _defaultKeyValue!: string;\n\n public get key() {\n return this.form?.get('key');\n }\n\n constructor(private readonly fb: FormBuilder) {}\n\n public onCancel(): void {\n this.closeEvent.emit(null);\n this.resetForm();\n }\n\n public onConfirm(): void {\n if (!this.key) {\n return;\n }\n\n this.closeEvent.emit({roleKey: this.key.value});\n this.resetForm();\n }\n\n private setDefaultKeyValue(value: string) {\n this.key.setValue(value);\n }\n\n private resetForm(): void {\n setTimeout(() => {\n this.form.reset();\n if (this.type === 'edit') {\n this.setDefaultKeyValue(this._defaultKeyValue);\n }\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n}\n","<!--\n ~ Copyright 2015-2025 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 (close)=\"onCancel()\"\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","/*\n * Copyright 2015-2025 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\nimport {ChangeDetectionStrategy, Component, EventEmitter, Input, Output} from '@angular/core';\nimport {Observable} from 'rxjs';\n\n@Component({\n standalone: false,\n selector: 'valtimo-delete-role-modal',\n templateUrl: './delete-role-modal.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DeleteRoleModalComponent {\n @Input() deleteRowKeys: Array<string>;\n @Input() showDeleteModal$: Observable<boolean>;\n @Output() deleteEvent = new EventEmitter<Array<string>>();\n\n public onDelete(roles: Array<string>): void {\n this.deleteEvent.emit(roles);\n }\n}\n","<!--\n ~ Copyright 2015-2025 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-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"accessControl.roles.deleteModalContent\"\n [outputOnConfirm]=\"deleteRowKeys\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"interface.delete\"\n (confirmEvent)=\"onDelete($event)\"\n></valtimo-confirmation-modal>\n","/*\n * Copyright 2015-2025 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\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport {ExportRoleOutput, RoleExport} from '../../models';\nimport {BehaviorSubject, Observable, Subscription} from 'rxjs';\nimport {CARBON_CONSTANTS} from '@valtimo/components';\n\n@Component({\n standalone: false,\n selector: 'valtimo-export-role-modal',\n templateUrl: './export-role-modal.component.html',\n styleUrls: ['./export-role-modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ExportRoleModalComponent implements OnInit, OnDestroy {\n @Input() open = false;\n @Input() exportRowKeys: Array<string>;\n @Input() reset$!: Observable<null>;\n @Input() disabled: boolean;\n\n @Output() exportEvent = new EventEmitter<ExportRoleOutput>();\n @Output() closeEvent = new EventEmitter<any>();\n\n public readonly selectedType$ = new BehaviorSubject<RoleExport | null>(null);\n\n private _resetSubscription!: Subscription;\n\n public ngOnInit(): void {\n this.openResetSubscription();\n }\n\n public ngOnDestroy(): void {\n this._resetSubscription?.unsubscribe();\n }\n\n public onCancel(): void {\n if (!this.disabled) {\n this.resetType();\n this.closeEvent.emit();\n }\n }\n\n public onConfirm(type: RoleExport): void {\n this.exportEvent.emit({type, roleKeys: this.exportRowKeys});\n }\n\n public selectType(type: RoleExport): void {\n this.selectedType$.next(type);\n }\n\n private resetType(): void {\n setTimeout(() => {\n this.selectedType$.next(null);\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n\n private openResetSubscription(): void {\n this._resetSubscription = this.reset$?.subscribe(() => {\n this.closeEvent.emit();\n this.resetType();\n });\n }\n}\n","<!--\n ~ Copyright 2015-2025 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=\"{title: ('interface.export' | translate), selectedType: selectedType$ | async} as vars\"\n valtimoCdsModal\n [open]=\"open\"\n size=\"sm\"\n showFooter=\"true\"\n [title]=\"vars.title\"\n (close)=\"onCancel()\"\n>\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCancel()\">\n <h3 cdsModalHeaderHeading>\n {{ vars.title }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent>\n <div class=\"export-buttons\">\n <button [disabled]=\"disabled\" cdsButton=\"secondary\" (click)=\"selectType('unified')\">\n {{ 'accessControl.roles.singleExport' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"document\" size=\"16\"></svg>\n </button>\n\n <button [disabled]=\"disabled\" cdsButton=\"secondary\" (click)=\"selectType('separate')\">\n {{ 'accessControl.roles.multipleExport' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"copy--file\" size=\"16\"></svg>\n </button>\n </div>\n </section>\n\n <cds-modal-footer>\n <button [disabled]=\"disabled\" cdsButton=\"ghost\" (click)=\"onCancel()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button\n [disabled]=\"!vars.selectedType || disabled\"\n cdsButton=\"primary\"\n (click)=\"onConfirm(vars.selectedType)\"\n >\n {{ vars.title }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2025 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 */\nimport {ChangeDetectionStrategy, Component, OnInit, ViewChild} from '@angular/core';\nimport {Router} from '@angular/router';\nimport {CARBON_CONSTANTS, CarbonListComponent, ColumnConfig, ViewType} from '@valtimo/components';\nimport {BehaviorSubject, delay, finalize, Observable, Subject, tap} from 'rxjs';\nimport {ExportRoleOutput, Role} from '../../models';\nimport {AccessControlExportService} from '../../services/access-control-export.service';\nimport {AccessControlService} from '../../services/access-control.service';\n\n@Component({\n standalone: false,\n templateUrl: './access-control-overview.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AccessControlOverviewComponent implements OnInit {\n @ViewChild(CarbonListComponent) carbonList: CarbonListComponent;\n\n public fields: ColumnConfig[] = [\n {\n viewType: ViewType.TEXT,\n key: 'roleKey',\n label: 'accessControl.roles.key',\n },\n ];\n\n public readonly roles$: Observable<Role[]> = this.accessControlService.roles$;\n public readonly loading$: Observable<boolean> = this.accessControlService.loading$;\n public readonly skeleton$ = new BehaviorSubject<boolean>(false);\n public readonly showAddModal$ = new BehaviorSubject<boolean>(false);\n public readonly showDeleteModal$ = new BehaviorSubject<boolean>(false);\n public readonly showExportModal$ = new BehaviorSubject<boolean>(false);\n public readonly selectedRowKeys$ = new BehaviorSubject<Array<string>>([]);\n public readonly resetExportType$ = new Subject<null>();\n public readonly exportDisabled$ = new BehaviorSubject<boolean>(false);\n\n constructor(\n private readonly accessControlService: AccessControlService,\n private readonly accessControlExportService: AccessControlExportService,\n private readonly router: Router\n ) {}\n\n public ngOnInit(): void {\n this.accessControlService.loadRoles();\n }\n\n public openAddModal(): void {\n this.showAddModal$.next(true);\n }\n\n public onAdd(data: Role | null): void {\n this.showAddModal$.next(false);\n\n if (!data) {\n return;\n }\n\n this.accessControlService.dispatchAction(\n this.accessControlService.addRole(data).pipe(\n finalize(() => {\n this.showAddModal$.next(false);\n })\n )\n );\n }\n\n public showDeleteModal(): void {\n this.setSelectedRoleKeys();\n this.showDeleteModal$.next(true);\n }\n\n public showExportModal(): void {\n this.setSelectedRoleKeys();\n this.showExportModal$.next(true);\n }\n\n public closeExportModal(): void {\n this.showExportModal$.next(false);\n }\n\n public onDelete(roles: Array<string>): void {\n this.enableSkeleton();\n\n this.accessControlService.dispatchAction(\n this.accessControlService.deleteRoles({roles}).pipe(\n finalize(() => {\n this.disableSkeleton();\n })\n )\n );\n }\n\n public onExport(event: ExportRoleOutput): void {\n this.exportDisabled$.next(true);\n\n this.accessControlExportService\n .exportRoles(event)\n .pipe(\n tap(() => {\n this.resetExportType$.next(null);\n }),\n delay(CARBON_CONSTANTS.modalAnimationMs),\n tap(() => {\n this.exportDisabled$.next(false);\n })\n )\n .subscribe();\n }\n\n public onRowClick(role: Role): void {\n this.router.navigate([`/access-control/${role.roleKey}`]);\n }\n\n private enableSkeleton(): void {\n this.skeleton$.next(true);\n }\n\n private disableSkeleton(): void {\n this.skeleton$.next(false);\n }\n\n private setSelectedRoleKeys(): void {\n this.selectedRowKeys$.next(this.carbonList.selectedItems.map((role: Role) => role.roleKey));\n }\n}\n","<!--\n ~ Copyright 2015-2025 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]=\"false\"\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","/*\n * Copyright 2015-2025 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\nimport {ChangeDetectionStrategy, Component, OnDestroy, OnInit} from '@angular/core';\nimport {AccessControlService} from '../../services/access-control.service';\nimport {BehaviorSubject, filter, finalize, map, Subscription, switchMap, take, tap} from 'rxjs';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {EditorModel, PageHeaderService, PageTitleService} from '@valtimo/components';\nimport {Role} from '../../models';\nimport {TranslateService} from '@ngx-translate/core';\nimport {AccessControlExportService} from '../../services/access-control-export.service';\nimport {GlobalNotificationService} from '@valtimo/shared';\n\n@Component({\n standalone: false,\n templateUrl: './access-control-editor.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['./access-control-editor.component.scss'],\n})\nexport class AccessControlEditorComponent implements OnInit, OnDestroy {\n public readonly model$ = new BehaviorSubject<EditorModel | null>(null);\n public readonly saveDisabled$ = new BehaviorSubject<boolean>(true);\n public readonly editorDisabled$ = new BehaviorSubject<boolean>(false);\n public readonly moreDisabled$ = new BehaviorSubject<boolean>(true);\n public readonly showDeleteModal$ = new BehaviorSubject<boolean>(false);\n public readonly showEditModal$ = new BehaviorSubject<boolean>(false);\n public readonly selectedRowKeys$ = new BehaviorSubject<Array<string> | null>(null);\n public readonly compactMode$ = this.pageHeaderService.compactMode$;\n\n private _roleKeySubscription!: Subscription;\n private _roleKey!: string;\n private readonly _updatedModelValue$ = new BehaviorSubject<string>('');\n\n constructor(\n private readonly accessControlService: AccessControlService,\n private readonly route: ActivatedRoute,\n private readonly pageTitleService: PageTitleService,\n private readonly router: Router,\n private readonly globalNotificationService: GlobalNotificationService,\n private readonly translateService: TranslateService,\n private readonly accessControlExportService: AccessControlExportService,\n private readonly pageHeaderService: PageHeaderService\n ) {}\n\n public ngOnInit(): void {\n this.getPermissions();\n this.openRoleKeySubscription();\n }\n\n public ngOnDestroy(): void {\n this.pageTitleService.enableReset();\n this._roleKeySubscription?.unsubscribe();\n }\n\n public onValid(valid: boolean): void {\n this.saveDisabled$.next(valid === false);\n }\n\n public onValueChange(value: string): void {\n this._updatedModelValue$.next(value);\n }\n\n public updatePermissions(): void {\n this.disableEditor();\n this.disableSave();\n this.disableMore();\n\n this._updatedModelValue$\n .pipe(\n take(1),\n switchMap(updatedModelValue =>\n this.accessControlService.updateRolePermissions(\n this._roleKey,\n JSON.parse(updatedModelValue)\n )\n )\n )\n .subscribe({\n next: result => {\n this.enableMore();\n this.enableSave();\n this.enableEditor();\n this.showSuccessMessage(this._roleKey);\n this.setModel(result);\n },\n error: () => {\n this.enableMore();\n this.enableSave();\n this.enableEditor();\n },\n });\n }\n\n public onDelete(roles: Array<string>): void {\n this.disableEditor();\n this.disableSave();\n this.disableMore();\n\n this.accessControlService.dispatchAction(\n this.accessControlService.deleteRoles({roles}).pipe(\n finalize(() => {\n this.router.navigate(['/access-control']);\n })\n )\n );\n }\n\n public showDeleteModal(): void {\n this.showDeleteModal$.next(true);\n }\n\n public showEditModal(): void {\n this.showEditModal$.next(true);\n }\n\n public onEdit(currentRoleKey: string, data: Role | null): void {\n this.showEditModal$.next(false);\n\n if (!data) {\n return;\n }\n\n this.disableEditor();\n this.disableSave();\n this.disableMore();\n\n this.accessControlService.updateRole(currentRoleKey, data).subscribe(() => {\n this.router.navigate([`/access-control/${data.roleKey}`]);\n this.showSuccessMessage(data.roleKey);\n });\n }\n\n public exportPermissions(): void {\n this.accessControlExportService\n .exportRoles({type: 'separate', roleKeys: [this._roleKey]})\n .subscribe();\n }\n\n private openRoleKeySubscription(): void {\n this._roleKeySubscription = this.route.params\n .pipe(\n filter(params => params?.id),\n map(params => params.id),\n tap(roleKey => {\n this._roleKey = roleKey;\n this.pageTitleService.setCustomPageTitle(roleKey, true);\n this.selectedRowKeys$.next([roleKey]);\n }),\n switchMap(roleKey => this.accessControlService.getRolePermissions(roleKey)),\n tap(permissions => {\n this.enableMore();\n this.enableSave();\n this.enableEditor();\n this.setModel(permissions);\n })\n )\n .subscribe();\n }\n\n private getPermissions(): void {\n this.route.params\n .pipe(\n tap(params => {\n this.pageTitleService.setCustomPageTitle(params?.id);\n this.selectedRowKeys$.next([params?.id]);\n }),\n switchMap(params => this.accessControlService.getRolePermissions(params.id))\n )\n .subscribe(permissions => {\n this.enableMore();\n this.enableSave();\n this.enableEditor();\n this.setModel(permissions);\n });\n }\n\n private setModel(permissions: object): void {\n this.model$.next({\n value: JSON.stringify(permissions),\n language: 'json',\n });\n }\n\n private disableMore(): void {\n this.moreDisabled$.next(true);\n }\n\n private enableMore(): void {\n this.moreDisabled$.next(false);\n }\n\n private disableSave(): void {\n this.saveDisabled$.next(true);\n }\n\n private enableSave(): void {\n this.saveDisabled$.next(false);\n }\n\n private disableEditor(): void {\n this.editorDisabled$.next(true);\n }\n\n private enableEditor(): void {\n this.editorDisabled$.next(false);\n }\n\n private showSuccessMessage(roleKey: string): void {\n this.globalNotificationService.showToast({\n title: this.translateService.instant('accessControl.roles.savedSuccessTitle'),\n caption: this.translateService.instant('accessControl.roles.savedSuccessTitleMessage', {\n roleKey,\n }),\n type: 'success',\n });\n }\n}\n","<!--\n ~ Copyright 2015-2025 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<ng-container *ngIf=\"model$ | async as model; else loading\">\n <valtimo-editor\n [disabled]=\"editorDisabled$ | async\"\n [model]=\"model\"\n (validEvent)=\"onValid($event)\"\n (valueChangeEvent)=\"onValueChange($event)\"\n [fitPage]=\"true\"\n ></valtimo-editor>\n</ng-container>\n\n<ng-container renderInPageHeader>\n <ng-template>\n <div\n *ngIf=\"{\n model: model$ | async,\n moreDisabled: moreDisabled$ | async,\n compactMode: compactMode$ | async,\n } as obs\"\n class=\"buttons-container\"\n >\n <cds-overflow-menu class=\"overflow-button\">\n <cds-overflow-menu-option [disabled]=\"obs.moreDisabled\" (selected)=\"showEditModal()\">{{\n 'accessControl.roles.editMetadata' | translate\n }}</cds-overflow-menu-option>\n\n <cds-overflow-menu-option [disabled]=\"obs.moreDisabled\" (selected)=\"exportPermissions()\">{{\n 'interface.export' | translate\n }}</cds-overflow-menu-option>\n\n <cds-overflow-menu-option\n [disabled]=\"obs.moreDisabled\"\n type=\"danger\"\n (selected)=\"showDeleteModal()\"\n >{{ 'interface.delete' | translate }}</cds-overflow-menu-option\n >\n </cds-overflow-menu>\n\n <button\n [disabled]=\"saveDisabled$ | async\"\n cdsButton=\"primary\"\n [size]=\"obs.compactMode ? 'sm' : 'md'\"\n (click)=\"updatePermissions()\"\n >\n {{ 'interface.save' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"save\" size=\"16\"></svg>\n </button>\n </div>\n </ng-template>\n</ng-container>\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-role-metadata-modal\n [defaultKeyValue]=\"obs.selectedRowKeys[0]\"\n [open]=\"showEditModal$ | async\"\n type=\"edit\"\n (closeEvent)=\"onEdit(obs.selectedRowKeys[0], $event)\"\n ></valtimo-role-metadata-modal>\n</ng-container>\n\n<ng-template #loading>\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n</ng-template>\n","/*\n * Copyright 2015-2025 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 */\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {ROLE_ADMIN} from '@valtimo/shared';\nimport {AuthGuardService} from '@valtimo/security';\nimport {AccessControlOverviewComponent} from './components/overview/access-control-overview.component';\nimport {AccessControlEditorComponent} from './components/editor/access-control-editor.component';\n\nconst routes: Routes = [\n {\n path: 'access-control',\n component: AccessControlOverviewComponent,\n canActivate: [AuthGuardService],\n data: {title: 'Access control', roles: [ROLE_ADMIN]},\n },\n {\n path: 'access-control/:id',\n component: AccessControlEditorComponent,\n canActivate: [AuthGuardService],\n data: {\n title: 'Role details',\n roles: [ROLE_ADMIN],\n customPageTitle: true,\n },\n },\n];\n\n@NgModule({\n imports: [CommonModule, RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class AccessControlManagementRoutingModule {}\n","/*\n * Copyright 2015-2025 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 */\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {\n CarbonListModule,\n ConfirmationModalModule,\n EditorModule,\n RenderInPageHeaderDirective,\n} from '@valtimo/components';\nimport {AccessControlManagementRoutingModule} from './access-control-management-routing.module';\nimport {AccessControlOverviewComponent} from './components/overview/access-control-overview.component';\nimport {RoleMetadataModalComponent} from './components/role-metadata-modal/role-metadata-modal.component';\nimport {\n ButtonModule,\n DialogModule,\n IconModule,\n InputModule,\n LoadingModule,\n ModalModule,\n NotificationModule,\n} from 'carbon-components-angular';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {AccessControlEditorComponent} from './components/editor/access-control-editor.component';\nimport {DeleteRoleModalComponent} from './components/delete-role-modal/delete-role-modal.component';\nimport {ExportRoleModalComponent} from './components/export-role-modal/export-role-modal.component';\n\n@NgModule({\n declarations: [\n AccessControlOverviewComponent,\n RoleMetadataModalComponent,\n AccessControlEditorComponent,\n DeleteRoleModalComponent,\n ExportRoleModalComponent,\n ],\n imports: [\n CommonModule,\n AccessControlManagementRoutingModule,\n ButtonModule,\n FormsModule,\n ModalModule,\n TranslateModule,\n ReactiveFormsModule,\n InputModule,\n IconModule,\n ConfirmationModalModule,\n EditorModule,\n RenderInPageHeaderDirective,\n LoadingModule,\n IconModule,\n DialogModule,\n NotificationModule,\n CarbonListModule,\n ],\n})\nexport class AccessControlManagementModule {}\n","/*\n * Copyright 2015-2025 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/*\n * Public API Surface of access-control\n */\n\nexport * from './lib/models';\nexport * from './lib/services';\nexport * from './lib/access-control-management.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.AccessControlService","i1","i2","i4","i3","i2.AccessControlExportService","i5","i6","i7.RoleMetadataModalComponent","i8.DeleteRoleModalComponent","i9.ExportRoleModalComponent","i10","i6.AccessControlExportService","i7","i8","i9.RoleMetadataModalComponent","i10.DeleteRoleModalComponent"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@valtimo/access-control-management",
3
- "version": "13.5.0",
3
+ "version": "13.6.0",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^19.2.8",
6
6
  "@angular/core": "^19.2.8"