mirror of
				https://github.com/nitnelave/lldap.git
				synced 2023-04-12 14:25:13 +00:00 
			
		
		
		
	migration-tool: Import users' avatars
This commit is contained in:
		
							parent
							
								
									be6ba020c8
								
							
						
					
					
						commit
						4bbabe3c0b
					
				
							
								
								
									
										1
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										1
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							@ -2278,6 +2278,7 @@ name = "migration-tool"
 | 
			
		||||
version = "0.3.0-alpha.1"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "anyhow",
 | 
			
		||||
 "base64",
 | 
			
		||||
 "graphql_client 0.11.0",
 | 
			
		||||
 "ldap3",
 | 
			
		||||
 "lldap_auth",
 | 
			
		||||
 | 
			
		||||
@ -6,6 +6,7 @@ authors = ["Valentin Tolmer <valentin@tolmer.fr>"]
 | 
			
		||||
 | 
			
		||||
[dependencies]
 | 
			
		||||
anyhow = "*"
 | 
			
		||||
base64 = "0.13"
 | 
			
		||||
rand = "0.8"
 | 
			
		||||
requestty = "0.4.1"
 | 
			
		||||
serde = "1"
 | 
			
		||||
 | 
			
		||||
@ -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(
 | 
			
		||||
            crate::lldap::CreateUserInput {
 | 
			
		||||
                id,
 | 
			
		||||
                email,
 | 
			
		||||
                display_name,
 | 
			
		||||
                first_name,
 | 
			
		||||
                last_name,
 | 
			
		||||
                avatar: avatar.map(base64::encode),
 | 
			
		||||
            },
 | 
			
		||||
            password,
 | 
			
		||||
            entry.dn,
 | 
			
		||||
        ))
 | 
			
		||||
 | 
			
		||||
@ -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",
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user