RED-3953: Only owners can hard delete dossiers

This commit is contained in:
Adina Țeudan 2022-05-12 00:17:52 +03:00
parent 67acba2fde
commit 0f45ea88ff
2 changed files with 38 additions and 49 deletions

View File

@ -94,10 +94,6 @@ export class AssignReviewerApproverDialogComponent {
return user;
}
isOwner(userId: string): boolean {
return userId === this.selectedUser;
}
async save() {
this._loadingService.start();
try {

View File

@ -12,19 +12,21 @@ export class PermissionsService {
private readonly _featuresService: FeaturesService,
) {}
canEditEntities(user = this._userService.currentUser): boolean {
return user.isAdmin;
get #userId(): string {
return this._userService.currentUser.id;
}
canDeleteEntities(entity: Dictionary | Dictionary[], user = this._userService.currentUser): boolean {
canEditEntities(): boolean {
return this.isAdmin();
}
canDeleteEntities(entity: Dictionary | Dictionary[]): boolean {
const entities = entity instanceof Dictionary ? [entity] : entity;
return (
entities.length && this.canEditEntities(user) && entities.reduce((acc, _entity) => this._canDeleteEntity(_entity) && acc, true)
);
return entities.length && this.canEditEntities() && entities.reduce((acc, _entity) => this._canDeleteEntity(_entity) && acc, true);
}
canPerformDossierStatesActions(user = this._userService.currentUser): boolean {
return user.isAdmin;
canPerformDossierStatesActions(): boolean {
return this.isAdmin();
}
isReviewerOrApprover(file: File, dossier: Dossier): boolean {
@ -74,7 +76,7 @@ export class PermissionsService {
}
isFileAssignee(file: File): boolean {
return file.assignee === this._userService.currentUser.id;
return file.assignee === this.#userId;
}
canDeleteFile(file: File | File[], dossier: Dossier): boolean {
@ -130,16 +132,16 @@ export class PermissionsService {
return files.reduce((acc, _file) => this._canSetUnderApproval(_file, dossier) && acc, true);
}
isOwner(dossier: Dossier, user = this._userService.currentUser): boolean {
return dossier.ownerId === user.id;
isOwner(dossier: IDossier): boolean {
return dossier.ownerId === this.#userId;
}
isApprover(dossier: Dossier, user = this._userService.currentUser): boolean {
return dossier.approverIds.indexOf(user.id) >= 0;
isApprover(dossier: Dossier): boolean {
return dossier.approverIds.indexOf(this.#userId) >= 0;
}
isDossierMember(dossier: Dossier, user = this._userService.currentUser): boolean {
return dossier.memberIds.includes(user.id);
isDossierMember(dossier: Dossier): boolean {
return dossier.memberIds.includes(this.#userId);
}
canPerformAnnotationActions(file: File, dossier: Dossier): boolean {
@ -172,53 +174,51 @@ export class PermissionsService {
}
canDeleteDossier(dossier: IDossier): boolean {
return dossier.ownerId === this._userService.currentUser.id;
return this.isOwner(dossier);
}
canHardDeleteDossier(dossier: IDossier): boolean {
return this._userService.currentUser.isManager;
return this.isOwner(dossier);
}
canRestoreDossier(dossier: IDossier): boolean {
return this._userService.currentUser.isManager;
return this.isManager();
}
canArchiveDossier(dossier: Dossier): boolean {
return (
this._featuresService.isEnabled(DOSSIERS_ARCHIVE) && dossier.isActive && dossier.ownerId === this._userService.currentUser.id
);
return this._featuresService.isEnabled(DOSSIERS_ARCHIVE) && dossier.isActive && this.isOwner(dossier);
}
canEditDossier(dossier: Dossier, user = this._userService.currentUser): boolean {
return user.isManager && !!dossier?.ownerId;
canEditDossier(dossier: Dossier): boolean {
return this.isManager() && !!dossier?.ownerId;
}
canEditDossierDictionary(dossier: Dossier, user = this._userService.currentUser): boolean {
return dossier.isActive && this.isDossierMember(dossier, user);
canEditDossierDictionary(dossier: Dossier): boolean {
return dossier.isActive && this.isDossierMember(dossier);
}
canEditDossierDictionaryDisplayName(dossier: Dossier, user = this._userService.currentUser): boolean {
return dossier.isActive && this.isOwner(dossier, user);
canEditDossierDictionaryDisplayName(dossier: Dossier): boolean {
return dossier.isActive && this.isOwner(dossier);
}
canEditDossierDictionaryAddAction(dossier: Dossier, user = this._userService.currentUser): boolean {
return dossier.isActive && this.isOwner(dossier, user);
canEditDossierDictionaryAddAction(dossier: Dossier): boolean {
return dossier.isActive && this.isOwner(dossier);
}
canEditDossierAttributes(dossier: Dossier, user = this._userService.currentUser): boolean {
return dossier.isActive && this.isOwner(dossier, user);
canEditDossierAttributes(dossier: Dossier): boolean {
return dossier.isActive && this.isOwner(dossier);
}
canEditTeamMembers(): boolean {
return this.isManager();
}
isAdmin(user = this._userService.currentUser): boolean {
return user.isAdmin;
isAdmin(): boolean {
return this._userService.currentUser.isAdmin;
}
isManager(user = this._userService.currentUser): boolean {
return user.isManager;
isManager(): boolean {
return this._userService.currentUser.isManager;
}
canAddComment(file: File, dossier: Dossier): boolean {
@ -230,7 +230,7 @@ export class PermissionsService {
}
canDeleteComment(comment: IComment, file: File, dossier: Dossier) {
return (comment.user === this._userService.currentUser.id || this.isApprover(dossier)) && !file.isApproved;
return (comment.user === this.#userId || this.isApprover(dossier)) && !file.isApproved;
}
canImportRedactions(file: File, dossier: Dossier) {
@ -265,18 +265,11 @@ export class PermissionsService {
}
private _canEnableAutoAnalysis(file: File, dossier: Dossier): boolean {
return (
dossier.isActive && file.excludedFromAutomaticAnalysis && file.assignee === this._userService.currentUser.id && !file.isApproved
);
return dossier.isActive && file.excludedFromAutomaticAnalysis && this.isFileAssignee(file) && !file.isApproved;
}
private _canDisableAutoAnalysis(file: File, dossier: Dossier): boolean {
return (
dossier.isActive &&
!file.excludedFromAutomaticAnalysis &&
file.assignee === this._userService.currentUser.id &&
!file.isApproved
);
return dossier.isActive && !file.excludedFromAutomaticAnalysis && this.isFileAssignee(file) && !file.isApproved;
}
private _canAssignToSelf(file: File, dossier: Dossier): boolean {