mirror of
https://github.com/nitnelave/lldap.git
synced 2023-04-12 14:25:13 +00:00
ldap: Stop returning empty attributes
This commit is contained in:
parent
b130965264
commit
60c594438c
@ -156,7 +156,7 @@ fn get_user_attribute(
|
|||||||
ignored_user_attributes: &[String],
|
ignored_user_attributes: &[String],
|
||||||
) -> Result<Option<Vec<Vec<u8>>>> {
|
) -> Result<Option<Vec<Vec<u8>>>> {
|
||||||
let attribute = attribute.to_ascii_lowercase();
|
let attribute = attribute.to_ascii_lowercase();
|
||||||
Ok(Some(match attribute.as_str() {
|
let attribute_values = match attribute.as_str() {
|
||||||
"objectclass" => vec![
|
"objectclass" => vec![
|
||||||
b"inetOrgPerson".to_vec(),
|
b"inetOrgPerson".to_vec(),
|
||||||
b"posixAccount".to_vec(),
|
b"posixAccount".to_vec(),
|
||||||
@ -170,13 +170,7 @@ fn get_user_attribute(
|
|||||||
"mail" => vec![user.email.clone().into_bytes()],
|
"mail" => vec![user.email.clone().into_bytes()],
|
||||||
"givenname" => vec![user.first_name.clone().into_bytes()],
|
"givenname" => vec![user.first_name.clone().into_bytes()],
|
||||||
"sn" => vec![user.last_name.clone().into_bytes()],
|
"sn" => vec![user.last_name.clone().into_bytes()],
|
||||||
"jpegphoto" => {
|
"jpegphoto" => vec![user.avatar.clone().into_bytes()],
|
||||||
let bytes = user.avatar.clone().into_bytes();
|
|
||||||
if bytes.is_empty() {
|
|
||||||
return Ok(None);
|
|
||||||
}
|
|
||||||
vec![bytes]
|
|
||||||
}
|
|
||||||
"memberof" => groups
|
"memberof" => groups
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.flatten()
|
.flatten()
|
||||||
@ -209,7 +203,12 @@ fn get_user_attribute(
|
|||||||
}
|
}
|
||||||
return Ok(None);
|
return Ok(None);
|
||||||
}
|
}
|
||||||
}))
|
};
|
||||||
|
if attribute_values.len() == 1 && attribute_values[0].is_empty() {
|
||||||
|
Ok(None)
|
||||||
|
} else {
|
||||||
|
Ok(Some(attribute_values))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[instrument(skip_all, level = "debug")]
|
#[instrument(skip_all, level = "debug")]
|
||||||
@ -290,7 +289,7 @@ fn get_group_attribute(
|
|||||||
ignored_group_attributes: &[String],
|
ignored_group_attributes: &[String],
|
||||||
) -> Result<Option<Vec<Vec<u8>>>> {
|
) -> Result<Option<Vec<Vec<u8>>>> {
|
||||||
let attribute = attribute.to_ascii_lowercase();
|
let attribute = attribute.to_ascii_lowercase();
|
||||||
Ok(Some(match attribute.as_str() {
|
let attribute_values = match attribute.as_str() {
|
||||||
"objectclass" => vec![b"groupOfUniqueNames".to_vec()],
|
"objectclass" => vec![b"groupOfUniqueNames".to_vec()],
|
||||||
// Always returned as part of the base response.
|
// Always returned as part of the base response.
|
||||||
"dn" | "distinguishedname" => return Ok(None),
|
"dn" | "distinguishedname" => return Ok(None),
|
||||||
@ -321,7 +320,12 @@ fn get_group_attribute(
|
|||||||
}
|
}
|
||||||
return Ok(None);
|
return Ok(None);
|
||||||
}
|
}
|
||||||
}))
|
};
|
||||||
|
if attribute_values.len() == 1 && attribute_values[0].is_empty() {
|
||||||
|
Ok(None)
|
||||||
|
} else {
|
||||||
|
Ok(Some(attribute_values))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const ALL_GROUP_ATTRIBUTE_KEYS: &[&str] = &["objectclass", "uid", "cn", "member", "uniquemember"];
|
const ALL_GROUP_ATTRIBUTE_KEYS: &[&str] = &["objectclass", "uid", "cn", "member", "uniquemember"];
|
||||||
@ -2078,7 +2082,6 @@ mod tests {
|
|||||||
user_id: UserId::new("bob_1"),
|
user_id: UserId::new("bob_1"),
|
||||||
email: "bob@bobmail.bob".to_string(),
|
email: "bob@bobmail.bob".to_string(),
|
||||||
display_name: "Bôb Böbberson".to_string(),
|
display_name: "Bôb Böbberson".to_string(),
|
||||||
first_name: "Bôb".to_string(),
|
|
||||||
last_name: "Böbberson".to_string(),
|
last_name: "Böbberson".to_string(),
|
||||||
avatar: JpegPhoto::for_tests(),
|
avatar: JpegPhoto::for_tests(),
|
||||||
..Default::default()
|
..Default::default()
|
||||||
@ -2127,10 +2130,6 @@ mod tests {
|
|||||||
atype: "mail".to_string(),
|
atype: "mail".to_string(),
|
||||||
vals: vec![b"bob@bobmail.bob".to_vec()],
|
vals: vec![b"bob@bobmail.bob".to_vec()],
|
||||||
},
|
},
|
||||||
LdapPartialAttribute {
|
|
||||||
atype: "givenname".to_string(),
|
|
||||||
vals: vec!["Bôb".to_string().into_bytes()],
|
|
||||||
},
|
|
||||||
LdapPartialAttribute {
|
LdapPartialAttribute {
|
||||||
atype: "sn".to_string(),
|
atype: "sn".to_string(),
|
||||||
vals: vec!["Böbberson".to_string().into_bytes()],
|
vals: vec!["Böbberson".to_string().into_bytes()],
|
||||||
|
Loading…
Reference in New Issue
Block a user