@@ -11,13 +11,11 @@ import (
11
11
"github.com/gravitl/netmaker/logger"
12
12
"github.com/gravitl/netmaker/logic"
13
13
"github.com/gravitl/netmaker/models"
14
- "github.com/gravitl/netmaker/mq"
15
14
"github.com/gravitl/netmaker/pro/idp"
16
15
"github.com/gravitl/netmaker/pro/idp/azure"
17
16
"github.com/gravitl/netmaker/pro/idp/google"
18
17
"github.com/gravitl/netmaker/pro/idp/okta"
19
18
proLogic "github.com/gravitl/netmaker/pro/logic"
20
- "github.com/gravitl/netmaker/servercfg"
21
19
)
22
20
23
21
var (
@@ -151,8 +149,7 @@ func syncUsers(idpUsers []idp.User) error {
151
149
for _ , user := range idpUsers {
152
150
if user .AccountArchived {
153
151
// delete the user if it has been archived.
154
- user := dbUsersMap [user .Username ]
155
- _ = deleteAndCleanUpUser (& user )
152
+ _ = logic .DeleteUser (user .Username )
156
153
continue
157
154
}
158
155
@@ -212,14 +209,14 @@ func syncUsers(idpUsers []idp.User) error {
212
209
}
213
210
214
211
for _ , user := range dbUsersMap {
215
- if user .ExternalIdentityProviderID ! = "" {
216
- if _ , ok := idpUsersMap [ user . UserName ]; ! ok {
217
- // delete the user if it has been deleted on idp
218
- // or is filtered out.
219
- err = deleteAndCleanUpUser ( & user )
220
- if err != nil {
221
- return err
222
- }
212
+ if user .ExternalIdentityProviderID = = "" {
213
+ continue
214
+ }
215
+ if _ , ok := idpUsersMap [ user . UserName ]; ! ok {
216
+ // delete the user if it has been deleted on idp.
217
+ err = logic . DeleteUser ( user . UserName )
218
+ if err != nil {
219
+ return err
223
220
}
224
221
}
225
222
}
@@ -280,11 +277,7 @@ func syncGroups(idpGroups []idp.Group) error {
280
277
dbGroup .ExternalIdentityProviderID = group .ID
281
278
dbGroup .Name = group .Name
282
279
dbGroup .Default = false
283
- dbGroup .NetworkRoles = map [models.NetworkID ]map [models.UserRoleID ]struct {}{
284
- models .AllNetworks : {
285
- proLogic .GetDefaultGlobalUserRoleID (): {},
286
- },
287
- }
280
+ dbGroup .NetworkRoles = make (map [models.NetworkID ]map [models.UserRoleID ]struct {})
288
281
err := proLogic .CreateUserGroup (& dbGroup )
289
282
if err != nil {
290
283
return err
@@ -331,9 +324,8 @@ func syncGroups(idpGroups []idp.Group) error {
331
324
for _ , group := range dbGroups {
332
325
if group .ExternalIdentityProviderID != "" {
333
326
if _ , ok := idpGroupsMap [group .ExternalIdentityProviderID ]; ! ok {
334
- // delete the group if it has been deleted on idp
335
- // or is filtered out.
336
- err = proLogic .DeleteAndCleanUpGroup (& group )
327
+ // delete the group if it has been deleted on idp.
328
+ err = proLogic .DeleteUserGroup (group .ID )
337
329
if err != nil {
338
330
return err
339
331
}
@@ -363,7 +355,6 @@ func GetIDPSyncStatus() models.IDPSyncStatus {
363
355
}
364
356
}
365
357
}
366
-
367
358
func filterUsersByGroupMembership (idpUsers []idp.User , idpGroups []idp.Group ) []idp.User {
368
359
usersMap := make (map [string ]int )
369
360
for i , user := range idpUsers {
@@ -404,14 +395,14 @@ func filterGroupsByMembers(idpGroups []idp.Group, idpUsers []idp.User) []idp.Gro
404
395
if _ , ok := usersMap [member ]; ok {
405
396
members = append (members , member )
406
397
}
407
- }
408
398
409
- if len (members ) > 0 {
410
- // the group at index `i` has members from the `idpUsers` list,
411
- // so we keep it.
412
- filteredGroupsMap [i ] = true
413
- // filter out members that were not provided in the `idpUsers` list.
414
- idpGroups [i ].Members = members
399
+ if len (members ) > 0 {
400
+ // the group at index `i` has members from the `idpUsers` list,
401
+ // so we keep it.
402
+ filteredGroupsMap [i ] = true
403
+ // filter out members that were not provided in the `idpUsers` list.
404
+ idpGroups [i ].Members = members
405
+ }
415
406
}
416
407
}
417
408
@@ -424,37 +415,3 @@ func filterGroupsByMembers(idpGroups []idp.Group, idpUsers []idp.User) []idp.Gro
424
415
425
416
return filteredGroups
426
417
}
427
-
428
- // TODO: deduplicate
429
- // The cyclic import between the package logic and mq requires this
430
- // function to be duplicated in multiple places.
431
- func deleteAndCleanUpUser (user * models.User ) error {
432
- err := logic .DeleteUser (user .UserName )
433
- if err != nil {
434
- return err
435
- }
436
-
437
- // check and delete extclient with this ownerID
438
- go func () {
439
- extclients , err := logic .GetAllExtClients ()
440
- if err != nil {
441
- return
442
- }
443
- for _ , extclient := range extclients {
444
- if extclient .OwnerID == user .UserName {
445
- err = logic .DeleteExtClientAndCleanup (extclient )
446
- if err == nil {
447
- _ = mq .PublishDeletedClientPeerUpdate (& extclient )
448
- }
449
- }
450
- }
451
-
452
- go logic .DeleteUserInvite (user .UserName )
453
- go mq .PublishPeerUpdate (false )
454
- if servercfg .IsDNSMode () {
455
- go logic .SetDNS ()
456
- }
457
- }()
458
-
459
- return nil
460
- }
0 commit comments