diff --git a/server/ldap-admin/internal/logic/getdepartmentslogic.go b/server/ldap-admin/internal/logic/getdepartmentslogic.go index d5f40c6b..11a88cc4 100644 --- a/server/ldap-admin/internal/logic/getdepartmentslogic.go +++ b/server/ldap-admin/internal/logic/getdepartmentslogic.go @@ -4,8 +4,7 @@ import ( "context" "fusenapi/utils/auth" "fusenapi/utils/basic" - "github.com/go-ldap/ldap/v3" - "log" + "fusenapi/utils/ldap_lib" "sort" "strings" @@ -44,28 +43,18 @@ func (l *GetDepartmentsLogic) GetDepartments(req *types.Request, userinfo *auth. //从ldap获取组织架构数据 rootCn := strings.Split(l.svcCtx.Config.Ldap.RootDN, ",") if len(rootCn) == 0 { - return resp.SetStatusWithMessage(basic.CodeServiceErr, "root dn is not set") + return resp.SetStatusWithMessage(basic.CodeServiceErr, "root用户DN未设置") } - searchRequest := ldap.NewSearchRequest( - l.svcCtx.Config.Ldap.BaseDN, //这里后续需要修改,不同的人只能查询他的下属列表 - ldap.ScopeWholeSubtree, ldap.NeverDerefAliases, 0, 0, false, - "(&(objectClass=*)(!(ou="+l.svcCtx.Config.Ldap.PeopleGroupOu+"))(!("+rootCn[0]+")))", //所有object但是不包括people以及root用户 - nil, - nil, - ) - // 执行搜索请求 - searchResult, err := l.svcCtx.Ldap.Search(searchRequest) + ldapServer := ldap_lib.NewLdap(l.svcCtx.Ldap) + filter := "(&(objectClass=*)(!(ou=" + l.svcCtx.Config.Ldap.PeopleGroupOu + "))(!(" + rootCn[0] + ")))" //所有object但是不包括people以及root用户 + searchResult, err := ldapServer.Search(l.svcCtx.Config.Ldap.BaseDN, filter, nil, nil) if err != nil { - log.Fatal(err) + return resp.SetStatusWithMessage(basic.CodeServiceErr, "查询失败:"+err.Error()) } mapDN := make(map[string]*DNItem) sortNum := 0 //每个DN存入map for _, v := range searchResult.Entries { - //如果是root用户则跳过 - /*if v.DN == l.svcCtx.Config.Ldap.RootDN { - continue - }*/ sortNum++ attribute := make(map[string]interface{}) for _, attr := range v.Attributes {