Mountain/IPC/Security/PermissionManager/
SecurityContext.rs1
2use serde::{Deserialize, Serialize};
8
9#[derive(Debug, Clone, Serialize, Deserialize)]
10pub struct Struct {
11 pub user_id:String,
12
13 pub roles:Vec<String>,
14
15 pub permissions:Vec<String>,
16
17 pub ip_address:String,
18
19 pub timestamp:std::time::SystemTime,
20}
21
22impl Struct {
23 pub fn new(user_id:String, roles:Vec<String>, permissions:Vec<String>, ip_address:String) -> Self {
24 Self { user_id, roles, permissions, ip_address, timestamp:std::time::SystemTime::now() }
25 }
26
27 pub fn has_role(&self, role:&str) -> bool { self.roles.iter().any(|r| r == role) }
28
29 pub fn has_permission(&self, permission:&str) -> bool { self.permissions.iter().any(|p| p == permission) }
30
31 pub fn ipc_default() -> Self {
32 Self {
33 user_id:"ipc-connection".to_string(),
34
35 roles:vec!["user".to_string()],
36
37 permissions:vec![],
38
39 ip_address:"127.0.0.1".to_string(),
40
41 timestamp:std::time::SystemTime::now(),
42 }
43 }
44}