diff --git a/src/api/identity.rs b/src/api/identity.rs index 1ffae800..e2a02ec9 100644 --- a/src/api/identity.rs +++ b/src/api/identity.rs @@ -90,17 +90,22 @@ fn _password_login(data: ConnectData, conn: DbConn, ip: ClientIp) -> JsonResult }; if CONFIG._enable_ldap() { + // Extract ldap username from email let email_parts: Vec<_> = username.split("@").collect(); let ldap_username = email_parts[0]; let password = data.password.as_ref().unwrap(); - let ldap = LdapConn::new(CONFIG.ldap_host().as_str())?; - let bind = ldap.simple_bind(ldap_username, password); - - if bind.is_err() { - err!( - "Username or password is incorrect. Try again", - format!("IP: {}. Username: {}.", ip.ip, ldap_username) - ); + match LdapConn::new(CONFIG.ldap_host().as_str()) { + Ok(ldap) => { + let bind = ldap.simple_bind(ldap_username, password); + + if bind.is_err() { + err!( + "LDAP Username or password is incorrect. Try again", + format!("IP: {}. Username: {}.", ip.ip, ldap_username) + ); + } + } + Err(_) => err!("Can't connect to LDAP, check LDAP host"), } } else { // Check password