disable document form components when no object permissions

This commit is contained in:
Michael Shamoon
2022-12-07 15:46:52 -08:00
parent 79cf1de615
commit 932051d80d
18 changed files with 116 additions and 21 deletions

View File

@@ -1,4 +1,6 @@
import { Injectable } from '@angular/core'
import { ObjectWithPermissions } from '../data/object-with-permissions'
import { PaperlessUser } from '../data/paperless-user'
export enum PermissionAction {
Add = 'add',
@@ -33,15 +35,30 @@ export interface PaperlessPermission {
})
export class PermissionsService {
private permissions: string[]
private currentUser: PaperlessUser
public initialize(permissions: string[]) {
public initialize(permissions: string[], currentUser: PaperlessUser) {
this.permissions = permissions
this.currentUser = currentUser
}
public currentUserCan(permission: PaperlessPermission): boolean {
return this.permissions.includes(this.getPermissionCode(permission))
}
public currentUserIsOwner(owner: PaperlessUser): boolean {
return owner?.id === this.currentUser.id
}
public currentUserHasObjectPermissions(
action: string,
object: ObjectWithPermissions
): boolean {
return (object.permissions[action] as Array<number>)?.includes(
this.currentUser.id
)
}
public getPermissionCode(permission: PaperlessPermission): string {
return permission.type.replace('%s', permission.action)
}

View File

@@ -79,7 +79,10 @@ export class SettingsService {
id: uisettings['user_id'],
username: uisettings['username'],
}
this.permissionsService.initialize(uisettings.permissions)
this.permissionsService.initialize(
uisettings.permissions,
this.currentUser
)
})
)
}