|
|
@@ -168,7 +168,7 @@ impl LdapWrapper {
|
|
|
Ok(())
|
|
|
}
|
|
|
|
|
|
- pub async fn get_ssh_keys(&self, username: String) -> Result<HashMap<String, String>, Error> {
|
|
|
+ pub async fn get_ssh_keys(&self, username: String) -> Result<Vec<HashMap<String, String>>, Error> {
|
|
|
let mut ldap = self.ldap_pool.get().await.unwrap();
|
|
|
let search_res = ldap.search(&self.config.basedn, ldap3::Scope::Subtree, format!("(uid={})", username).as_str(), vec!["ldapPublicKey"])
|
|
|
.await.map_err(|e| {Error::LdapServerError {message: format!("Error: {}", e)}})?;
|
|
|
@@ -182,23 +182,23 @@ impl LdapWrapper {
|
|
|
|
|
|
let records = SearchEntry::construct(result_entry.first().unwrap().to_owned());
|
|
|
|
|
|
- let ssh_keys: HashMap<String, String> = match records.attrs.get("sshPublicKey") {
|
|
|
+ let ssh_keys: Vec<HashMap<String, String>> = match records.attrs.get("sshPublicKey") {
|
|
|
Some(keys) => {
|
|
|
- let mut keys_res = HashMap::new();
|
|
|
+ let mut keys_res = Vec::new();
|
|
|
let key_name_re = Regex::new(r"\S+").unwrap();
|
|
|
for key in keys {
|
|
|
let key_split: Vec<Captures> = key_name_re.captures_iter(&key).collect();
|
|
|
let key_name: String;
|
|
|
if key_split.len() < 3 {
|
|
|
- key_name = format!("unamed key: {}", key);
|
|
|
+ key_name = String::from("unamed key");
|
|
|
} else {
|
|
|
key_name = key_split[2][0].to_string();
|
|
|
}
|
|
|
- keys_res.insert(key_name, key.to_string());
|
|
|
+ keys_res.push(HashMap::from([(key_name, key.to_string())]));
|
|
|
}
|
|
|
keys_res
|
|
|
},
|
|
|
- None => HashMap::new(),
|
|
|
+ None => vec![HashMap::new()],
|
|
|
};
|
|
|
|
|
|
Ok(ssh_keys)
|