diff --git a/src-ui/src/app/components/document-list/document-list.component.html b/src-ui/src/app/components/document-list/document-list.component.html
index 1cfa4fff9..3cce1496b 100644
--- a/src-ui/src/app/components/document-list/document-list.component.html
+++ b/src-ui/src/app/components/document-list/document-list.component.html
@@ -141,13 +141,15 @@
[currentSortReverse]="list.sortReverse"
(sort)="onSort($event)"
i18n>ASN
- Correspondent |
+ @if (permissionService.currentUserCan(PermissionAction.View, PermissionType.Correspondent)) {
+ Correspondent |
+ }
Notes |
}
- Document type |
- Storage path |
+ @if (permissionService.currentUserCan(PermissionAction.View, PermissionType.DocumentType)) {
+ Document type |
+ }
+ @if (permissionService.currentUserCan(PermissionAction.View, PermissionType.StoragePath)) {
+ Storage path |
+ }
{{d.archive_serial_number}}
- |
- @if (d.correspondent) {
- {{(d.correspondent$ | async)?.name}}
- }
- |
+ @if (permissionService.currentUserCan(PermissionAction.View, PermissionType.Correspondent)) {
+
+ @if (d.correspondent) {
+ {{(d.correspondent$ | async)?.name}}
+ }
+ |
+ }
{{d.title | documentTitle}}
@for (t of d.tags$ | async; track t) {
@@ -238,16 +246,20 @@
}
|
}
-
- @if (d.document_type) {
- {{(d.document_type$ | async)?.name}}
- }
- |
-
- @if (d.storage_path) {
- {{(d.storage_path$ | async)?.name}}
- }
- |
+ @if (permissionService.currentUserCan(PermissionAction.View, PermissionType.DocumentType)) {
+
+ @if (d.document_type) {
+ {{(d.document_type$ | async)?.name}}
+ }
+ |
+ }
+ @if (permissionService.currentUserCan(PermissionAction.View, PermissionType.StoragePath)) {
+
+ @if (d.storage_path) {
+ {{(d.storage_path$ | async)?.name}}
+ }
+ |
+ }
{{d.created_date | customDate}}
|
diff --git a/src-ui/src/app/components/document-list/document-list.component.spec.ts b/src-ui/src/app/components/document-list/document-list.component.spec.ts
index bf21616e8..77dc03f84 100644
--- a/src-ui/src/app/components/document-list/document-list.component.spec.ts
+++ b/src-ui/src/app/components/document-list/document-list.component.spec.ts
@@ -64,6 +64,8 @@ import { SettingsService } from 'src/app/services/settings.service'
import { SETTINGS_KEYS } from 'src/app/data/ui-settings'
import { IsNumberPipe } from 'src/app/pipes/is-number.pipe'
import { NgxBootstrapIconsModule, allIcons } from 'ngx-bootstrap-icons'
+import { PermissionsService } from 'src/app/services/permissions.service'
+import { NgSelectModule } from '@ng-select/ng-select'
const docs: Document[] = [
{
@@ -101,6 +103,7 @@ describe('DocumentListComponent', () => {
let toastService: ToastService
let modalService: NgbModal
let settingsService: SettingsService
+ let permissionService: PermissionsService
beforeEach(async () => {
TestBed.configureTestingModule({
@@ -148,6 +151,7 @@ describe('DocumentListComponent', () => {
NgbPopoverModule,
NgbTooltipModule,
NgxBootstrapIconsModule.pick(allIcons),
+ NgSelectModule,
],
}).compileComponents()
@@ -160,6 +164,7 @@ describe('DocumentListComponent', () => {
toastService = TestBed.inject(ToastService)
modalService = TestBed.inject(NgbModal)
settingsService = TestBed.inject(SettingsService)
+ permissionService = TestBed.inject(PermissionsService)
fixture = TestBed.createComponent(DocumentListComponent)
component = fixture.componentInstance
})
@@ -548,18 +553,13 @@ describe('DocumentListComponent', () => {
expect(routerSpy).toHaveBeenCalledWith(['documents', 99])
})
- it('should support checking if notes enabled to hide column', () => {
+ it('should hide columns if no perms or notes disabled', () => {
+ jest.spyOn(permissionService, 'currentUserCan').mockReturnValue(true)
jest.spyOn(documentListService, 'documents', 'get').mockReturnValue(docs)
- fixture.detectChanges()
expect(documentListService.sortField).toEqual('created')
- const detailsDisplayModeButton = fixture.debugElement.query(
- By.css('input[type="radio"]')
- )
- detailsDisplayModeButton.nativeElement.checked = true
- detailsDisplayModeButton.triggerEventHandler('change')
+ component.displayMode = 'details'
fixture.detectChanges()
- expect(component.displayMode).toEqual('details')
expect(
fixture.debugElement.queryAll(By.directive(SortableDirective))
@@ -572,6 +572,13 @@ describe('DocumentListComponent', () => {
expect(
fixture.debugElement.queryAll(By.directive(SortableDirective))
).toHaveLength(8)
+
+ // insufficient perms
+ jest.spyOn(permissionService, 'currentUserCan').mockReturnValue(false)
+ fixture.detectChanges()
+ expect(
+ fixture.debugElement.queryAll(By.directive(SortableDirective))
+ ).toHaveLength(5)
})
it('should support toggle on document objects', () => {
diff --git a/src-ui/src/app/components/document-list/document-list.component.ts b/src-ui/src/app/components/document-list/document-list.component.ts
index 537e24601..7d27f4e3e 100644
--- a/src-ui/src/app/components/document-list/document-list.component.ts
+++ b/src-ui/src/app/components/document-list/document-list.component.ts
@@ -29,6 +29,7 @@ import {
DOCUMENT_SORT_FIELDS,
DOCUMENT_SORT_FIELDS_FULLTEXT,
} from 'src/app/services/rest/document.service'
+import { PermissionsService } from 'src/app/services/permissions.service'
import { SavedViewService } from 'src/app/services/rest/saved-view.service'
import { SettingsService } from 'src/app/services/settings.service'
import { ToastService } from 'src/app/services/toast.service'
@@ -54,7 +55,8 @@ export class DocumentListComponent
private modalService: NgbModal,
private consumerStatusService: ConsumerStatusService,
public openDocumentsService: OpenDocumentsService,
- private settingsService: SettingsService
+ private settingsService: SettingsService,
+ public permissionService: PermissionsService
) {
super()
}