diff --git a/apps/red-ui/src/app/models/file/annotation.permissions.ts b/apps/red-ui/src/app/models/file/annotation.permissions.ts index c6c6963f1..1d4b9cda5 100644 --- a/apps/red-ui/src/app/models/file/annotation.permissions.ts +++ b/apps/red-ui/src/app/models/file/annotation.permissions.ts @@ -31,6 +31,7 @@ export class AnnotationPermissions { const summedPermissions: AnnotationPermissions = new AnnotationPermissions(); const canAddRedaction = permissionsService.has(ROLES.redactions.write); const canRequestRedaction = permissionsService.has(ROLES.redactions.request); + const canProcessManualRedaction = permissionsService.has(ROLES.redactions.processManualRequest); const canAddOrRequestRedaction = canAddRedaction || canRequestRedaction; for (const annotation of annotations) { @@ -38,7 +39,13 @@ export class AnnotationPermissions { permissions.canUndo = !isApprover && (annotation.isSuggestion || annotation.pending); permissions.canAcceptSuggestion = isApprover && (annotation.isSuggestion || annotation.isDeclinedSuggestion); + if (annotation.isSuggestionAdd || annotation.isSuggestionRemoveDictionary) { + permissions.canAcceptSuggestion = permissions.canAcceptSuggestion && canProcessManualRedaction; + } permissions.canRejectSuggestion = isApprover && annotation.isSuggestion; + if (annotation.isSuggestionAdd || annotation.isSuggestionRemoveDictionary) { + permissions.canRejectSuggestion = permissions.canRejectSuggestion && canProcessManualRedaction; + } permissions.canForceHint = canAddOrRequestRedaction && annotation.isIgnoredHint && !annotation.pending; permissions.canForceRedaction = diff --git a/apps/red-ui/src/app/models/file/annotation.wrapper.ts b/apps/red-ui/src/app/models/file/annotation.wrapper.ts index db432f633..3e7268583 100644 --- a/apps/red-ui/src/app/models/file/annotation.wrapper.ts +++ b/apps/red-ui/src/app/models/file/annotation.wrapper.ts @@ -190,6 +190,10 @@ export class AnnotationWrapper implements IListable, Record { return !!SuggestionAddSuperTypes[this.superType]; } + get isSuggestionRemoveDictionary() { + return this.superType === SuperTypes.SuggestionRemoveDictionary; + } + get isSuggestionLegalBasisChange() { return this.superType === SuperTypes.SuggestionChangeLegalBasis; } diff --git a/apps/red-ui/src/app/users/roles.ts b/apps/red-ui/src/app/users/roles.ts index 98290409c..97a0f7a24 100644 --- a/apps/red-ui/src/app/users/roles.ts +++ b/apps/red-ui/src/app/users/roles.ts @@ -2,7 +2,6 @@ export const ROLES = { RED_CREATE_TENANT: 'red-create-tenant', RED_DEPLOYMENT_INFO: 'red-deployment-info', RED_GET_TENANTS: 'red-get-tenants', - RED_PROCESS_MANUAL_REDACTION_REQUEST: 'red-process-manual-redaction-request', RED_READ_VERSIONS: 'red-read-versions', RED_REINDEX: 'red-reindex', managePreferences: 'red-manage-user-preferences', @@ -27,6 +26,7 @@ export const ROLES = { deleteManual: 'red-delete-manual-redaction', deleteImported: 'red-delete-imported-redactions', request: 'red-request-redaction', + processManualRequest: 'red-process-manual-redaction-request', }, comments: { write: 'red-add-comment',