spawn_access_control/
access_control.rs

1use serde::{Serialize, Deserialize};
2
3#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
4pub enum Role {
5    Admin,
6    User,
7    Guest,
8    Custom(String),
9}
10
11#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
12pub struct Permission {
13    pub name: String,
14    pub description: String,
15}
16
17#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
18pub struct Resource {
19    pub id: String,
20    pub name: String,
21    pub resource_type: String,
22}
23
24pub struct AccessControl {
25    roles: Vec<Role>,
26    #[allow(dead_code)]
27    permissions: Vec<Permission>,
28}
29
30impl AccessControl {
31    pub fn new() -> Self {
32        Self {
33            roles: Vec::new(),
34            permissions: Vec::new(),
35        }
36    }
37
38    pub fn add_role(&mut self, role: Role) {
39        self.roles.push(role);
40    }
41
42    pub fn has_access(&self, _resource: &Resource) -> bool {
43        !self.roles.is_empty()
44    }
45}