|
|
|
@ -32,8 +32,8 @@ func (t *Team) IsOwnerTeam() bool { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// IsMember returns true if given user is a member of team.
|
|
|
|
|
func (t *Team) IsMember(uID int64) bool { |
|
|
|
|
return IsTeamMember(t.OrgID, t.ID, uID) |
|
|
|
|
func (t *Team) IsMember(userID int64) bool { |
|
|
|
|
return IsTeamMember(t.OrgID, t.ID, userID) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (t *Team) getRepositories(e Engine) (err error) { |
|
|
|
@ -72,13 +72,13 @@ func (t *Team) GetMembers() (err error) { |
|
|
|
|
|
|
|
|
|
// AddMember adds new membership of the team to the organization,
|
|
|
|
|
// the user will have membership to the organization automatically when needed.
|
|
|
|
|
func (t *Team) AddMember(uID int64) error { |
|
|
|
|
return AddTeamMember(t.OrgID, t.ID, uID) |
|
|
|
|
func (t *Team) AddMember(userID int64) error { |
|
|
|
|
return AddTeamMember(t.OrgID, t.ID, userID) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// RemoveMember removes member from team of organization.
|
|
|
|
|
func (t *Team) RemoveMember(uID int64) error { |
|
|
|
|
return RemoveTeamMember(t.OrgID, t.ID, uID) |
|
|
|
|
func (t *Team) RemoveMember(userID int64) error { |
|
|
|
|
return RemoveTeamMember(t.OrgID, t.ID, userID) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (t *Team) hasRepository(e Engine, repoID int64) bool { |
|
|
|
@ -401,18 +401,18 @@ type TeamUser struct { |
|
|
|
|
UID int64 `xorm:"UNIQUE(s)"` |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func isTeamMember(e Engine, orgID, teamID, uID int64) bool { |
|
|
|
|
func isTeamMember(e Engine, orgID, teamID, userID int64) bool { |
|
|
|
|
has, _ := e. |
|
|
|
|
Where("org_id=?", orgID). |
|
|
|
|
And("team_id=?", teamID). |
|
|
|
|
And("uid=?", uID). |
|
|
|
|
And("uid=?", userID). |
|
|
|
|
Get(new(TeamUser)) |
|
|
|
|
return has |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// IsTeamMember returns true if given user is a member of team.
|
|
|
|
|
func IsTeamMember(orgID, teamID, uID int64) bool { |
|
|
|
|
return isTeamMember(x, orgID, teamID, uID) |
|
|
|
|
func IsTeamMember(orgID, teamID, userID int64) bool { |
|
|
|
|
return isTeamMember(x, orgID, teamID, userID) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func getTeamMembers(e Engine, teamID int64) (_ []*User, err error) { |
|
|
|
@ -438,10 +438,10 @@ func GetTeamMembers(teamID int64) ([]*User, error) { |
|
|
|
|
return getTeamMembers(x, teamID) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func getUserTeams(e Engine, orgID, uID int64) ([]*Team, error) { |
|
|
|
|
func getUserTeams(e Engine, orgID, userID int64) ([]*Team, error) { |
|
|
|
|
tus := make([]*TeamUser, 0, 5) |
|
|
|
|
if err := e. |
|
|
|
|
Where("uid=?", uID). |
|
|
|
|
Where("uid=?", userID). |
|
|
|
|
And("org_id=?", orgID). |
|
|
|
|
Find(&tus); err != nil { |
|
|
|
|
return nil, err |
|
|
|
@ -462,18 +462,18 @@ func getUserTeams(e Engine, orgID, uID int64) ([]*Team, error) { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// GetUserTeams returns all teams that user belongs to in given organization.
|
|
|
|
|
func GetUserTeams(orgID, uID int64) ([]*Team, error) { |
|
|
|
|
return getUserTeams(x, orgID, uID) |
|
|
|
|
func GetUserTeams(orgID, userID int64) ([]*Team, error) { |
|
|
|
|
return getUserTeams(x, orgID, userID) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// AddTeamMember adds new membership of given team to given organization,
|
|
|
|
|
// the user will have membership to given organization automatically when needed.
|
|
|
|
|
func AddTeamMember(orgID, teamID, uID int64) error { |
|
|
|
|
if IsTeamMember(orgID, teamID, uID) { |
|
|
|
|
func AddTeamMember(orgID, teamID, userID int64) error { |
|
|
|
|
if IsTeamMember(orgID, teamID, userID) { |
|
|
|
|
return nil |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if err := AddOrgUser(orgID, uID); err != nil { |
|
|
|
|
if err := AddOrgUser(orgID, userID); err != nil { |
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -495,7 +495,7 @@ func AddTeamMember(orgID, teamID, uID int64) error { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
tu := &TeamUser{ |
|
|
|
|
UID: uID, |
|
|
|
|
UID: userID, |
|
|
|
|
OrgID: orgID, |
|
|
|
|
TeamID: teamID, |
|
|
|
|
} |
|
|
|
@ -515,7 +515,7 @@ func AddTeamMember(orgID, teamID, uID int64) error { |
|
|
|
|
// We make sure it exists before.
|
|
|
|
|
ou := new(OrgUser) |
|
|
|
|
if _, err = sess. |
|
|
|
|
Where("uid = ?", uID). |
|
|
|
|
Where("uid = ?", userID). |
|
|
|
|
And("org_id = ?", orgID). |
|
|
|
|
Get(ou); err != nil { |
|
|
|
|
return err |
|
|
|
@ -531,8 +531,8 @@ func AddTeamMember(orgID, teamID, uID int64) error { |
|
|
|
|
return sess.Commit() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func removeTeamMember(e Engine, orgID, teamID, uID int64) error { |
|
|
|
|
if !isTeamMember(e, orgID, teamID, uID) { |
|
|
|
|
func removeTeamMember(e Engine, orgID, teamID, userID int64) error { |
|
|
|
|
if !isTeamMember(e, orgID, teamID, userID) { |
|
|
|
|
return nil |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -544,7 +544,7 @@ func removeTeamMember(e Engine, orgID, teamID, uID int64) error { |
|
|
|
|
|
|
|
|
|
// Check if the user to delete is the last member in owner team.
|
|
|
|
|
if t.IsOwnerTeam() && t.NumMembers == 1 { |
|
|
|
|
return ErrLastOrgOwner{UID: uID} |
|
|
|
|
return ErrLastOrgOwner{UID: userID} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
t.NumMembers-- |
|
|
|
@ -560,7 +560,7 @@ func removeTeamMember(e Engine, orgID, teamID, uID int64) error { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
tu := &TeamUser{ |
|
|
|
|
UID: uID, |
|
|
|
|
UID: userID, |
|
|
|
|
OrgID: orgID, |
|
|
|
|
TeamID: teamID, |
|
|
|
|
} |
|
|
|
@ -583,7 +583,7 @@ func removeTeamMember(e Engine, orgID, teamID, uID int64) error { |
|
|
|
|
// This must exist.
|
|
|
|
|
ou := new(OrgUser) |
|
|
|
|
_, err = e. |
|
|
|
|
Where("uid = ?", uID). |
|
|
|
|
Where("uid = ?", userID). |
|
|
|
|
And("org_id = ?", org.ID). |
|
|
|
|
Get(ou) |
|
|
|
|
if err != nil { |
|
|
|
@ -603,13 +603,13 @@ func removeTeamMember(e Engine, orgID, teamID, uID int64) error { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// RemoveTeamMember removes member from given team of given organization.
|
|
|
|
|
func RemoveTeamMember(orgID, teamID, uID int64) error { |
|
|
|
|
func RemoveTeamMember(orgID, teamID, userID int64) error { |
|
|
|
|
sess := x.NewSession() |
|
|
|
|
defer sessionRelease(sess) |
|
|
|
|
if err := sess.Begin(); err != nil { |
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
|
if err := removeTeamMember(sess, orgID, teamID, uID); err != nil { |
|
|
|
|
if err := removeTeamMember(sess, orgID, teamID, userID); err != nil { |
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
|
return sess.Commit() |
|
|
|
|