package ldap;
import java.util.List;
import ldap.pojo.LdapPersonInfo;
/**
* access Ldap
*
* @author 张亮
*/
public interface UserDaoLdap {
/**
* 获得所有的用户名(ldap称cn),可根据第二个参数指定返回值是否重复
*
* @param scope
* 取值为0、1、2,分别对应 SearchControls 类 OBJECT_SCOPE, ONELEVEL_SCOPE,
* SUBTREE_SCOPE三个查询范围,分别代表 当前对象查询、当前节点下对象查询、当前节点所有子目录查询
*
* @param distinct
* true,去掉结构中的重复值;false 允许结果中包含重复值
* @return 查询范围下返回的cn列表
*/
public List getAllPersonNames(int scope, boolean distinct);
/**
* 查询指定范围下的所有用户信息
*
* @param scope
* 取值为0、1、2,分别对应 SearchControls 类 OBJECT_SCOPE, ONELEVEL_SCOPE,
* SUBTREE_SCOPE三个查询范围,分别代表 当前对象查询、当前节点下对象查询、当前节点所有子目录查询
*
* @return 查询范围下返回的所有用户信息列表
*/
public List getAllPersons(int scope);
/**
* 根据Uid查询用户信息,*代表任意长度的任意字符
*
* @param uid
* 用户的uid
* @param scope
* 取值为0、1、2,分别对应 SearchControls 类 OBJECT_SCOPE, ONELEVEL_SCOPE,
* SUBTREE_SCOPE三个查询范围,分别代表 当前对象查询、当前节点下对象查询、当前节点所有子目录查询
*
* @return 用户信息
*/
public List getPersonByUid(String uid, int scope);
/**
* 查询包含当前Cn信息的所有用户,*代表任意长度的任意字符
*
* @param cn
* 用户的cn
* @param scope
* 取值为0、1、2,分别对应 SearchControls 类 OBJECT_SCOPE, ONELEVEL_SCOPE,
* SUBTREE_SCOPE三个查询范围,分别代表 当前对象查询、当前节点下对象查询、当前节点所有子目录查询
*
* @return 用户列表
*/
public List getPersonByCn(String cn, int scope);
/**
* 使用LdapPersonInfo类对象实现复合查询,属性中可使用通配符*,*代表任意长度的任意字符
*
* @param ldapPersonInfo
* 查询条件
* @param scope
* 取值为0、1、2,分别对应 SearchControls 类 OBJECT_SCOPE, ONELEVEL_SCOPE,
* SUBTREE_SCOPE三个查询范围,分别代表 当前对象查询、当前节点下对象查询、当前节点所有子目录查询
*
* @return 用户列表
*/
public List getPersonByPersonEnty(
LdapPersonInfo ldapPersonInfo, int scope);
/**
* 根据dn查找用户,dn为base dn 的相对dn.(若basedn为:dc=koal,dc=com,user
* dn为:uid=123,dc=koal,dc=com,则此处只需要提供 123 作为参数)
*
* @param dn
* 相对base dn的dn参数
* @return 用户信息
*/
public LdapPersonInfo getLdapObjectByDn(String dn);
/**
* 验证用户登陆
*
* @param uid
* 用户uid
* @param password
* 用户密码
*
* @return 是否登陆成功
*/
public boolean userLogin(String uid, String password);
/**
* 查询用户user dn
*
* @param uid
* 用户uid
*
* @return 用户dn列表,当前目录节点下可能存在多个相同uid的多个user dn
*/
public List getUserDnByUid(String uid);
}