diff --git a/src-ui/src/app/components/common/permissions-select/permissions-select.component.html b/src-ui/src/app/components/common/permissions-select/permissions-select.component.html index a2aa4a5c0..049d0e776 100644 --- a/src-ui/src/app/components/common/permissions-select/permissions-select.component.html +++ b/src-ui/src/app/components/common/permissions-select/permissions-select.component.html @@ -9,17 +9,17 @@
Delete
View
- @for (type of PermissionType | keyvalue; track type) { -
  • -
    {{type.key}}:
    -
    - - + @for (type of allowedTypes; track type) { +
  • +
    {{type}}:
    +
    + +
    @for (action of PermissionAction | keyvalue; track action) { -
    - - +
    + +
    }
  • diff --git a/src-ui/src/app/components/common/permissions-select/permissions-select.component.spec.ts b/src-ui/src/app/components/common/permissions-select/permissions-select.component.spec.ts index a01630e00..2eafc43dd 100644 --- a/src-ui/src/app/components/common/permissions-select/permissions-select.component.spec.ts +++ b/src-ui/src/app/components/common/permissions-select/permissions-select.component.spec.ts @@ -12,6 +12,9 @@ import { } from 'src/app/services/permissions.service' import { By } from '@angular/platform-browser' import { NgxBootstrapIconsModule, allIcons } from 'ngx-bootstrap-icons' +import { SettingsService } from 'src/app/services/settings.service' +import { SETTINGS_KEYS } from 'src/app/data/ui-settings' +import { HttpClientTestingModule } from '@angular/common/http/testing' const permissions = [ 'add_document', @@ -28,6 +31,7 @@ describe('PermissionsSelectComponent', () => { let component: PermissionsSelectComponent let fixture: ComponentFixture let permissionsChangeResult: Permissions + let settingsService: SettingsService beforeEach(async () => { TestBed.configureTestingModule({ @@ -38,9 +42,11 @@ describe('PermissionsSelectComponent', () => { ReactiveFormsModule, NgbModule, NgxBootstrapIconsModule.pick(allIcons), + HttpClientTestingModule, ], }).compileComponents() + settingsService = TestBed.inject(SettingsService) fixture = TestBed.createComponent(PermissionsSelectComponent) fixture.debugElement.injector.get(NG_VALUE_ACCESSOR) component = fixture.componentInstance @@ -99,4 +105,11 @@ describe('PermissionsSelectComponent', () => { const input2 = fixture.debugElement.query(By.css('input#Tag_Change')) expect(input2.nativeElement.disabled).toBeTruthy() }) + + it('should exclude auditlogentry permissions if disabled', () => { + settingsService.set(SETTINGS_KEYS.AUDITLOG_ENABLED, false) + fixture = TestBed.createComponent(PermissionsSelectComponent) + component = fixture.componentInstance + expect(component.allowedTypes).not.toContain('AuditLogEntry') + }) }) diff --git a/src-ui/src/app/components/common/permissions-select/permissions-select.component.ts b/src-ui/src/app/components/common/permissions-select/permissions-select.component.ts index 49d879677..b167283e5 100644 --- a/src-ui/src/app/components/common/permissions-select/permissions-select.component.ts +++ b/src-ui/src/app/components/common/permissions-select/permissions-select.component.ts @@ -12,6 +12,8 @@ import { PermissionType, } from 'src/app/services/permissions.service' import { ComponentWithPermissions } from '../../with-permissions/with-permissions.component' +import { SettingsService } from 'src/app/services/settings.service' +import { SETTINGS_KEYS } from 'src/app/data/ui-settings' @Component({ providers: [ @@ -60,15 +62,23 @@ export class PermissionsSelectComponent inheritedWarning: string = $localize`Inherited from group` - constructor(private readonly permissionsService: PermissionsService) { + public allowedTypes = Object.keys(PermissionType) + + constructor( + private readonly permissionsService: PermissionsService, + private readonly settingsService: SettingsService + ) { super() - for (const type in PermissionType) { + if (!this.settingsService.get(SETTINGS_KEYS.AUDITLOG_ENABLED)) { + this.allowedTypes.splice(this.allowedTypes.indexOf('AuditLogEntry'), 1) + } + this.allowedTypes.forEach((type) => { const control = new FormGroup({}) for (const action in PermissionAction) { control.addControl(action, new FormControl(null)) } this.form.addControl(type, control) - } + }) } writeValue(permissions: string[]): void { @@ -92,7 +102,7 @@ export class PermissionsSelectComponent } } }) - Object.keys(PermissionType).forEach((type) => { + this.allowedTypes.forEach((type) => { if ( Object.values(this.form.get(type).value).every((val) => val == true) ) { @@ -191,7 +201,7 @@ export class PermissionsSelectComponent } updateDisabledStates() { - for (const type in PermissionType) { + this.allowedTypes.forEach((type) => { const control = this.form.get(type) let actionControl: AbstractControl for (const action in PermissionAction) { @@ -200,6 +210,6 @@ export class PermissionsSelectComponent ? actionControl.disable() : actionControl.enable() } - } + }) } }