RED-3953: Only owners can hard delete dossiers
This commit is contained in:
parent
67acba2fde
commit
0f45ea88ff
@ -94,10 +94,6 @@ export class AssignReviewerApproverDialogComponent {
|
||||
return user;
|
||||
}
|
||||
|
||||
isOwner(userId: string): boolean {
|
||||
return userId === this.selectedUser;
|
||||
}
|
||||
|
||||
async save() {
|
||||
this._loadingService.start();
|
||||
try {
|
||||
|
||||
@ -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 {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user