diff --git a/src-ui/src/app/components/common/permissions-filter-dropdown/permissions-filter-dropdown.component.ts b/src-ui/src/app/components/common/permissions-filter-dropdown/permissions-filter-dropdown.component.ts
index 3f5c3e68d..b0c3e8817 100644
--- a/src-ui/src/app/components/common/permissions-filter-dropdown/permissions-filter-dropdown.component.ts
+++ b/src-ui/src/app/components/common/permissions-filter-dropdown/permissions-filter-dropdown.component.ts
@@ -67,7 +67,7 @@ export class PermissionsFilterDropdownComponent extends ComponentWithPermissions
}
constructor(
- permissionsService: PermissionsService,
+ public permissionsService: PermissionsService,
userService: UserService,
private settingsService: SettingsService
) {
diff --git a/src-ui/src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html b/src-ui/src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html
index 0a7a852ed..de46991d2 100644
--- a/src-ui/src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html
+++ b/src-ui/src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html
@@ -15,8 +15,14 @@
@@ -26,13 +32,15 @@
{{doc.title | documentTitle}}
|
-
- @for (t of doc.tags$ | async; track t) {
-
- }
- |
+ @if (permissionsService.currentUserCan(PermissionAction.View, PermissionType.Tag)) {
+
+ @for (t of doc.tags$ | async; track t) {
+
+ }
+ |
+ }
- @if (doc.correspondent !== null) {
+ @if (permissionsService.currentUserCan(PermissionAction.View, PermissionType.Correspondent) && doc.correspondent !== null) {
{{(doc.correspondent$ | async)?.name}}
}
diff --git a/src-ui/src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.ts b/src-ui/src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.ts
index aa1b160cf..c81ea5484 100644
--- a/src-ui/src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.ts
+++ b/src-ui/src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.ts
@@ -22,6 +22,7 @@ import { DocumentListViewService } from 'src/app/services/document-list-view.ser
import { ComponentWithPermissions } from 'src/app/components/with-permissions/with-permissions.component'
import { NgbPopover } from '@ng-bootstrap/ng-bootstrap'
import { queryParamsFromFilterRules } from 'src/app/utils/query-params'
+import { PermissionsService } from 'src/app/services/permissions.service'
@Component({
selector: 'pngx-saved-view-widget',
@@ -40,7 +41,8 @@ export class SavedViewWidgetComponent
private list: DocumentListViewService,
private consumerStatusService: ConsumerStatusService,
public openDocumentsService: OpenDocumentsService,
- public documentListViewService: DocumentListViewService
+ public documentListViewService: DocumentListViewService,
+ public permissionsService: PermissionsService
) {
super()
}
diff --git a/src-ui/src/app/components/document-detail/document-detail.component.spec.ts b/src-ui/src/app/components/document-detail/document-detail.component.spec.ts
index af0e0e78e..a30588970 100644
--- a/src-ui/src/app/components/document-detail/document-detail.component.spec.ts
+++ b/src-ui/src/app/components/document-detail/document-detail.component.spec.ts
@@ -1,5 +1,8 @@
import { DatePipe } from '@angular/common'
-import { HttpClientTestingModule } from '@angular/common/http/testing'
+import {
+ HttpClientTestingModule,
+ HttpTestingController,
+} from '@angular/common/http/testing'
import {
ComponentFixture,
TestBed,
@@ -71,6 +74,7 @@ import { CustomFieldDataType } from 'src/app/data/custom-field'
import { CustomFieldsService } from 'src/app/services/rest/custom-fields.service'
import { PdfViewerComponent } from '../common/pdf-viewer/pdf-viewer.component'
import { NgxBootstrapIconsModule, allIcons } from 'ngx-bootstrap-icons'
+import { environment } from 'src/environments/environment'
const doc: Document = {
id: 3,
@@ -136,6 +140,7 @@ describe('DocumentDetailComponent', () => {
let documentListViewService: DocumentListViewService
let settingsService: SettingsService
let customFieldsService: CustomFieldsService
+ let httpTestingController: HttpTestingController
let currentUserCan = true
let currentUserHasObjectPermissions = true
@@ -266,6 +271,7 @@ describe('DocumentDetailComponent', () => {
settingsService.currentUser = { id: 1 }
customFieldsService = TestBed.inject(CustomFieldsService)
fixture = TestBed.createComponent(DocumentDetailComponent)
+ httpTestingController = TestBed.inject(HttpTestingController)
component = fixture.componentInstance
})
@@ -350,6 +356,26 @@ describe('DocumentDetailComponent', () => {
expect(component.documentForm.disabled).toBeTruthy()
})
+ it('should not attempt to retrieve objects if user does not have permissions', () => {
+ currentUserCan = false
+ initNormally()
+ expect(component.correspondents).toBeUndefined()
+ expect(component.documentTypes).toBeUndefined()
+ expect(component.storagePaths).toBeUndefined()
+ expect(component.users).toBeUndefined()
+ httpTestingController.expectNone(`${environment.apiBaseUrl}documents/tags/`)
+ httpTestingController.expectNone(
+ `${environment.apiBaseUrl}documents/correspondents/`
+ )
+ httpTestingController.expectNone(
+ `${environment.apiBaseUrl}documents/document_types/`
+ )
+ httpTestingController.expectNone(
+ `${environment.apiBaseUrl}documents/storage_paths/`
+ )
+ currentUserCan = true
+ })
+
it('should support creating document type', () => {
initNormally()
let openModal: NgbModalRef
diff --git a/src-ui/src/app/components/document-detail/document-detail.component.ts b/src-ui/src/app/components/document-detail/document-detail.component.ts
index 0ce9fa007..0ca458a21 100644
--- a/src-ui/src/app/components/document-detail/document-detail.component.ts
+++ b/src-ui/src/app/components/document-detail/document-detail.component.ts
@@ -250,25 +250,50 @@ export class DocumentDetailComponent
Object.assign(this.document, docValues)
})
- this.correspondentService
- .listAll()
- .pipe(first(), takeUntil(this.unsubscribeNotifier))
- .subscribe((result) => (this.correspondents = result.results))
-
- this.documentTypeService
- .listAll()
- .pipe(first(), takeUntil(this.unsubscribeNotifier))
- .subscribe((result) => (this.documentTypes = result.results))
-
- this.storagePathService
- .listAll()
- .pipe(first(), takeUntil(this.unsubscribeNotifier))
- .subscribe((result) => (this.storagePaths = result.results))
-
- this.userService
- .listAll()
- .pipe(first(), takeUntil(this.unsubscribeNotifier))
- .subscribe((result) => (this.users = result.results))
+ if (
+ this.permissionsService.currentUserCan(
+ PermissionAction.View,
+ PermissionType.Correspondent
+ )
+ ) {
+ this.correspondentService
+ .listAll()
+ .pipe(first(), takeUntil(this.unsubscribeNotifier))
+ .subscribe((result) => (this.correspondents = result.results))
+ }
+ if (
+ this.permissionsService.currentUserCan(
+ PermissionAction.View,
+ PermissionType.DocumentType
+ )
+ ) {
+ this.documentTypeService
+ .listAll()
+ .pipe(first(), takeUntil(this.unsubscribeNotifier))
+ .subscribe((result) => (this.documentTypes = result.results))
+ }
+ if (
+ this.permissionsService.currentUserCan(
+ PermissionAction.View,
+ PermissionType.StoragePath
+ )
+ ) {
+ this.storagePathService
+ .listAll()
+ .pipe(first(), takeUntil(this.unsubscribeNotifier))
+ .subscribe((result) => (this.storagePaths = result.results))
+ }
+ if (
+ this.permissionsService.currentUserCan(
+ PermissionAction.View,
+ PermissionType.User
+ )
+ ) {
+ this.userService
+ .listAll()
+ .pipe(first(), takeUntil(this.unsubscribeNotifier))
+ .subscribe((result) => (this.users = result.results))
+ }
this.getCustomFields()
diff --git a/src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.html b/src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.html
index b101c2742..0c261df67 100644
--- a/src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.html
+++ b/src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.html
@@ -17,51 +17,59 @@
-
-
-
-
-
-
-
-
+ @if (permissionService.currentUserCan(PermissionAction.View, PermissionType.Tag)) {
+
+
+ }
+ @if (permissionService.currentUserCan(PermissionAction.View, PermissionType.Correspondent)) {
+
+
+ }
+ @if (permissionService.currentUserCan(PermissionAction.View, PermissionType.DocumentType)) {
+
+
+ }
+ @if (permissionService.currentUserCan(PermissionAction.View, PermissionType.StoragePath)) {
+
+
+ }
|