Put sess.Commit() out of the RemoveOrgUser function Add an empty line to separate import packagestags/v1.5.0-dev
@@ -436,8 +436,7 @@ func AddOrgUser(orgID, uid int64) error { | |||
return sess.Commit() | |||
} | |||
// RemoveOrgUser removes user from given organization. | |||
func RemoveOrgUser(orgID, userID int64) error { | |||
func removeOrgUser(sess *xorm.Session, orgID, userID int64) error { | |||
ou := new(OrgUser) | |||
has, err := x. | |||
@@ -473,12 +472,6 @@ func RemoveOrgUser(orgID, userID int64) error { | |||
} | |||
} | |||
sess := x.NewSession() | |||
defer sess.Close() | |||
if err := sess.Begin(); err != nil { | |||
return err | |||
} | |||
if _, err := sess.ID(ou.ID).Delete(ou); err != nil { | |||
return err | |||
} 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 { | |||
} | |||
} | |||
return nil | |||
} | |||
// RemoveOrgUser removes user from given organization. | |||
func RemoveOrgUser(orgID, userID int64) error { | |||
sess := x.NewSession() | |||
defer sess.Close() | |||
if err := sess.Begin(); err != nil { | |||
return err | |||
} | |||
if err := removeOrgUser(sess, orgID, userID); err != nil { | |||
return err | |||
} | |||
return sess.Commit() | |||
} | |||
@@ -10,6 +10,8 @@ import ( | |||
"strings" | |||
"code.gitea.io/gitea/modules/log" | |||
"github.com/go-xorm/xorm" | |||
) | |||
const ownerTeamName = "Owners" | |||
@@ -521,7 +523,7 @@ func AddTeamMember(team *Team, userID int64) error { | |||
return sess.Commit() | |||
} | |||
func removeTeamMember(e Engine, team *Team, userID int64) error { | |||
func removeTeamMember(e *xorm.Session, team *Team, userID int64) error { | |||
isMember, err := isTeamMember(e, team.OrgID, team.ID, userID) | |||
if err != nil || !isMember { | |||
return err | |||
@@ -558,6 +560,16 @@ func removeTeamMember(e Engine, team *Team, userID int64) error { | |||
} | |||
} | |||
// Check if the user is a member of any team in the organization. | |||
if count, err := e.Count(&TeamUser{ | |||
UID: userID, | |||
OrgID: team.OrgID, | |||
}); err != nil { | |||
return err | |||
} else if count == 0 { | |||
return removeOrgUser(e, team.OrgID, userID) | |||
} | |||
return nil | |||
} | |||