scouter_auth/
permission.rs1use 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}