Jelajahi Sumber

fix(go): delete only oauth users;

Vishal Dalwadi 5 bulan lalu
induk
melakukan
713ff1b1da
1 mengubah file dengan 12 tambahan dan 9 penghapusan
  1. 12 9
      pro/auth/sync.go

+ 12 - 9
pro/auth/sync.go

@@ -146,10 +146,16 @@ func syncUsers(idpUsers []idp.User) error {
 					return err
 				}
 			}
+		} else {
+			logger.Log(0, "user with username "+user.Username+" already exists, skipping creation")
+			continue
 		}
 	}
 
 	for _, user := range dbUsersMap {
+		if user.ExternalIdentityProviderID == "" {
+			continue
+		}
 		if _, ok := idpUsersMap[user.UserName]; !ok {
 			// delete the user if it has been deleted on idp.
 			err = logic.DeleteUser(user.UserName)
@@ -179,9 +185,7 @@ func syncGroups(idpGroups []idp.Group) error {
 	}
 
 	dbGroupsMap := make(map[string]models.UserGroup)
-	dbGroupsNameMap := make(map[models.UserGroupID]struct{})
 	for _, group := range dbGroups {
-		dbGroupsNameMap[group.ID] = struct{}{}
 		if group.ExternalIdentityProviderID != "" {
 			dbGroupsMap[group.ExternalIdentityProviderID] = group
 		}
@@ -214,14 +218,7 @@ func syncGroups(idpGroups []idp.Group) error {
 
 		dbGroup, ok := dbGroupsMap[group.ID]
 		if !ok {
-			// create the group only if it doesn't exist.
-			if _, ok := dbGroupsNameMap[models.UserGroupID(group.Name)]; ok {
-				logger.Log(0, "group with name "+group.Name+" already exists, skipping creation")
-				continue
-			}
-
 			err := proLogic.CreateUserGroup(models.UserGroup{
-				ID:                         models.UserGroupID(group.Name),
 				ExternalIdentityProviderID: group.ID,
 				Default:                    false,
 				Name:                       group.Name,
@@ -229,6 +226,12 @@ func syncGroups(idpGroups []idp.Group) error {
 			if err != nil {
 				return err
 			}
+		} else {
+			dbGroup.Name = group.Name
+			err = proLogic.UpdateUserGroup(dbGroup)
+			if err != nil {
+				return err
+			}
 		}
 
 		groupMembersMap := make(map[string]struct{})