Disable AuditLogEntry permission if disabled
This commit is contained in:
parent
a680c6e385
commit
a83104479d
@ -9,17 +9,17 @@
|
|||||||
<div class="col" i18n>Delete</div>
|
<div class="col" i18n>Delete</div>
|
||||||
<div class="col" i18n>View</div>
|
<div class="col" i18n>View</div>
|
||||||
</li>
|
</li>
|
||||||
@for (type of PermissionType | keyvalue; track type) {
|
@for (type of allowedTypes; track type) {
|
||||||
<li class="list-group-item d-flex" [formGroupName]="type.key">
|
<li class="list-group-item d-flex" [formGroupName]="type">
|
||||||
<div class="col-3">{{type.key}}:</div>
|
<div class="col-3">{{type}}:</div>
|
||||||
<div class="col form-check form-check-inline form-switch" [ngbPopover]="inheritedWarning" [disablePopover]="!isInherited(type.key)" placement="left" triggers="mouseenter:mouseleave">
|
<div class="col form-check form-check-inline form-switch" [ngbPopover]="inheritedWarning" [disablePopover]="!isInherited(type)" placement="left" triggers="mouseenter:mouseleave">
|
||||||
<input type="checkbox" class="form-check-input" id="{{type.key}}_all" (change)="toggleAll($event, type.key)" [checked]="typesWithAllActions.has(type.key) || isInherited(type.key)" [attr.disabled]="disabled || isInherited(type.key) ? true : null">
|
<input type="checkbox" class="form-check-input" id="{{type}}_all" (change)="toggleAll($event, type)" [checked]="typesWithAllActions.has(type) || isInherited(type)" [attr.disabled]="disabled || isInherited(type) ? true : null">
|
||||||
<label class="form-check-label visually-hidden" for="{{type.key}}_all" i18n>All</label>
|
<label class="form-check-label visually-hidden" for="{{type}}_all" i18n>All</label>
|
||||||
</div>
|
</div>
|
||||||
@for (action of PermissionAction | keyvalue; track action) {
|
@for (action of PermissionAction | keyvalue; track action) {
|
||||||
<div class="col form-check form-check-inline" [ngbPopover]="inheritedWarning" [disablePopover]="!isInherited(type.key, action.key)" placement="left" triggers="mouseenter:mouseleave">
|
<div class="col form-check form-check-inline" [ngbPopover]="inheritedWarning" [disablePopover]="!isInherited(type, action.key)" placement="left" triggers="mouseenter:mouseleave">
|
||||||
<input type="checkbox" class="form-check-input" id="{{type.key}}_{{action.key}}" formControlName="{{action.key}}">
|
<input type="checkbox" class="form-check-input" id="{{type}}_{{action.key}}" formControlName="{{action.key}}">
|
||||||
<label class="form-check-label visually-hidden" for="{{type.key}}_{{action.key}}" i18n>{{action.key}}</label>
|
<label class="form-check-label visually-hidden" for="{{type}}_{{action.key}}" i18n>{{action.key}}</label>
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
</li>
|
</li>
|
||||||
|
@ -12,6 +12,9 @@ import {
|
|||||||
} from 'src/app/services/permissions.service'
|
} from 'src/app/services/permissions.service'
|
||||||
import { By } from '@angular/platform-browser'
|
import { By } from '@angular/platform-browser'
|
||||||
import { NgxBootstrapIconsModule, allIcons } from 'ngx-bootstrap-icons'
|
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 = [
|
const permissions = [
|
||||||
'add_document',
|
'add_document',
|
||||||
@ -28,6 +31,7 @@ describe('PermissionsSelectComponent', () => {
|
|||||||
let component: PermissionsSelectComponent
|
let component: PermissionsSelectComponent
|
||||||
let fixture: ComponentFixture<PermissionsSelectComponent>
|
let fixture: ComponentFixture<PermissionsSelectComponent>
|
||||||
let permissionsChangeResult: Permissions
|
let permissionsChangeResult: Permissions
|
||||||
|
let settingsService: SettingsService
|
||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
TestBed.configureTestingModule({
|
TestBed.configureTestingModule({
|
||||||
@ -38,9 +42,11 @@ describe('PermissionsSelectComponent', () => {
|
|||||||
ReactiveFormsModule,
|
ReactiveFormsModule,
|
||||||
NgbModule,
|
NgbModule,
|
||||||
NgxBootstrapIconsModule.pick(allIcons),
|
NgxBootstrapIconsModule.pick(allIcons),
|
||||||
|
HttpClientTestingModule,
|
||||||
],
|
],
|
||||||
}).compileComponents()
|
}).compileComponents()
|
||||||
|
|
||||||
|
settingsService = TestBed.inject(SettingsService)
|
||||||
fixture = TestBed.createComponent(PermissionsSelectComponent)
|
fixture = TestBed.createComponent(PermissionsSelectComponent)
|
||||||
fixture.debugElement.injector.get(NG_VALUE_ACCESSOR)
|
fixture.debugElement.injector.get(NG_VALUE_ACCESSOR)
|
||||||
component = fixture.componentInstance
|
component = fixture.componentInstance
|
||||||
@ -99,4 +105,11 @@ describe('PermissionsSelectComponent', () => {
|
|||||||
const input2 = fixture.debugElement.query(By.css('input#Tag_Change'))
|
const input2 = fixture.debugElement.query(By.css('input#Tag_Change'))
|
||||||
expect(input2.nativeElement.disabled).toBeTruthy()
|
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')
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
@ -12,6 +12,8 @@ import {
|
|||||||
PermissionType,
|
PermissionType,
|
||||||
} from 'src/app/services/permissions.service'
|
} from 'src/app/services/permissions.service'
|
||||||
import { ComponentWithPermissions } from '../../with-permissions/with-permissions.component'
|
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({
|
@Component({
|
||||||
providers: [
|
providers: [
|
||||||
@ -60,15 +62,23 @@ export class PermissionsSelectComponent
|
|||||||
|
|
||||||
inheritedWarning: string = $localize`Inherited from group`
|
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()
|
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({})
|
const control = new FormGroup({})
|
||||||
for (const action in PermissionAction) {
|
for (const action in PermissionAction) {
|
||||||
control.addControl(action, new FormControl(null))
|
control.addControl(action, new FormControl(null))
|
||||||
}
|
}
|
||||||
this.form.addControl(type, control)
|
this.form.addControl(type, control)
|
||||||
}
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
writeValue(permissions: string[]): void {
|
writeValue(permissions: string[]): void {
|
||||||
@ -92,7 +102,7 @@ export class PermissionsSelectComponent
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
Object.keys(PermissionType).forEach((type) => {
|
this.allowedTypes.forEach((type) => {
|
||||||
if (
|
if (
|
||||||
Object.values(this.form.get(type).value).every((val) => val == true)
|
Object.values(this.form.get(type).value).every((val) => val == true)
|
||||||
) {
|
) {
|
||||||
@ -191,7 +201,7 @@ export class PermissionsSelectComponent
|
|||||||
}
|
}
|
||||||
|
|
||||||
updateDisabledStates() {
|
updateDisabledStates() {
|
||||||
for (const type in PermissionType) {
|
this.allowedTypes.forEach((type) => {
|
||||||
const control = this.form.get(type)
|
const control = this.form.get(type)
|
||||||
let actionControl: AbstractControl
|
let actionControl: AbstractControl
|
||||||
for (const action in PermissionAction) {
|
for (const action in PermissionAction) {
|
||||||
@ -200,6 +210,6 @@ export class PermissionsSelectComponent
|
|||||||
? actionControl.disable()
|
? actionControl.disable()
|
||||||
: actionControl.enable()
|
: actionControl.enable()
|
||||||
}
|
}
|
||||||
}
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user