use crate::role::Role;
use crate::resource::Resource;
pub struct AccessControl {
pub user_roles: Vec<Role>, }
impl AccessControl {
pub fn new() -> Self {
AccessControl {
user_roles: Vec::new(),
}
}
pub fn add_role(&mut self, role: Role) {
self.user_roles.push(role);
}
pub fn has_access(&self, resource: &Resource) -> bool {
for role in &self.user_roles {
if resource.is_access_allowed(&role.name) {
return true;
}
}
false
}
pub fn has_role(&self, role_name: &str) -> bool {
self.user_roles.iter().any(|role| role.name == role_name)
}
}