migration-tool: Import users' avatars

This commit is contained in:
Valentin Tolmer
2022-08-09 09:43:55 +02:00
committed by nitnelave
parent 686bdc0cb1
commit 2ca083541e
4 changed files with 20 additions and 18 deletions

View File

@@ -184,14 +184,23 @@ impl TryFrom<ResultEntry> for User {
.or_else(|| get_optional_attribute("name"))
.or_else(|| get_optional_attribute("displayName"));
let first_name = get_optional_attribute("givenName");
let avatar = entry
.attrs
.get("jpegPhoto")
.map(|v| v.iter().map(|s| s.as_bytes().to_vec()).collect::<Vec<_>>())
.or_else(|| entry.bin_attrs.get("jpegPhoto").map(Clone::clone))
.and_then(|v| v.into_iter().next().filter(|s| !s.is_empty()));
let password =
get_optional_attribute("userPassword").or_else(|| get_optional_attribute("password"));
Ok(User::new(
id,
email,
display_name,
first_name,
last_name,
crate::lldap::CreateUserInput {
id,
email,
display_name,
first_name,
last_name,
avatar: avatar.map(base64::encode),
},
password,
entry.dn,
))

View File

@@ -70,23 +70,12 @@ pub struct User {
impl User {
// https://github.com/graphql-rust/graphql-client/issues/386
pub fn new(
id: String,
email: String,
display_name: Option<String>,
first_name: Option<String>,
last_name: Option<String>,
user_input: create_user::CreateUserInput,
password: Option<String>,
dn: String,
) -> User {
User {
user_input: create_user::CreateUserInput {
id,
email,
display_name,
first_name,
last_name,
avatar: None,
},
user_input,
password,
dn,
}
@@ -103,6 +92,8 @@ impl User {
)]
struct CreateUser;
pub type CreateUserInput = create_user::CreateUserInput;
#[derive(GraphQLQuery)]
#[graphql(
schema_path = "../schema.graphql",