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