undo team gets deleted if user is last team member
continuous-integration/drone/pr Build is failing Details

remove logic behind deleting last team_member
This commit is contained in:
viehlieb 2023-02-23 15:23:32 +01:00
parent 82b7c14fed
commit d3ca751f4c
2 changed files with 17 additions and 20 deletions

View File

@ -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

View File

@ -213,7 +213,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)
}
@ -251,27 +252,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