@@ -30,10 +30,11 @@ type Service interface {
30
30
Delete (id string , options common.DBOptions ) error
31
31
Sync (id string , options common.DBOptions ) error
32
32
Login (user v1User.User , password string , options common.DBOptions ) error
33
- TestConnect (ldap * v1Ldap.Ldap ) ([]v1User. ImportUser , error )
33
+ TestConnect (ldap * v1Ldap.Ldap ) (int , error )
34
34
TestLogin (username string , password string ) error
35
35
ImportUsers (users []v1User.ImportUser ) (v1User.ImportResult , error )
36
36
CheckStatus () bool
37
+ GetLdapUser () ([]v1User.ImportUser , error )
37
38
}
38
39
39
40
func NewService () Service {
@@ -128,17 +129,19 @@ func (l *service) Delete(id string, options common.DBOptions) error {
128
129
return db .DeleteStruct (ldap )
129
130
}
130
131
131
- //func (l *service) GetLdapUser() ([]v1User.ImportUser, error) {
132
- // users := []v1User.ImportUser{}
133
- //
134
- //}
135
-
136
- func (l * service ) TestConnect (ldap * v1Ldap.Ldap ) ([]v1User.ImportUser , error ) {
132
+ func (l * service ) GetLdapUser () ([]v1User.ImportUser , error ) {
137
133
users := []v1User.ImportUser {}
134
+ ldaps , err := l .List (common.DBOptions {})
135
+ if err != nil {
136
+ return users , err
137
+ }
138
+ if len (ldaps ) == 0 {
139
+ return users , errors .New ("请先保存LDAP配置" )
140
+ }
141
+ ldap := ldaps [0 ]
138
142
if ! ldap .Enable {
139
143
return users , errors .New ("请先启用LDAP" )
140
144
}
141
-
142
145
lc := ldapClient .NewLdapClient (ldap .Address , ldap .Port , ldap .Username , ldap .Password , ldap .TLS )
143
146
if err := lc .Connect (); err != nil {
144
147
return users , err
@@ -162,7 +165,6 @@ func (l *service) TestConnect(ldap *v1Ldap.Ldap) ([]v1User.ImportUser, error) {
162
165
us := new (v1User.ImportUser )
163
166
us .Available = true
164
167
rv := reflect .ValueOf (& us ).Elem ().Elem ()
165
-
166
168
for _ , at := range entry .Attributes {
167
169
for k , v := range mappings {
168
170
if v == at .Name && len (at .Values ) > 0 {
@@ -173,23 +175,41 @@ func (l *service) TestConnect(ldap *v1Ldap.Ldap) ([]v1User.ImportUser, error) {
173
175
}
174
176
}
175
177
}
176
- if us .Email == "" || us . Name == "" {
178
+ if us .Name == "" {
177
179
continue
178
180
}
179
- if us .NickName == "" {
180
- us .NickName = us .Name
181
- }
182
181
_ , err = l .userService .GetByNameOrEmail (us .Name , common.DBOptions {})
183
182
if err == nil {
184
183
us .Available = false
185
184
}
186
185
users = append (users , * us )
187
186
}
188
- if len (users ) == 0 && len (entries ) > 0 {
189
- return users , errors .New ("Mapping 映射失败!" )
187
+ return users , nil
188
+ }
189
+
190
+ func (l * service ) TestConnect (ldap * v1Ldap.Ldap ) (int , error ) {
191
+ users := 0
192
+ if ! ldap .Enable {
193
+ return users , errors .New ("请先启用LDAP" )
190
194
}
191
195
192
- return users , nil
196
+ lc := ldapClient .NewLdapClient (ldap .Address , ldap .Port , ldap .Username , ldap .Password , ldap .TLS )
197
+ if err := lc .Connect (); err != nil {
198
+ return users , err
199
+ }
200
+ attributes , err := ldap .GetAttributes ()
201
+ if err != nil {
202
+ return users , err
203
+ }
204
+ entries , err := lc .Search (ldap .Dn , ldap .Filter , ldap .SizeLimit , ldap .TimeLimit , attributes )
205
+ if err != nil {
206
+ return users , err
207
+ }
208
+ if len (entries ) == 0 {
209
+ return users , nil
210
+ }
211
+
212
+ return len (entries ), nil
193
213
}
194
214
195
215
func (l * service ) CheckStatus () bool {
@@ -263,6 +283,13 @@ func (l *service) ImportUsers(users []v1User.ImportUser) (v1User.ImportResult, e
263
283
Type : v1User .LDAP ,
264
284
Email : imp .Email ,
265
285
}
286
+ if us .Email == "" {
287
+ us .Email = us .Name + "@example.com"
288
+ }
289
+ if us .NickName == "" {
290
+ us .NickName = us .Name
291
+ }
292
+
266
293
result .Failures = append (result .Failures , us .Name )
267
294
tx , err := server .DB ().Begin (true )
268
295
if err != nil {
0 commit comments