diff --git a/pkg/models/team_members.go b/pkg/models/team_members.go index 34bdb46d4..8d0e61e97 100644 --- a/pkg/models/team_members.go +++ b/pkg/models/team_members.go @@ -115,13 +115,13 @@ func (tm *TeamMember) CheckMembership(s *xorm.Session) (exists bool, err error) return exists, err } -func (tm *TeamMember) GetMemberCount(s *xorm.Session) (memberCount int, err error) { - members := []TeamMember{} - err = s. +func (tm *TeamMember) GetMemberCount(s *xorm.Session) (memberCount int64, err error) { + member := TeamMember{} + memberCount, err = s. Where("team_id = ?", tm.TeamID). Cols("user_id"). - Find(&members) - return len(members), err + Count(&member) + return memberCount, err } // Update toggles a team member's admin status diff --git a/pkg/modules/auth/openid/openid.go b/pkg/modules/auth/openid/openid.go index bd0a6dbb3..83b69fab8 100644 --- a/pkg/modules/auth/openid/openid.go +++ b/pkg/modules/auth/openid/openid.go @@ -212,7 +212,8 @@ func HandleCallback(c echo.Context) error { if err != nil { log.Errorf("Could not proceed with group routine %v", err) } - errs = SignOutFromOrDeleteTeamsByID(s, u, utils.NotIn(oldOidcTeams, oidcTeams)) + errs = SignOutFromTeamsByID(s, u, utils.NotIn(oldOidcTeams, oidcTeams)) + log.Errorf("%v", errs) for _, err := range errs { log.Errorf("Found Error while signing out from teams %v", err) } @@ -250,27 +251,23 @@ func AssignOrCreateUserToTeams(s *xorm.Session, u *user.User, teamData []models. return oidcTeams, err } -func SignOutFromOrDeleteTeamsByID(s *xorm.Session, u *user.User, teamIDs []int64) (errs []error) { +func SignOutFromTeamsByID(s *xorm.Session, u *user.User, teamIDs []int64) (errs []error) { errs = []error{} for _, teamID := range teamIDs { tm := models.TeamMember{TeamID: teamID, UserID: u.ID, Username: u.Username} - exists, _ := tm.CheckMembership(s) - memberCount, _ := tm.GetMemberCount(s) + exists, err := tm.CheckMembership(s) + if err != nil { + errs = append(errs, err) + continue + } if !exists { continue } - err := tm.Delete(s, u) + err = tm.Delete(s, u) // if you cannot delete the team_member - if err != nil || memberCount <= 1 { - team, err := models.GetTeamByID(s, teamID) - if err != nil { - errs = append(errs, err) - continue - } - err = team.Delete(s, u) - if err != nil { - errs = append(errs, err) - } + if err != nil { + errs = append(errs, err) + continue } } return errs