"original_file_name": "2022-03-22 no latin title.pdf",
"archived_file_name": "2022-03-22 no latin title.pdf",
"owner": null,
- "permissions": [],
+ "permissions": {
+ "view": {
+ "users": [],
+ "groups": []
+ },
+ "change": {
+ "users": [],
+ "groups": []
+ }
+ },
"notes": [
{
"id": 9,
"original_file_name": "2022-03-23 lorem ipsum dolor sit amet.pdf",
"archived_file_name": "2022-03-23 llorem ipsum dolor sit amet.pdf",
"owner": null,
- "permissions": [],
+ "permissions": {
+ "view": {
+ "users": [],
+ "groups": []
+ },
+ "change": {
+ "users": [],
+ "groups": []
+ }
+ },
"notes": []
},
{
"original_file_name": "2022-03-24 dolor.pdf",
"archived_file_name": "2022-03-24 dolor.pdf",
"owner": null,
- "permissions": [],
+ "permissions": {
+ "view": {
+ "users": [],
+ "groups": []
+ },
+ "change": {
+ "users": [],
+ "groups": []
+ }
+ },
"notes": []
},
{
"original_file_name": "2022-06-01 sit amet.pdf",
"archived_file_name": "2022-06-01 sit amet.pdf",
"owner": null,
- "permissions": [],
+ "permissions": {
+ "view": {
+ "users": [],
+ "groups": []
+ },
+ "change": {
+ "users": [],
+ "groups": []
+ }
+ },
"notes": []
}
]
"user": {
"id": 1,
"username": "admin",
- "is_superuser": true
+ "is_superuser": true,
+ "groups": []
},
"settings": {
"language": "",
"user": {
"id": 1,
"username": "admin",
- "is_superuser": false
+ "is_superuser": false,
+ "groups": []
},
"settings": {
"language": "",
}
get isPrivate(): boolean {
- return this.items.find((i) => i.id === this.value)?.private
+ return this.items?.find((i) => i.id === this.value)?.private
}
getSuggestions() {
is_staff?: boolean
is_active?: boolean
is_superuser?: boolean
- groups?: PaperlessGroup[]
+ groups?: number[] // PaperlessGroup[]
user_permissions?: string[]
inherited_permissions?: string[]
}
action: string,
object: ObjectWithPermissions
): boolean {
+ let actionObject = null
+ if (action === PermissionAction.View) actionObject = object.permissions.view
+ else if (action === PermissionAction.Change)
+ actionObject = object.permissions.change
+ if (!actionObject) return false
return (
this.currentUserOwnsObject(object) ||
- (object.permissions[action]['users'] as Array<number>)?.includes(
- this.currentUser.id
- )
+ actionObject.users.includes(this.currentUser.id) ||
+ actionObject.groups.filter((g) => this.currentUser.groups.includes(g))
+ .length > 0
)
}
users_to_remove = get_users_with_perms(
object,
only_with_perms_in=[permission],
+ with_group_users=False,
)
if len(users_to_add) > 0 and len(users_to_remove) > 0:
users_to_remove = users_to_remove.difference(users_to_add)
"users": get_users_with_perms(
obj,
only_with_perms_in=[view_codename],
+ with_group_users=False,
).values_list("id", flat=True),
"groups": get_groups_with_only_permission(
obj,
"users": get_users_with_perms(
obj,
only_with_perms_in=[change_codename],
+ with_group_users=False,
).values_list("id", flat=True),
"groups": get_groups_with_only_permission(
obj,
"id": user.id,
"username": user.username,
"is_superuser": user.is_superuser,
+ "groups": user.groups.values_list("id", flat=True),
},
"settings": ui_settings,
"permissions": roles,