From 46e9bb0f4932cc572eb059fc68d3693ce6496228 Mon Sep 17 00:00:00 2001 From: Valentin Date: Mon, 10 Jan 2022 15:40:16 +0200 Subject: [PATCH] WIP on dossier editor permissions - added 'dossier info' button instead of 'edit dossier' when user is not a manager - disabled 'dossier info' tab when user is not a manager; - disabled 'download package' tab when user is not a manager; --- .../edit-dossier-download-package.component.ts | 5 +++++ .../edit-dossier-dialog/edit-dossier-dialog.component.ts | 4 +++- .../edit-dossier-general-info.component.html | 8 +++++++- .../general-info/edit-dossier-general-info.component.ts | 3 +++ .../dossiers-listing-actions.component.html | 6 +++--- .../shared/components/select/select.component.html | 9 +++++++-- .../shared/components/select/select.component.scss | 5 +++++ apps/red-ui/src/app/services/permissions.service.ts | 4 ++++ apps/red-ui/src/assets/i18n/en.json | 3 +++ libs/common-ui | 2 +- 10 files changed, 41 insertions(+), 8 deletions(-) diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/download-package/edit-dossier-download-package.component.ts b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/download-package/edit-dossier-download-package.component.ts index 9ddc8a127..30155eaf4 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/download-package/edit-dossier-download-package.component.ts +++ b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/download-package/edit-dossier-download-package.component.ts @@ -5,6 +5,7 @@ import { EditDossierSaveResult, EditDossierSectionInterface } from '../edit-doss import { downloadTypesTranslations } from '../../../../../translations/download-types-translations'; import { DossiersService } from '@services/entity-services/dossiers.service'; import { ReportTemplateService } from '@services/report-template.service'; +import { PermissionsService } from '@services/permissions.service'; @Component({ selector: 'redaction-edit-dossier-download-package', @@ -25,6 +26,7 @@ export class EditDossierDownloadPackageComponent implements OnInit, EditDossierS private readonly _dossiersService: DossiersService, private readonly _reportTemplateController: ReportTemplateService, private readonly _formBuilder: FormBuilder, + private readonly _permissionsService: PermissionsService, ) {} get reportTypesLength() { @@ -71,6 +73,9 @@ export class EditDossierDownloadPackageComponent implements OnInit, EditDossierS (await this._reportTemplateController.getAvailableReportTemplates(this.dossier.dossierTemplateId).toPromise()) || []; this.form = this._getForm(); + if (!this._permissionsService.canEditDossier()) { + this.form.disable(); + } } async save(): EditDossierSaveResult { diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/edit-dossier-dialog.component.ts b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/edit-dossier-dialog.component.ts index 87235becf..e319283ab 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/edit-dossier-dialog.component.ts +++ b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/edit-dossier-dialog.component.ts @@ -14,6 +14,7 @@ import { DossiersService } from '@services/entity-services/dossiers.service'; import { Observable } from 'rxjs'; import { tap } from 'rxjs/operators'; import { EditDossierTeamComponent } from './edit-dossier-team/edit-dossier-team.component'; +import { PermissionsService } from '@services/permissions.service'; type Section = 'dossierInfo' | 'downloadPackage' | 'dossierDictionary' | 'members' | 'dossierAttributes' | 'deletedDocuments'; @@ -41,6 +42,7 @@ export class EditDossierDialogComponent extends BaseDialogComponent { private readonly _changeRef: ChangeDetectorRef, private readonly _dialogRef: MatDialogRef, private readonly _loadingService: LoadingService, + private readonly _permissionsService: PermissionsService, @Inject(MAT_DIALOG_DATA) private readonly _data: { dossierId: string; @@ -109,7 +111,7 @@ export class EditDossierDialogComponent extends BaseDialogComponent { } get showActionButtons(): boolean { - return !['deletedDocuments'].includes(this.activeNav); + return !['deletedDocuments'].includes(this.activeNav) && this._permissionsService.canEditDossier(); } get changed(): boolean { diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.html b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.html index 4e2abec05..aebea6535 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.html +++ b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.html @@ -50,7 +50,13 @@
- + {{ 'edit-dossier-dialog.general-info.form.due-date' | translate }} diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.ts b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.ts index 4f7d35d7d..833c2161c 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.ts +++ b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.ts @@ -68,6 +68,9 @@ export class EditDossierGeneralInfoComponent implements OnInit, EditDossierSecti ngOnInit() { this._filterInvalidDossierTemplates(); this.form = this._getForm(); + if (!this.permissionsService.canEditDossier()) { + this.form.disable(); + } this.hasDueDate = !!this.dossier.dueDate; } diff --git a/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossiers-listing-actions/dossiers-listing-actions.component.html b/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossiers-listing-actions/dossiers-listing-actions.component.html index 7ab3ea424..6dec76bb6 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossiers-listing-actions/dossiers-listing-actions.component.html +++ b/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossiers-listing-actions/dossiers-listing-actions.component.html @@ -9,10 +9,10 @@ > diff --git a/apps/red-ui/src/app/modules/shared/components/select/select.component.html b/apps/red-ui/src/app/modules/shared/components/select/select.component.html index 1e85e12df..b10177749 100644 --- a/apps/red-ui/src/app/modules/shared/components/select/select.component.html +++ b/apps/red-ui/src/app/modules/shared/components/select/select.component.html @@ -1,8 +1,13 @@
{{ label }}
-
-
+
+
diff --git a/apps/red-ui/src/app/modules/shared/components/select/select.component.scss b/apps/red-ui/src/app/modules/shared/components/select/select.component.scss index 1cc0bc590..6cda04188 100644 --- a/apps/red-ui/src/app/modules/shared/components/select/select.component.scss +++ b/apps/red-ui/src/app/modules/shared/components/select/select.component.scss @@ -69,3 +69,8 @@ mat-chip { .mat-standard-chip:focus::after { opacity: 0; } + +.disabled { + pointer-events: none; + color: variables.$grey-5; +} diff --git a/apps/red-ui/src/app/services/permissions.service.ts b/apps/red-ui/src/app/services/permissions.service.ts index c982c699e..e40be51ac 100644 --- a/apps/red-ui/src/app/services/permissions.service.ts +++ b/apps/red-ui/src/app/services/permissions.service.ts @@ -122,6 +122,10 @@ export class PermissionsService { return dossier.ownerId === this._userService.currentUser.id; } + canEditDossier(user = this._userService.currentUser) { + return user.isManager; + } + isAdmin(user = this._userService.currentUser): boolean { return user.isAdmin; } diff --git a/apps/red-ui/src/assets/i18n/en.json b/apps/red-ui/src/assets/i18n/en.json index 640b61a18..a24cca958 100644 --- a/apps/red-ui/src/assets/i18n/en.json +++ b/apps/red-ui/src/assets/i18n/en.json @@ -632,6 +632,9 @@ "action": "Delete Dossier", "delete-failed": "Failed to delete dossier: {dossierName}" }, + "dossier-info": { + "action": "Dossier Info" + }, "edit": { "action": "Edit Dossier" }, diff --git a/libs/common-ui b/libs/common-ui index 0610684e8..45a12070b 160000 --- a/libs/common-ui +++ b/libs/common-ui @@ -1 +1 @@ -Subproject commit 0610684e8fb963fab1f7dd51fd850a7b47287fca +Subproject commit 45a12070bfe5c9aa36f24c4e08da157796e881ab