Fix remove team member issue (#3566)
Put sess.Commit() out of the RemoveOrgUser function Add an empty line to separate import packages
This commit is contained in:
parent
19bf4ddf80
commit
2d1c5c3756
2 changed files with 27 additions and 9 deletions
|
@ -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
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue