Support edit permissions for mail rules and accounts

This commit is contained in:
shamoon
2023-09-22 01:01:35 -07:00
parent 56c15f6642
commit a9ab344678
8 changed files with 273 additions and 108 deletions

View File

@@ -5,7 +5,7 @@
</div>
<div class="modal-body">
<p class="mb-3" *ngIf="message" [innerHTML]="message | safeHtml"></p>
<p *ngIf="!object && message" class="mb-3" [innerHTML]="message | safeHtml"></p>
<form [formGroup]="form">
<pngx-permissions-form [users]="users" formControlName="permissions_form"></pngx-permissions-form>

View File

@@ -19,7 +19,7 @@ const set_permissions = {
users: [1],
groups: [],
},
edit: {
change: {
users: [1],
groups: [],
},
@@ -78,6 +78,10 @@ describe('PermissionsDialogComponent', () => {
})
it('should return permissions', () => {
expect(component.permissions).toEqual({
owner: null,
set_permissions: null,
})
component.form.get('permissions_form').setValue(set_permissions)
expect(component.permissions).toEqual(set_permissions)
})
@@ -87,4 +91,16 @@ describe('PermissionsDialogComponent', () => {
component.cancelClicked()
expect(closeSpy).toHaveBeenCalled()
})
it('should support edit permissions on object', () => {
let obj = {
id: 1,
name: 'account1',
owner: set_permissions.owner,
permissions: set_permissions.set_permissions,
}
component.object = obj
expect(component.title).toEqual(`Edit permissions for ${obj.name}`)
expect(component.permissions).toEqual(set_permissions)
})
})

View File

@@ -1,6 +1,7 @@
import { Component, EventEmitter, Input, Output } from '@angular/core'
import { FormControl, FormGroup } from '@angular/forms'
import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'
import { ObjectWithPermissions } from 'src/app/data/object-with-permissions'
import { PaperlessUser } from 'src/app/data/paperless-user'
import { UserService } from 'src/app/services/rest/user.service'
@@ -11,6 +12,7 @@ import { UserService } from 'src/app/services/rest/user.service'
})
export class PermissionsDialogComponent {
users: PaperlessUser[]
private o: ObjectWithPermissions = undefined
constructor(
public activeModal: NgbActiveModal,
@@ -19,11 +21,24 @@ export class PermissionsDialogComponent {
this.userService.listAll().subscribe((r) => (this.users = r.results))
}
@Output()
public confirmClicked = new EventEmitter()
@Input()
title = $localize`Set Permissions`
title = $localize`Set permissions`
set object(o: ObjectWithPermissions) {
this.o = o
this.title = $localize`Edit permissions for ` + o['name']
this.form.patchValue({
permissions_form: {
owner: o.owner,
set_permissions: o.permissions,
},
})
}
get object(): ObjectWithPermissions {
return this.o
}
form = new FormGroup({
permissions_form: new FormControl(),
@@ -39,7 +54,6 @@ export class PermissionsDialogComponent {
}
}
@Input()
message = $localize`Note that permissions set here will override any existing permissions`
cancelClicked() {