diff options
author | mdecimus <mauro@stalw.art> | 2023-07-09 11:06:37 +0200 |
---|---|---|
committer | mdecimus <mauro@stalw.art> | 2023-07-09 11:06:37 +0200 |
commit | 843e61139af590a3d9aacc937dae3bb2641f4f3b (patch) | |
tree | 76b6609e5801b4e0a937938c6b1ff7dbd2a30004 /crates/directory/src/memory | |
parent | 705762c3125d976a9d6b589df4c9430fead10435 (diff) |
Installation binary first part.
Diffstat (limited to 'crates/directory/src/memory')
-rw-r--r-- | crates/directory/src/memory/config.rs | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/crates/directory/src/memory/config.rs b/crates/directory/src/memory/config.rs index 8d6c16c2..4909b610 100644 --- a/crates/directory/src/memory/config.rs +++ b/crates/directory/src/memory/config.rs @@ -12,12 +12,26 @@ impl MemoryDirectory { prefix: impl AsKey, ) -> utils::config::Result<Arc<dyn Directory>> { let prefix = prefix.as_key(); - let mut directory = MemoryDirectory::default(); + let mut directory = MemoryDirectory { + opt: DirectoryOptions::from_config(config, prefix.clone())?, + ..Default::default() + }; for lookup_id in config.sub_keys((prefix.as_str(), "users")) { let name = config .value_require((prefix.as_str(), "users", lookup_id, "name"))? .to_string(); + let mut typ = Type::Individual; + let mut member_of = Vec::new(); + + for (_, group) in config.values((prefix.as_str(), "users", lookup_id, "member-of")) { + if !group.eq_ignore_ascii_case(&directory.opt.superuser_group) { + member_of.push(group.to_string()); + } else { + typ = Type::Superuser; + } + } + directory.principals.insert( name.clone(), Principal { @@ -26,17 +40,14 @@ impl MemoryDirectory { .values((prefix.as_str(), "users", lookup_id, "secret")) .map(|(_, v)| v.to_string()) .collect(), - typ: Type::Individual, + typ, description: config .value((prefix.as_str(), "users", lookup_id, "description")) .map(|v| v.to_string()), quota: config .property((prefix.as_str(), "users", lookup_id, "quota"))? .unwrap_or(0), - member_of: config - .values((prefix.as_str(), "users", lookup_id, "member-of")) - .map(|(_, v)| v.to_string()) - .collect(), + member_of, }, ); let mut emails = Vec::new(); @@ -105,7 +116,6 @@ impl MemoryDirectory { directory .domains .extend(config.parse_lookup_list((&prefix, "lookup.domains"))?); - directory.opt = DirectoryOptions::from_config(config, prefix)?; Ok(Arc::new(directory)) } |