spawn_access_control/
access_control.rs1use 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}