livy_manager 0.2.0

Livy Manager - Web UI for Managing Apache Livy Sessions
Documentation
use config::LDAP;
use ldap3::{LdapConn, Scope};
use server::UserSession;
use std::error::Error;

pub fn auth(conf: &LDAP, uid: &str, password: &str) -> Result<UserSession, Box<Error>> {
    let ldap = LdapConn::new(conf.url.as_str())?;

    let user_dn = conf.user_dn.replace("{}", uid);

    ldap.simple_bind(user_dn.as_str(), password)?.success()?;

    let (res, _) = ldap.search(conf.admin_group_dn.as_str(), Scope::Subtree, format!("member={}", user_dn).as_str(), Vec::<&'static str>::new())?.success()?;

    let is_admin = res.len() == 1;

    let uid = String::from(uid);

    Ok(UserSession {
        uid,
        is_admin
    })
}