@valtimo/access-control-management 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +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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"}
package/index.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="@valtimo/access-control-management" />
5
+ export * from './public-api';
@@ -0,0 +1,8 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "@angular/common";
3
+ import * as i2 from "@angular/router";
4
+ export declare class AccessControlManagementRoutingModule {
5
+ static ɵfac: i0.ɵɵFactoryDeclaration<AccessControlManagementRoutingModule, never>;
6
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AccessControlManagementRoutingModule, never, [typeof i1.CommonModule, typeof i2.RouterModule], [typeof i2.RouterModule]>;
7
+ static ɵinj: i0.ɵɵInjectorDeclaration<AccessControlManagementRoutingModule>;
8
+ }
@@ -0,0 +1,17 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "./components/overview/access-control-overview.component";
3
+ import * as i2 from "./components/role-metadata-modal/role-metadata-modal.component";
4
+ import * as i3 from "./components/editor/access-control-editor.component";
5
+ import * as i4 from "./components/delete-role-modal/delete-role-modal.component";
6
+ import * as i5 from "./components/export-role-modal/export-role-modal.component";
7
+ import * as i6 from "@angular/common";
8
+ import * as i7 from "./access-control-management-routing.module";
9
+ import * as i8 from "carbon-components-angular";
10
+ import * as i9 from "@angular/forms";
11
+ import * as i10 from "@ngx-translate/core";
12
+ import * as i11 from "@valtimo/components";
13
+ export declare class AccessControlManagementModule {
14
+ static ɵfac: i0.ɵɵFactoryDeclaration<AccessControlManagementModule, never>;
15
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AccessControlManagementModule, [typeof i1.AccessControlOverviewComponent, typeof i2.RoleMetadataModalComponent, typeof i3.AccessControlEditorComponent, typeof i4.DeleteRoleModalComponent, typeof i5.ExportRoleModalComponent], [typeof i6.CommonModule, typeof i7.AccessControlManagementRoutingModule, typeof i8.ButtonModule, typeof i9.FormsModule, typeof i8.ModalModule, typeof i10.TranslateModule, typeof i9.ReactiveFormsModule, typeof i8.InputModule, typeof i8.IconModule, typeof i11.ConfirmationModalModule, typeof i11.EditorModule, typeof i11.RenderInPageHeaderDirective, typeof i8.LoadingModule, typeof i8.IconModule, typeof i8.DialogModule, typeof i8.NotificationModule, typeof i11.CarbonListModule], never>;
16
+ static ɵinj: i0.ɵɵInjectorDeclaration<AccessControlManagementModule>;
17
+ }
@@ -0,0 +1,11 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import { Observable } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ export declare class DeleteRoleModalComponent {
5
+ deleteRowKeys: Array<string>;
6
+ showDeleteModal$: Observable<boolean>;
7
+ deleteEvent: EventEmitter<string[]>;
8
+ onDelete(roles: Array<string>): void;
9
+ static ɵfac: i0.ɵɵFactoryDeclaration<DeleteRoleModalComponent, never>;
10
+ static ɵcmp: i0.ɵɵComponentDeclaration<DeleteRoleModalComponent, "valtimo-delete-role-modal", never, { "deleteRowKeys": { "alias": "deleteRowKeys"; "required": false; }; "showDeleteModal$": { "alias": "showDeleteModal$"; "required": false; }; }, { "deleteEvent": "deleteEvent"; }, never, never, false, never>;
11
+ }
@@ -0,0 +1,54 @@
1
+ import { OnDestroy, OnInit } from '@angular/core';
2
+ import { AccessControlService } from '../../services/access-control.service';
3
+ import { BehaviorSubject } from 'rxjs';
4
+ import { ActivatedRoute, Router } from '@angular/router';
5
+ import { EditorModel, PageHeaderService, PageTitleService } from '@valtimo/components';
6
+ import { Role } from '../../models';
7
+ import { TranslateService } from '@ngx-translate/core';
8
+ import { AccessControlExportService } from '../../services/access-control-export.service';
9
+ import { GlobalNotificationService } from '@valtimo/shared';
10
+ import * as i0 from "@angular/core";
11
+ export declare class AccessControlEditorComponent implements OnInit, OnDestroy {
12
+ private readonly accessControlService;
13
+ private readonly route;
14
+ private readonly pageTitleService;
15
+ private readonly router;
16
+ private readonly globalNotificationService;
17
+ private readonly translateService;
18
+ private readonly accessControlExportService;
19
+ private readonly pageHeaderService;
20
+ readonly model$: BehaviorSubject<EditorModel>;
21
+ readonly saveDisabled$: BehaviorSubject<boolean>;
22
+ readonly editorDisabled$: BehaviorSubject<boolean>;
23
+ readonly moreDisabled$: BehaviorSubject<boolean>;
24
+ readonly showDeleteModal$: BehaviorSubject<boolean>;
25
+ readonly showEditModal$: BehaviorSubject<boolean>;
26
+ readonly selectedRowKeys$: BehaviorSubject<string[]>;
27
+ readonly compactMode$: import("rxjs").Observable<boolean>;
28
+ private _roleKeySubscription;
29
+ private _roleKey;
30
+ private readonly _updatedModelValue$;
31
+ constructor(accessControlService: AccessControlService, route: ActivatedRoute, pageTitleService: PageTitleService, router: Router, globalNotificationService: GlobalNotificationService, translateService: TranslateService, accessControlExportService: AccessControlExportService, pageHeaderService: PageHeaderService);
32
+ ngOnInit(): void;
33
+ ngOnDestroy(): void;
34
+ onValid(valid: boolean): void;
35
+ onValueChange(value: string): void;
36
+ updatePermissions(): void;
37
+ onDelete(roles: Array<string>): void;
38
+ showDeleteModal(): void;
39
+ showEditModal(): void;
40
+ onEdit(currentRoleKey: string, data: Role | null): void;
41
+ exportPermissions(): void;
42
+ private openRoleKeySubscription;
43
+ private getPermissions;
44
+ private setModel;
45
+ private disableMore;
46
+ private enableMore;
47
+ private disableSave;
48
+ private enableSave;
49
+ private disableEditor;
50
+ private enableEditor;
51
+ private showSuccessMessage;
52
+ static ɵfac: i0.ɵɵFactoryDeclaration<AccessControlEditorComponent, never>;
53
+ static ɵcmp: i0.ɵɵComponentDeclaration<AccessControlEditorComponent, "ng-component", never, {}, {}, never, never, false, never>;
54
+ }
@@ -0,0 +1,23 @@
1
+ import { EventEmitter, OnDestroy, OnInit } from '@angular/core';
2
+ import { ExportRoleOutput, RoleExport } from '../../models';
3
+ import { BehaviorSubject, Observable } from 'rxjs';
4
+ import * as i0 from "@angular/core";
5
+ export declare class ExportRoleModalComponent implements OnInit, OnDestroy {
6
+ open: boolean;
7
+ exportRowKeys: Array<string>;
8
+ reset$: Observable<null>;
9
+ disabled: boolean;
10
+ exportEvent: EventEmitter<ExportRoleOutput>;
11
+ closeEvent: EventEmitter<any>;
12
+ readonly selectedType$: BehaviorSubject<RoleExport>;
13
+ private _resetSubscription;
14
+ ngOnInit(): void;
15
+ ngOnDestroy(): void;
16
+ onCancel(): void;
17
+ onConfirm(type: RoleExport): void;
18
+ selectType(type: RoleExport): void;
19
+ private resetType;
20
+ private openResetSubscription;
21
+ static ɵfac: i0.ɵɵFactoryDeclaration<ExportRoleModalComponent, never>;
22
+ static ɵcmp: i0.ɵɵComponentDeclaration<ExportRoleModalComponent, "valtimo-export-role-modal", never, { "open": { "alias": "open"; "required": false; }; "exportRowKeys": { "alias": "exportRowKeys"; "required": false; }; "reset$": { "alias": "reset$"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, { "exportEvent": "exportEvent"; "closeEvent": "closeEvent"; }, never, never, false, never>;
23
+ }
@@ -0,0 +1,39 @@
1
+ import { OnInit } from '@angular/core';
2
+ import { Router } from '@angular/router';
3
+ import { CarbonListComponent, ColumnConfig } from '@valtimo/components';
4
+ import { BehaviorSubject, Observable, Subject } from 'rxjs';
5
+ import { ExportRoleOutput, Role } from '../../models';
6
+ import { AccessControlExportService } from '../../services/access-control-export.service';
7
+ import { AccessControlService } from '../../services/access-control.service';
8
+ import * as i0 from "@angular/core";
9
+ export declare class AccessControlOverviewComponent implements OnInit {
10
+ private readonly accessControlService;
11
+ private readonly accessControlExportService;
12
+ private readonly router;
13
+ carbonList: CarbonListComponent;
14
+ fields: ColumnConfig[];
15
+ readonly roles$: Observable<Role[]>;
16
+ readonly loading$: Observable<boolean>;
17
+ readonly skeleton$: BehaviorSubject<boolean>;
18
+ readonly showAddModal$: BehaviorSubject<boolean>;
19
+ readonly showDeleteModal$: BehaviorSubject<boolean>;
20
+ readonly showExportModal$: BehaviorSubject<boolean>;
21
+ readonly selectedRowKeys$: BehaviorSubject<string[]>;
22
+ readonly resetExportType$: Subject<null>;
23
+ readonly exportDisabled$: BehaviorSubject<boolean>;
24
+ constructor(accessControlService: AccessControlService, accessControlExportService: AccessControlExportService, router: Router);
25
+ ngOnInit(): void;
26
+ openAddModal(): void;
27
+ onAdd(data: Role | null): void;
28
+ showDeleteModal(): void;
29
+ showExportModal(): void;
30
+ closeExportModal(): void;
31
+ onDelete(roles: Array<string>): void;
32
+ onExport(event: ExportRoleOutput): void;
33
+ onRowClick(role: Role): void;
34
+ private enableSkeleton;
35
+ private disableSkeleton;
36
+ private setSelectedRoleKeys;
37
+ static ɵfac: i0.ɵɵFactoryDeclaration<AccessControlOverviewComponent, never>;
38
+ static ɵcmp: i0.ɵɵComponentDeclaration<AccessControlOverviewComponent, "ng-component", never, {}, {}, never, never, false, never>;
39
+ }
@@ -0,0 +1,23 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import { FormBuilder } from '@angular/forms';
3
+ import { Role, RoleMetadataModal } from '../../models';
4
+ import * as i0 from "@angular/core";
5
+ export declare class RoleMetadataModalComponent {
6
+ private readonly fb;
7
+ open: boolean;
8
+ type: RoleMetadataModal;
9
+ set defaultKeyValue(value: string);
10
+ closeEvent: EventEmitter<Role>;
11
+ form: import("@angular/forms").FormGroup<{
12
+ key: import("@angular/forms").FormControl<string>;
13
+ }>;
14
+ private _defaultKeyValue;
15
+ get key(): import("@angular/forms").AbstractControl<string, string>;
16
+ constructor(fb: FormBuilder);
17
+ onCancel(): void;
18
+ onConfirm(): void;
19
+ private setDefaultKeyValue;
20
+ private resetForm;
21
+ static ɵfac: i0.ɵɵFactoryDeclaration<RoleMetadataModalComponent, never>;
22
+ static ɵcmp: i0.ɵɵComponentDeclaration<RoleMetadataModalComponent, "valtimo-role-metadata-modal", never, { "open": { "alias": "open"; "required": false; }; "type": { "alias": "type"; "required": false; }; "defaultKeyValue": { "alias": "defaultKeyValue"; "required": false; }; }, { "closeEvent": "closeEvent"; }, never, never, false, never>;
23
+ }
@@ -0,0 +1 @@
1
+ export * from './role.model';
@@ -0,0 +1,13 @@
1
+ interface Role {
2
+ roleKey: string;
3
+ }
4
+ interface DeleteRolesRequest {
5
+ roles: Array<string>;
6
+ }
7
+ type RoleMetadataModal = 'add' | 'edit';
8
+ type RoleExport = 'unified' | 'separate';
9
+ interface ExportRoleOutput {
10
+ roleKeys: Array<string>;
11
+ type: RoleExport;
12
+ }
13
+ export { Role, DeleteRolesRequest, RoleMetadataModal, RoleExport, ExportRoleOutput };
@@ -0,0 +1,12 @@
1
+ import { AccessControlService } from './access-control.service';
2
+ import { ExportRoleOutput } from '../models';
3
+ import { Observable } from 'rxjs';
4
+ import * as i0 from "@angular/core";
5
+ export declare class AccessControlExportService {
6
+ private readonly accessControlService;
7
+ constructor(accessControlService: AccessControlService);
8
+ exportRoles(event: ExportRoleOutput): Observable<boolean>;
9
+ private downloadJson;
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<AccessControlExportService, never>;
11
+ static ɵprov: i0.ɵɵInjectableDeclaration<AccessControlExportService>;
12
+ }
@@ -0,0 +1,24 @@
1
+ import { HttpClient } from '@angular/common/http';
2
+ import { ConfigService } from '@valtimo/shared';
3
+ import { BehaviorSubject, Observable } from 'rxjs';
4
+ import { DeleteRolesRequest, Role } from '../models';
5
+ import * as i0 from "@angular/core";
6
+ export declare class AccessControlService {
7
+ private readonly configService;
8
+ private readonly http;
9
+ readonly roles$: BehaviorSubject<Role[]>;
10
+ readonly loading$: BehaviorSubject<boolean>;
11
+ private valtimoEndpointUri;
12
+ private get roleDtos$();
13
+ constructor(configService: ConfigService, http: HttpClient);
14
+ addRole(role: Role): Observable<Role>;
15
+ deleteRoles(request: DeleteRolesRequest): Observable<null>;
16
+ dispatchAction(actionResult: Observable<Role | null>): void;
17
+ loadRoles(): void;
18
+ getRolePermissions(roleKey: string): Observable<Array<object>>;
19
+ exportRolePermissions(roles: string[]): Observable<object[]>;
20
+ updateRolePermissions(roleKey: string, updatedPermission: object): Observable<object>;
21
+ updateRole(roleKey: string, request: Role): Observable<object>;
22
+ static ɵfac: i0.ɵɵFactoryDeclaration<AccessControlService, never>;
23
+ static ɵprov: i0.ɵɵInjectableDeclaration<AccessControlService>;
24
+ }
@@ -0,0 +1 @@
1
+ export * from './access-control.service';
package/package.json ADDED
@@ -0,0 +1,23 @@
1
+ {
2
+ "name": "@valtimo/access-control-management",
3
+ "version": "0.0.0",
4
+ "peerDependencies": {
5
+ "@angular/common": "^19.2.8",
6
+ "@angular/core": "^19.2.8"
7
+ },
8
+ "dependencies": {
9
+ "tslib": "2.8.1"
10
+ },
11
+ "module": "fesm2022/valtimo-access-control-management.mjs",
12
+ "typings": "index.d.ts",
13
+ "exports": {
14
+ "./package.json": {
15
+ "default": "./package.json"
16
+ },
17
+ ".": {
18
+ "types": "./index.d.ts",
19
+ "default": "./fesm2022/valtimo-access-control-management.mjs"
20
+ }
21
+ },
22
+ "sideEffects": false
23
+ }
@@ -0,0 +1,3 @@
1
+ export * from './lib/models';
2
+ export * from './lib/services';
3
+ export * from './lib/access-control-management.module';