Fix remove team member issue (#3566)
Put sess.Commit() out of the RemoveOrgUser function Add an empty line to separate import packagesrelease/v1.15
parent
19bf4ddf80
commit
2d1c5c3756
|
@ -436,8 +436,7 @@ func AddOrgUser(orgID, uid int64) error {
|
||||||
return sess.Commit()
|
return sess.Commit()
|
||||||
}
|
}
|
||||||
|
|
||||||
// RemoveOrgUser removes user from given organization.
|
func removeOrgUser(sess *xorm.Session, orgID, userID int64) error {
|
||||||
func RemoveOrgUser(orgID, userID int64) error {
|
|
||||||
ou := new(OrgUser)
|
ou := new(OrgUser)
|
||||||
|
|
||||||
has, err := x.
|
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 {
|
if _, err := sess.ID(ou.ID).Delete(ou); err != nil {
|
||||||
return err
|
return err
|
||||||
} else if _, err = sess.Exec("UPDATE `user` SET num_members=num_members-1 WHERE id=?", orgID); err != nil {
|
} 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()
|
return sess.Commit()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,8 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"code.gitea.io/gitea/modules/log"
|
"code.gitea.io/gitea/modules/log"
|
||||||
|
|
||||||
|
"github.com/go-xorm/xorm"
|
||||||
)
|
)
|
||||||
|
|
||||||
const ownerTeamName = "Owners"
|
const ownerTeamName = "Owners"
|
||||||
|
@ -521,7 +523,7 @@ func AddTeamMember(team *Team, userID int64) error {
|
||||||
return sess.Commit()
|
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)
|
isMember, err := isTeamMember(e, team.OrgID, team.ID, userID)
|
||||||
if err != nil || !isMember {
|
if err != nil || !isMember {
|
||||||
return err
|
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
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue