scouter_auth/
permission.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Serialize, Deserialize, Clone)]
4pub struct UserPermissions {
5    pub username: String,
6    pub permissions: Vec<String>,
7    pub group_permissions: Vec<String>,
8}
9
10impl UserPermissions {
11    pub fn has_permission(&self, permission: &str) -> bool {
12        self.permissions.contains(&permission.to_string())
13            || self.group_permissions.contains(&"admin".to_string())
14    }
15
16    pub fn has_read_permission(&self, space_id: &str) -> bool {
17        self.has_permission(&format!("read:{space_id}"))
18            || self.permissions.contains(&"read:all".to_string())
19    }
20
21    pub fn has_write_permission(&self, space_id: &str) -> bool {
22        self.has_permission(&format!("write:{space_id}"))
23            || self.permissions.contains(&"write:all".to_string())
24    }
25
26    pub fn has_delete_permission(&self, space_id: &str) -> bool {
27        self.has_permission(&format!("delete:{space_id}"))
28            || self.permissions.contains(&"delete:all".to_string())
29    }
30}