mirror of
https://github.com/go-gitea/gitea.git
synced 2026-05-12 00:22:59 +02:00
rename tables in group-related query conditions
This commit is contained in:
parent
81095daa62
commit
87f26cd99b
@ -27,16 +27,16 @@ func (groups RepoGroupList) LoadOwners(ctx context.Context) error {
|
|||||||
|
|
||||||
// userOrgTeamGroupBuilder returns group ids where user's teams can access.
|
// userOrgTeamGroupBuilder returns group ids where user's teams can access.
|
||||||
func userOrgTeamGroupBuilder(userID int64) *builder.Builder {
|
func userOrgTeamGroupBuilder(userID int64) *builder.Builder {
|
||||||
return builder.Select("`group_team`.group_id").
|
return builder.Select("`repo_group_team`.group_id").
|
||||||
From("group_team").
|
From("repo_group_team").
|
||||||
Join("INNER", "team_user", "`team_user`.team_id = `group_team`.team_id").
|
Join("INNER", "team_user", "`team_user`.team_id = `repo_group_team`.team_id").
|
||||||
Where(builder.Eq{"`team_user`.uid": userID})
|
Where(builder.Eq{"`team_user`.uid": userID})
|
||||||
}
|
}
|
||||||
|
|
||||||
func UserOrgTeamPermCond(idStr string, userID int64, level perm.AccessMode) builder.Cond {
|
func UserOrgTeamPermCond(idStr string, userID int64, level perm.AccessMode) builder.Cond {
|
||||||
selCond := userOrgTeamGroupBuilder(userID)
|
selCond := userOrgTeamGroupBuilder(userID)
|
||||||
selCond = selCond.InnerJoin("team", "`team`.id = `group_team`.team_id").
|
selCond = selCond.InnerJoin("team", "`team`.id = `repo_group_team`.team_id").
|
||||||
And(builder.Or(builder.Gte{"`team`.authorize": level}, builder.Gte{"`group_team`.access_mode": level}))
|
And(builder.Or(builder.Gte{"`team`.authorize": level}, builder.Gte{"`repo_group_team`.access_mode": level}))
|
||||||
return builder.In(idStr, selCond)
|
return builder.In(idStr, selCond)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -11,10 +11,10 @@ import (
|
|||||||
|
|
||||||
func GetTeamsWithAccessToGroup(ctx context.Context, orgID, groupID int64, mode perm.AccessMode) ([]*Team, error) {
|
func GetTeamsWithAccessToGroup(ctx context.Context, orgID, groupID int64, mode perm.AccessMode) ([]*Team, error) {
|
||||||
teams := make([]*Team, 0)
|
teams := make([]*Team, 0)
|
||||||
inCond := group_model.ParentGroupCond(ctx, "group_team.group_id", groupID)
|
inCond := group_model.ParentGroupCond(ctx, "repo_group_team.group_id", groupID)
|
||||||
return teams, db.GetEngine(ctx).Distinct("team.*").Where("group_team.access_mode >= ?", mode).
|
return teams, db.GetEngine(ctx).Distinct("team.*").Where("repo_group_team.access_mode >= ?", mode).
|
||||||
Join("INNER", "group_team", "group_team.team_id = team.id and group_team.org_id = ?", orgID).
|
Join("INNER", "repo_group_team", "repo_group_team.team_id = team.id and repo_group_team.org_id = ?", orgID).
|
||||||
And("group_team.org_id = ?", orgID).
|
And("repo_group_team.org_id = ?", orgID).
|
||||||
And(inCond).
|
And(inCond).
|
||||||
OrderBy("name").
|
OrderBy("name").
|
||||||
Find(&teams)
|
Find(&teams)
|
||||||
@ -22,13 +22,13 @@ func GetTeamsWithAccessToGroup(ctx context.Context, orgID, groupID int64, mode p
|
|||||||
|
|
||||||
func GetTeamsWithAccessToGroupUnit(ctx context.Context, orgID, groupID int64, mode perm.AccessMode, unitType unit.Type) ([]*Team, error) {
|
func GetTeamsWithAccessToGroupUnit(ctx context.Context, orgID, groupID int64, mode perm.AccessMode, unitType unit.Type) ([]*Team, error) {
|
||||||
teams := make([]*Team, 0)
|
teams := make([]*Team, 0)
|
||||||
inCond := group_model.ParentGroupCond(ctx, "group_team.group_id", groupID)
|
inCond := group_model.ParentGroupCond(ctx, "repo_group_team.group_id", groupID)
|
||||||
return teams, db.GetEngine(ctx).Where("group_team.access_mode >= ?", mode).
|
return teams, db.GetEngine(ctx).Where("repo_group_team.access_mode >= ?", mode).
|
||||||
Join("INNER", "group_team", "group_team.team_id = team.id").
|
Join("INNER", "repo_group_team", "repo_group_team.team_id = team.id").
|
||||||
Join("INNER", "group_unit", "group_unit.team_id = team.id").
|
Join("INNER", "repo_group_unit", "repo_group_unit.team_id = team.id").
|
||||||
And("group_team.org_id = ?", orgID).
|
And("repo_group_team.org_id = ?", orgID).
|
||||||
And(inCond).
|
And(inCond).
|
||||||
And("group_unit.type = ?", unitType).
|
And("repo_group_unit.type = ?", unitType).
|
||||||
OrderBy("name").
|
OrderBy("name").
|
||||||
Find(&teams)
|
Find(&teams)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -129,8 +129,8 @@ func GetUserRepoTeams(ctx context.Context, orgID, userID, repoID int64) (teams T
|
|||||||
// GetUserGroupTeams returns teams in a group that a user has access to
|
// GetUserGroupTeams returns teams in a group that a user has access to
|
||||||
func GetUserGroupTeams(ctx context.Context, groupID, userID int64) (teams TeamList, err error) {
|
func GetUserGroupTeams(ctx context.Context, groupID, userID int64) (teams TeamList, err error) {
|
||||||
err = db.GetEngine(ctx).
|
err = db.GetEngine(ctx).
|
||||||
Where("`group_team`.group_id = ?", groupID).
|
Where("`repo_group_team`.group_id = ?", groupID).
|
||||||
Join("INNER", "group_team", "`group_team`.team_id = `team`.id").
|
Join("INNER", "repo_group_team", "`repo_group_team`.team_id = `team`.id").
|
||||||
Join("INNER", "team_user", "`team_user`.team_id = `team`.id").
|
Join("INNER", "team_user", "`team_user`.team_id = `team`.id").
|
||||||
And("`team_user`.uid = ?", userID).
|
And("`team_user`.uid = ?", userID).
|
||||||
Asc("`team`.name").
|
Asc("`team`.name").
|
||||||
|
|||||||
@ -306,7 +306,7 @@ func userOrgTeamRepoBuilder(userID int64) *builder.Builder {
|
|||||||
// userOrgTeamRepoGroupBuilder selects repos that the given user has access to through team membership and group permissions
|
// userOrgTeamRepoGroupBuilder selects repos that the given user has access to through team membership and group permissions
|
||||||
func userOrgTeamRepoGroupBuilder(userID int64) *builder.Builder {
|
func userOrgTeamRepoGroupBuilder(userID int64) *builder.Builder {
|
||||||
return userOrgTeamRepoBuilder(userID).
|
return userOrgTeamRepoBuilder(userID).
|
||||||
Join("INNER", "group_team", "`group_team`.team_id=`team_repo`.team_id")
|
Join("INNER", "repo_group_team", "`repo_group_team`.team_id=`team_repo`.team_id")
|
||||||
}
|
}
|
||||||
|
|
||||||
// userOrgTeamUnitRepoBuilder returns repo ids where user's teams can access the special unit.
|
// userOrgTeamUnitRepoBuilder returns repo ids where user's teams can access the special unit.
|
||||||
@ -343,8 +343,8 @@ func UserOrgUnitRepoCond(idStr string, userID, orgID int64, unitType unit.Type)
|
|||||||
func ReposAccessibleByGroupTeamBuilder(teamID int64) *builder.Builder {
|
func ReposAccessibleByGroupTeamBuilder(teamID int64) *builder.Builder {
|
||||||
innerGroupCond := builder.Select("`repo_group`.id").
|
innerGroupCond := builder.Select("`repo_group`.id").
|
||||||
From("repo_group").
|
From("repo_group").
|
||||||
InnerJoin("group_team", "`group_team`.group_id = `repo_group`.id").
|
InnerJoin("repo_group_team", "`repo_group_team`.group_id = `repo_group`.id").
|
||||||
Where(builder.Eq{"`group_team`.team_id": teamID})
|
Where(builder.Eq{"`repo_group_team`.team_id": teamID})
|
||||||
return builder.Select("`repository`.id").
|
return builder.Select("`repository`.id").
|
||||||
From("repository").
|
From("repository").
|
||||||
Where(builder.In("`repository`.group_id", innerGroupCond))
|
Where(builder.In("`repository`.group_id", innerGroupCond))
|
||||||
|
|||||||
@ -17,9 +17,9 @@ func FindGroupMembers(ctx context.Context, groupID int64, opts *organization_mod
|
|||||||
Select("`team_user`.uid").
|
Select("`team_user`.uid").
|
||||||
From("team_user").
|
From("team_user").
|
||||||
InnerJoin("org_user", "`org_user`.uid = team_user.uid").
|
InnerJoin("org_user", "`org_user`.uid = team_user.uid").
|
||||||
InnerJoin("group_team", "`group_team`.team_id = team_user.team_id").
|
InnerJoin("repo_group_team", "`repo_group_team`.team_id = team_user.team_id").
|
||||||
Where(builder.Eq{"`org_user`.org_id": opts.OrgID}).
|
Where(builder.Eq{"`org_user`.org_id": opts.OrgID}).
|
||||||
And(group_model.ParentGroupCond(context.TODO(), "`group_team`.group_id", groupID))
|
And(group_model.ParentGroupCond(context.TODO(), "`repo_group_team`.group_id", groupID))
|
||||||
if opts.PublicOnly() {
|
if opts.PublicOnly() {
|
||||||
cond = cond.And(builder.Eq{"`org_user`.is_public": true})
|
cond = cond.And(builder.Eq{"`org_user`.is_public": true})
|
||||||
}
|
}
|
||||||
@ -38,17 +38,20 @@ func FindGroupMembers(ctx context.Context, groupID int64, opts *organization_mod
|
|||||||
func GetGroupTeams(ctx context.Context, groupID int64) ([]*organization_model.Team, error) {
|
func GetGroupTeams(ctx context.Context, groupID int64) ([]*organization_model.Team, error) {
|
||||||
var teams []*organization_model.Team
|
var teams []*organization_model.Team
|
||||||
return teams, db.GetEngine(ctx).
|
return teams, db.GetEngine(ctx).
|
||||||
Where("`group_team`.group_id = ?", groupID).
|
Where("`repo_group_team`.group_id = ?", groupID).
|
||||||
Join("INNER", "group_team", "`group_team`.team_id = `team`.id").
|
Join("INNER", "repo_group_team", "`repo_group_team`.team_id = `team`.id").
|
||||||
Asc("`team`.name").
|
Asc("`team`.name").
|
||||||
Find(&teams)
|
Find(&teams)
|
||||||
}
|
}
|
||||||
|
|
||||||
func IsGroupMember(ctx context.Context, groupID, userID int64) (bool, error) {
|
func IsGroupMember(ctx context.Context, groupID int64, user *user_model.User) (bool, error) {
|
||||||
|
if user == nil {
|
||||||
|
return false, nil
|
||||||
|
}
|
||||||
return db.GetEngine(ctx).
|
return db.GetEngine(ctx).
|
||||||
Where("`group_team`.group_id = ?", groupID).
|
Where("`repo_group_team`.group_id = ?", groupID).
|
||||||
Join("INNER", "group_team", "`group_team`.team_id = `team_user`.team_id").
|
Join("INNER", "repo_group_team", "`repo_group_team`.team_id = `team_user`.team_id").
|
||||||
And("`team_user`.uid = ?", userID).
|
And("`team_user`.uid = ?", user.ID).
|
||||||
Table("team_user").
|
Table("team_user").
|
||||||
Exist()
|
Exist()
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user