|
|
@ -52,23 +52,36 @@ pub struct Config { |
|
|
|
}
|
|
|
|
|
|
|
|
impl Config {
|
|
|
|
pub fn get_users_for_root_and_zone(&self, search_root: &str, search_zone: &str) -> Option<Vec<&UserConfig>> {
|
|
|
|
pub fn get_user(&self, username: &str) -> Option<&UserConfig> {
|
|
|
|
for user in &self.users {
|
|
|
|
if user.username == username {
|
|
|
|
return Some(user);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
None
|
|
|
|
}
|
|
|
|
|
|
|
|
pub fn get_users_for_root_and_zone(&self, root: &str, zone: &str) -> Option<Vec<&UserConfig>> {
|
|
|
|
let mut users: Vec<&UserConfig> = Vec::new();
|
|
|
|
|
|
|
|
for user in &self.users {
|
|
|
|
for root in &user.roots {
|
|
|
|
let zone_match = &search_zone.to_string();
|
|
|
|
if root.root == search_root && root.zones.contains(zone_match) {
|
|
|
|
users.push(user);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
if user.has_root_and_zone(root, zone) {
|
|
|
|
users.push(user);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if users.len() > 0 {
|
|
|
|
Some(users)
|
|
|
|
} else {
|
|
|
|
None
|
|
|
|
if users.len() > 0 { Some(users) } else { None }
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
impl UserConfig {
|
|
|
|
pub fn has_root_and_zone(&self, search_root: &str, search_zone: &str) -> bool {
|
|
|
|
for root in &self.roots {
|
|
|
|
let zone_match = &search_zone.to_string();
|
|
|
|
if root.root == search_root && root.zones.contains(zone_match) {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
false
|
|
|
|
}
|
|
|
|
}
|