spawn_access_control/
access_control.rsuse serde::{Serialize, Deserialize};
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum Role {
Admin,
User,
Guest,
Custom(String),
}
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub struct Permission {
pub name: String,
pub description: String,
}
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub struct Resource {
pub id: String,
pub name: String,
pub resource_type: String,
}
pub struct AccessControl {
roles: Vec<Role>,
#[allow(dead_code)]
permissions: Vec<Permission>,
}
impl AccessControl {
pub fn new() -> Self {
Self {
roles: Vec::new(),
permissions: Vec::new(),
}
}
pub fn add_role(&mut self, role: Role) {
self.roles.push(role);
}
pub fn has_access(&self, _resource: &Resource) -> bool {
!self.roles.is_empty()
}
}