diff --git a/plume-models/src/config.rs b/plume-models/src/config.rs index f55d5c71..5e638a9f 100644 --- a/plume-models/src/config.rs +++ b/plume-models/src/config.rs @@ -252,26 +252,28 @@ pub struct LdapConfig { fn get_ldap_config() -> Option { let addr = var("LDAP_ADDR").ok(); let base_dn = var("LDAP_BASE_DN").ok(); - if addr.is_some() && base_dn.is_some() { - let tls = var("LDAP_TLS").unwrap_or_else(|_| "false".to_owned()); - let tls = match tls.as_ref() { - "1" | "true" | "TRUE" => true, - "0" | "false" | "FALSE" => false, - _ => panic!("Invalid LDAP configuration : tls"), - }; - let user_name_attr = var("LDAP_USER_NAME_ATTR").unwrap_or_else(|_| "cn".to_owned()); - let mail_attr = var("LDAP_USER_MAIL_ATTR").unwrap_or_else(|_| "mail".to_owned()); - Some(LdapConfig { - addr: addr.unwrap(), - base_dn: base_dn.unwrap(), - tls, - user_name_attr, - mail_attr, - }) - } else if addr.is_some() || base_dn.is_some() { - panic!("Invalid LDAP configuration : both LDAP_ADDR and LDAP_BASE_DN must be set") - } else { - None + match (addr, base_dn) { + (Some(addr), Some(base_dn)) => { + let tls = var("LDAP_TLS").unwrap_or_else(|_| "false".to_owned()); + let tls = match tls.as_ref() { + "1" | "true" | "TRUE" => true, + "0" | "false" | "FALSE" => false, + _ => panic!("Invalid LDAP configuration : tls"), + }; + let user_name_attr = var("LDAP_USER_NAME_ATTR").unwrap_or_else(|_| "cn".to_owned()); + let mail_attr = var("LDAP_USER_MAIL_ATTR").unwrap_or_else(|_| "mail".to_owned()); + Some(LdapConfig { + addr, + base_dn, + tls, + user_name_attr, + mail_attr, + }) + } + (None, None) => None, + (_, _) => { + panic!("Invalid LDAP configuration : both LDAP_ADDR and LDAP_BASE_DN must be set") + } } } diff --git a/plume-models/src/users.rs b/plume-models/src/users.rs index 60ccc65e..9abad0f7 100644 --- a/plume-models/src/users.rs +++ b/plume-models/src/users.rs @@ -322,7 +322,7 @@ impl User { for entry in search.0 { let entry = SearchEntry::construct(entry); let email = entry.attrs.get("mail").and_then(|vec| vec.first()); - if email.is_some() { + if let Some(email) = email { let _ = ldap_conn.unbind(); return NewUser::new_local( conn, @@ -330,7 +330,7 @@ impl User { name.to_owned(), Role::Normal, "", - email.unwrap().to_owned(), + email.to_owned(), None, ); } @@ -1275,7 +1275,10 @@ pub(crate) mod tests { ) .unwrap(); - assert_eq!(User::login(conn, "test", "test_password").unwrap().id, test_user.id); + assert_eq!( + User::login(conn, "test", "test_password").unwrap().id, + test_user.id + ); assert!(User::login(conn, "test", "other_password").is_err()); Ok(()) });