Skip to content

Commit cba62bf

Browse files
authored
Revert "Allows filters to be updated (#3650)" (#3655)
This reverts commit d90994c.
1 parent d90994c commit cba62bf

File tree

4 files changed

+57
-133
lines changed

4 files changed

+57
-133
lines changed

pro/auth/sync.go

Lines changed: 19 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,11 @@ import (
1111
"github.com/gravitl/netmaker/logger"
1212
"github.com/gravitl/netmaker/logic"
1313
"github.com/gravitl/netmaker/models"
14-
"github.com/gravitl/netmaker/mq"
1514
"github.com/gravitl/netmaker/pro/idp"
1615
"github.com/gravitl/netmaker/pro/idp/azure"
1716
"github.com/gravitl/netmaker/pro/idp/google"
1817
"github.com/gravitl/netmaker/pro/idp/okta"
1918
proLogic "github.com/gravitl/netmaker/pro/logic"
20-
"github.com/gravitl/netmaker/servercfg"
2119
)
2220

2321
var (
@@ -151,8 +149,7 @@ func syncUsers(idpUsers []idp.User) error {
151149
for _, user := range idpUsers {
152150
if user.AccountArchived {
153151
// delete the user if it has been archived.
154-
user := dbUsersMap[user.Username]
155-
_ = deleteAndCleanUpUser(&user)
152+
_ = logic.DeleteUser(user.Username)
156153
continue
157154
}
158155

@@ -212,14 +209,14 @@ func syncUsers(idpUsers []idp.User) error {
212209
}
213210

214211
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
223220
}
224221
}
225222
}
@@ -280,11 +277,7 @@ func syncGroups(idpGroups []idp.Group) error {
280277
dbGroup.ExternalIdentityProviderID = group.ID
281278
dbGroup.Name = group.Name
282279
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{})
288281
err := proLogic.CreateUserGroup(&dbGroup)
289282
if err != nil {
290283
return err
@@ -331,9 +324,8 @@ func syncGroups(idpGroups []idp.Group) error {
331324
for _, group := range dbGroups {
332325
if group.ExternalIdentityProviderID != "" {
333326
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)
337329
if err != nil {
338330
return err
339331
}
@@ -363,7 +355,6 @@ func GetIDPSyncStatus() models.IDPSyncStatus {
363355
}
364356
}
365357
}
366-
367358
func filterUsersByGroupMembership(idpUsers []idp.User, idpGroups []idp.Group) []idp.User {
368359
usersMap := make(map[string]int)
369360
for i, user := range idpUsers {
@@ -404,14 +395,14 @@ func filterGroupsByMembers(idpGroups []idp.Group, idpUsers []idp.User) []idp.Gro
404395
if _, ok := usersMap[member]; ok {
405396
members = append(members, member)
406397
}
407-
}
408398

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+
}
415406
}
416407
}
417408

@@ -424,37 +415,3 @@ func filterGroupsByMembers(idpGroups []idp.Group, idpUsers []idp.User) []idp.Gro
424415

425416
return filteredGroups
426417
}
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-
}

pro/controllers/users.go

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -808,13 +808,11 @@ func deleteUserGroup(w http.ResponseWriter, r *http.Request) {
808808
logic.ReturnErrorResponse(w, r, logic.FormatError(errors.New("cannot delete default user group"), "badrequest"))
809809
return
810810
}
811-
err = proLogic.DeleteAndCleanUpGroup(&userG)
811+
err = proLogic.DeleteUserGroup(models.UserGroupID(gid))
812812
if err != nil {
813813
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
814814
return
815815
}
816-
817-
// TODO: log event in proLogic.DeleteAndCleanUpGroup so that all deletions are logged.
818816
logic.LogEvent(&models.Event{
819817
Action: models.Delete,
820818
Source: models.Subject{
@@ -830,7 +828,42 @@ func deleteUserGroup(w http.ResponseWriter, r *http.Request) {
830828
},
831829
Origin: models.Dashboard,
832830
})
831+
replacePeers := false
832+
go func() {
833+
for networkID := range userG.NetworkRoles {
834+
acls, err := logic.ListAclsByNetwork(networkID)
835+
if err != nil {
836+
continue
837+
}
838+
839+
for _, acl := range acls {
840+
var hasGroupSrc bool
841+
newAclSrc := make([]models.AclPolicyTag, 0)
842+
for _, src := range acl.Src {
843+
if src.ID == models.UserGroupAclID && src.Value == userG.ID.String() {
844+
hasGroupSrc = true
845+
} else {
846+
newAclSrc = append(newAclSrc, src)
847+
}
848+
}
833849

850+
if hasGroupSrc {
851+
if len(newAclSrc) == 0 {
852+
// no other src exists, delete acl.
853+
_ = logic.DeleteAcl(acl)
854+
} else {
855+
// other sources exist, update acl.
856+
acl.Src = newAclSrc
857+
_ = logic.UpsertAcl(acl)
858+
}
859+
replacePeers = true
860+
}
861+
}
862+
}
863+
}()
864+
865+
go proLogic.UpdatesUserGwAccessOnGrpUpdates(userG.ID, userG.NetworkRoles, make(map[models.NetworkID]map[models.UserRoleID]struct{}))
866+
go mq.PublishPeerUpdate(replacePeers)
834867
logic.ReturnSuccessResponseWithJson(w, r, nil, "deleted user group")
835868
}
836869

pro/idp/azure/azure.go

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -226,19 +226,15 @@ func (a *Client) getAccessToken() (string, error) {
226226
}
227227

228228
func buildPrefixFilter(field string, prefixes []string) string {
229-
return url.PathEscape("$filter=" + buildCondition(field, prefixes))
230-
}
231-
232-
func buildCondition(field string, prefixes []string) string {
233229
if len(prefixes) == 0 {
234230
return ""
235231
}
236232

237233
if len(prefixes) == 1 {
238-
return fmt.Sprintf("startswith(%s,'%s')", field, prefixes[0])
234+
return fmt.Sprintf("$filter=startswith(%s,'%s')", field, prefixes[0])
239235
}
240236

241-
return buildCondition(field, prefixes[:1]) + " or " + buildCondition(field, prefixes[1:])
237+
return buildPrefixFilter(field, prefixes[:1]) + "%20or%20" + buildPrefixFilter(field, prefixes[1:])
242238
}
243239

244240
type getUsersResponse struct {

pro/logic/user_mgmt.go

Lines changed: 0 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -620,22 +620,6 @@ func GetUserGroup(gid models.UserGroupID) (models.UserGroup, error) {
620620
return ug, nil
621621
}
622622

623-
func GetDefaultGlobalAdminGroupID() models.UserGroupID {
624-
return globalNetworksAdminGroupID
625-
}
626-
627-
func GetDefaultGlobalUserGroupID() models.UserGroupID {
628-
return globalNetworksUserGroupID
629-
}
630-
631-
func GetDefaultGlobalAdminRoleID() models.UserRoleID {
632-
return globalNetworksAdminRoleID
633-
}
634-
635-
func GetDefaultGlobalUserRoleID() models.UserRoleID {
636-
return globalNetworksUserRoleID
637-
}
638-
639623
func GetDefaultNetworkAdminGroupID(networkID models.NetworkID) models.UserGroupID {
640624
return models.UserGroupID(fmt.Sprintf("%s-%s-grp", networkID, models.NetworkAdmin))
641625
}
@@ -688,52 +672,6 @@ func UpdateUserGroup(g models.UserGroup) error {
688672
return database.Insert(g.ID.String(), string(d), database.USER_GROUPS_TABLE_NAME)
689673
}
690674

691-
func DeleteAndCleanUpGroup(group *models.UserGroup) error {
692-
err := DeleteUserGroup(group.ID)
693-
if err != nil {
694-
return err
695-
}
696-
697-
go func() {
698-
var replacePeers bool
699-
for networkID := range group.NetworkRoles {
700-
acls, err := logic.ListAclsByNetwork(networkID)
701-
if err != nil {
702-
continue
703-
}
704-
705-
for _, acl := range acls {
706-
var hasGroupSrc bool
707-
newAclSrc := make([]models.AclPolicyTag, 0)
708-
for _, src := range acl.Src {
709-
if src.ID == models.UserGroupAclID && src.Value == group.ID.String() {
710-
hasGroupSrc = true
711-
} else {
712-
newAclSrc = append(newAclSrc, src)
713-
}
714-
}
715-
716-
if hasGroupSrc {
717-
if len(newAclSrc) == 0 {
718-
// no other src exists, delete acl.
719-
_ = logic.DeleteAcl(acl)
720-
} else {
721-
// other sources exist, update acl.
722-
acl.Src = newAclSrc
723-
_ = logic.UpsertAcl(acl)
724-
}
725-
replacePeers = true
726-
}
727-
}
728-
}
729-
730-
go UpdatesUserGwAccessOnGrpUpdates(group.ID, group.NetworkRoles, make(map[models.NetworkID]map[models.UserRoleID]struct{}))
731-
go mq.PublishPeerUpdate(replacePeers)
732-
}()
733-
734-
return nil
735-
}
736-
737675
// DeleteUserGroup - deletes user group
738676
func DeleteUserGroup(gid models.UserGroupID) error {
739677
g, err := GetUserGroup(gid)

0 commit comments

Comments
 (0)