From e0724aed99254c589ce79f8b830e7c3ee23d9176 Mon Sep 17 00:00:00 2001 From: yp05327 <576951401@qq.com> Date: Fri, 21 Apr 2023 02:39:04 +0000 Subject: [PATCH 1/5] add remove org user check if team is deleted --- models/org_team.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/models/org_team.go b/models/org_team.go index 4c973b4d1b971..9d540d9668f43 100644 --- a/models/org_team.go +++ b/models/org_team.go @@ -419,6 +419,20 @@ func DeleteTeam(t *organization.Team) error { return err } + for _, tm := range t.Members { + // Check if the user is a member of any team in the organization. + if count, err := db.GetEngine(ctx).Count(&organization.TeamUser{ + UID: tm.ID, + OrgID: t.OrgID, + }); err != nil { + return err + } else if count == 0 { + if err = removeOrgUser(ctx, t.OrgID, tm.ID); err != nil { + return err + } + } + } + // Update organization number of teams. if _, err := db.Exec(ctx, "UPDATE `user` SET num_teams=num_teams-1 WHERE id=?", t.OrgID); err != nil { return err From a1b7e6d880ccf8813bb36a4125cccdd295508a23 Mon Sep 17 00:00:00 2001 From: yp05327 <576951401@qq.com> Date: Fri, 21 Apr 2023 02:44:19 +0000 Subject: [PATCH 2/5] improve --- models/org_team.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/models/org_team.go b/models/org_team.go index 9d540d9668f43..570632dbc5b7b 100644 --- a/models/org_team.go +++ b/models/org_team.go @@ -378,6 +378,7 @@ func DeleteTeam(t *organization.Team) error { return err } defer committer.Close() + sess := db.GetEngine(ctx) if err := t.LoadRepositories(ctx); err != nil { return err @@ -390,7 +391,7 @@ func DeleteTeam(t *organization.Team) error { // update branch protections { protections := make([]*git_model.ProtectedBranch, 0, 10) - err := db.GetEngine(ctx).In("repo_id", + err := sess.In("repo_id", builder.Select("id").From("repository").Where(builder.Eq{"owner_id": t.OrgID})). Find(&protections) if err != nil { @@ -421,7 +422,7 @@ func DeleteTeam(t *organization.Team) error { for _, tm := range t.Members { // Check if the user is a member of any team in the organization. - if count, err := db.GetEngine(ctx).Count(&organization.TeamUser{ + if count, err := sess.Count(&organization.TeamUser{ UID: tm.ID, OrgID: t.OrgID, }); err != nil { From de6dfe71bd06fdb10eddf8e2a1305da583438a11 Mon Sep 17 00:00:00 2001 From: yp05327 <576951401@qq.com> Date: Fri, 21 Apr 2023 02:55:44 +0000 Subject: [PATCH 3/5] improve --- models/org_team.go | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/models/org_team.go b/models/org_team.go index 570632dbc5b7b..75028f97bfd51 100644 --- a/models/org_team.go +++ b/models/org_team.go @@ -421,16 +421,8 @@ func DeleteTeam(t *organization.Team) error { } for _, tm := range t.Members { - // Check if the user is a member of any team in the organization. - if count, err := sess.Count(&organization.TeamUser{ - UID: tm.ID, - OrgID: t.OrgID, - }); err != nil { + if err := removeInvaildOrgUser(ctx, sess, tm.ID, t.OrgID); err != nil { return err - } else if count == 0 { - if err = removeOrgUser(ctx, t.OrgID, tm.ID); err != nil { - return err - } } } @@ -583,16 +575,19 @@ func removeTeamMember(ctx context.Context, team *organization.Team, userID int64 } } + return removeInvaildOrgUser(ctx, e, userID, team.OrgID) +} + +func removeInvaildOrgUser(ctx context.Context, sess db.Engine, userID, orgID int64) error { // Check if the user is a member of any team in the organization. - if count, err := e.Count(&organization.TeamUser{ + if count, err := sess.Count(&organization.TeamUser{ UID: userID, - OrgID: team.OrgID, + OrgID: orgID, }); err != nil { return err } else if count == 0 { - return removeOrgUser(ctx, team.OrgID, userID) + return removeOrgUser(ctx, orgID, userID) } - return nil } From 8a90c62f87400264ae47eafd0c695f6222012196 Mon Sep 17 00:00:00 2001 From: yp05327 <576951401@qq.com> Date: Fri, 21 Apr 2023 02:58:40 +0000 Subject: [PATCH 4/5] improve --- models/org_team.go | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/models/org_team.go b/models/org_team.go index 75028f97bfd51..5e63b38dc4113 100644 --- a/models/org_team.go +++ b/models/org_team.go @@ -378,7 +378,6 @@ func DeleteTeam(t *organization.Team) error { return err } defer committer.Close() - sess := db.GetEngine(ctx) if err := t.LoadRepositories(ctx); err != nil { return err @@ -391,7 +390,7 @@ func DeleteTeam(t *organization.Team) error { // update branch protections { protections := make([]*git_model.ProtectedBranch, 0, 10) - err := sess.In("repo_id", + err := db.GetEngine(ctx).In("repo_id", builder.Select("id").From("repository").Where(builder.Eq{"owner_id": t.OrgID})). Find(&protections) if err != nil { @@ -421,7 +420,7 @@ func DeleteTeam(t *organization.Team) error { } for _, tm := range t.Members { - if err := removeInvaildOrgUser(ctx, sess, tm.ID, t.OrgID); err != nil { + if err := removeInvaildOrgUser(ctx, tm.ID, t.OrgID); err != nil { return err } } @@ -575,12 +574,12 @@ func removeTeamMember(ctx context.Context, team *organization.Team, userID int64 } } - return removeInvaildOrgUser(ctx, e, userID, team.OrgID) + return removeInvaildOrgUser(ctx, userID, team.OrgID) } -func removeInvaildOrgUser(ctx context.Context, sess db.Engine, userID, orgID int64) error { +func removeInvaildOrgUser(ctx context.Context, userID, orgID int64) error { // Check if the user is a member of any team in the organization. - if count, err := sess.Count(&organization.TeamUser{ + if count, err := db.GetEngine(ctx).Count(&organization.TeamUser{ UID: userID, OrgID: orgID, }); err != nil { From 9631ec01e377a926b506e4586c207ca08c899f2e Mon Sep 17 00:00:00 2001 From: yp05327 <576951401@qq.com> Date: Mon, 24 Apr 2023 07:23:03 +0000 Subject: [PATCH 5/5] fix typo --- models/org_team.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/models/org_team.go b/models/org_team.go index 5e63b38dc4113..be0c859a4b8d8 100644 --- a/models/org_team.go +++ b/models/org_team.go @@ -420,7 +420,7 @@ func DeleteTeam(t *organization.Team) error { } for _, tm := range t.Members { - if err := removeInvaildOrgUser(ctx, tm.ID, t.OrgID); err != nil { + if err := removeInvalidOrgUser(ctx, tm.ID, t.OrgID); err != nil { return err } } @@ -574,10 +574,10 @@ func removeTeamMember(ctx context.Context, team *organization.Team, userID int64 } } - return removeInvaildOrgUser(ctx, userID, team.OrgID) + return removeInvalidOrgUser(ctx, userID, team.OrgID) } -func removeInvaildOrgUser(ctx context.Context, userID, orgID int64) error { +func removeInvalidOrgUser(ctx context.Context, userID, orgID int64) error { // Check if the user is a member of any team in the organization. if count, err := db.GetEngine(ctx).Count(&organization.TeamUser{ UID: userID,