Skip to content

Commit 2d1c5c3

Browse files
xwjdshappleboy
authored andcommitted
Fix remove team member issue (#3566)
Put sess.Commit() out of the RemoveOrgUser function Add an empty line to separate import packages
1 parent 19bf4dd commit 2d1c5c3

File tree

2 files changed

+27
-9
lines changed

2 files changed

+27
-9
lines changed

models/org.go

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -436,8 +436,7 @@ func AddOrgUser(orgID, uid int64) error {
436436
return sess.Commit()
437437
}
438438

439-
// RemoveOrgUser removes user from given organization.
440-
func RemoveOrgUser(orgID, userID int64) error {
439+
func removeOrgUser(sess *xorm.Session, orgID, userID int64) error {
441440
ou := new(OrgUser)
442441

443442
has, err := x.
@@ -473,12 +472,6 @@ func RemoveOrgUser(orgID, userID int64) error {
473472
}
474473
}
475474

476-
sess := x.NewSession()
477-
defer sess.Close()
478-
if err := sess.Begin(); err != nil {
479-
return err
480-
}
481-
482475
if _, err := sess.ID(ou.ID).Delete(ou); err != nil {
483476
return err
484477
} else if _, err = sess.Exec("UPDATE `user` SET num_members=num_members-1 WHERE id=?", orgID); err != nil {
@@ -520,6 +513,19 @@ func RemoveOrgUser(orgID, userID int64) error {
520513
}
521514
}
522515

516+
return nil
517+
}
518+
519+
// RemoveOrgUser removes user from given organization.
520+
func RemoveOrgUser(orgID, userID int64) error {
521+
sess := x.NewSession()
522+
defer sess.Close()
523+
if err := sess.Begin(); err != nil {
524+
return err
525+
}
526+
if err := removeOrgUser(sess, orgID, userID); err != nil {
527+
return err
528+
}
523529
return sess.Commit()
524530
}
525531

models/org_team.go

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ import (
1010
"strings"
1111

1212
"code.gitea.io/gitea/modules/log"
13+
14+
"github.com/go-xorm/xorm"
1315
)
1416

1517
const ownerTeamName = "Owners"
@@ -521,7 +523,7 @@ func AddTeamMember(team *Team, userID int64) error {
521523
return sess.Commit()
522524
}
523525

524-
func removeTeamMember(e Engine, team *Team, userID int64) error {
526+
func removeTeamMember(e *xorm.Session, team *Team, userID int64) error {
525527
isMember, err := isTeamMember(e, team.OrgID, team.ID, userID)
526528
if err != nil || !isMember {
527529
return err
@@ -558,6 +560,16 @@ func removeTeamMember(e Engine, team *Team, userID int64) error {
558560
}
559561
}
560562

563+
// Check if the user is a member of any team in the organization.
564+
if count, err := e.Count(&TeamUser{
565+
UID: userID,
566+
OrgID: team.OrgID,
567+
}); err != nil {
568+
return err
569+
} else if count == 0 {
570+
return removeOrgUser(e, team.OrgID, userID)
571+
}
572+
561573
return nil
562574
}
563575

0 commit comments

Comments
 (0)