paperless_api/metadata/
permission.rs1use serde::{Deserialize, Serialize};
2
3use crate::id::{GroupId, UserId};
4
5#[derive(Debug, Clone, Deserialize, Serialize)]
9#[serde(untagged)]
10pub enum ItemPermissions {
11 Full { permissions: FullPermissions },
13
14 Simple { user_can_change: bool },
16}
17
18#[derive(Debug, Clone, Deserialize, Serialize)]
20pub struct FullPermissions {
21 pub view: Permission,
23
24 pub change: Permission,
26}
27
28#[derive(Debug, Clone, Deserialize, Serialize)]
30pub struct Permission {
31 pub users: Vec<UserId>,
32 pub groups: Vec<GroupId>,
33}
34
35impl Default for ItemPermissions {
36 fn default() -> Self {
37 Self::Full {
38 permissions: FullPermissions {
39 view: Permission {
40 users: Vec::new(),
41 groups: Vec::new(),
42 },
43 change: Permission {
44 users: Vec::new(),
45 groups: Vec::new(),
46 },
47 },
48 }
49 }
50}