0
0
mirror of https://github.com/go-gitea/gitea.git synced 2026-04-04 18:56:28 +02:00
gitea/models/shared/group/org_group.go
☙◦ The Tablet ❀ GamerGirlandCo ◦❧ 271b6c7cae
fix build and lint errors
2026-04-02 20:00:54 -04:00

72 lines
2.4 KiB
Go

// Copyright 2025 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
package group
import (
"context"
"code.gitea.io/gitea/models/db"
group_model "code.gitea.io/gitea/models/group"
organization_model "code.gitea.io/gitea/models/organization"
repo_model "code.gitea.io/gitea/models/repo"
user_model "code.gitea.io/gitea/models/user"
"xorm.io/builder"
)
// FindGroupMembers finds all users who have access to a group via team membership
func FindGroupMembers(ctx context.Context, groupID int64, opts *organization_model.FindOrgMembersOpts) (user_model.UserList, error) {
cond := builder.
Select("`team_user`.uid").
From("team_user").
InnerJoin("org_user", "`org_user`.uid = team_user.uid").
InnerJoin("repo_group_team", "`repo_group_team`.team_id = team_user.team_id").
Where(builder.Eq{"`org_user`.org_id": opts.OrgID}).
And(group_model.ParentGroupCond(context.TODO(), "`repo_group_team`.group_id", groupID))
if opts.PublicOnly() {
cond = cond.And(builder.Eq{"`org_user`.is_public": true})
}
sess := db.GetEngine(ctx).Where(builder.In("`user`.id", cond))
if opts.ListOptions.PageSize > 0 {
sess = db.SetSessionPagination(sess, opts)
users := make([]*user_model.User, 0, opts.ListOptions.PageSize)
return users, sess.Find(&users)
}
var users []*user_model.User
err := sess.Find(&users)
return users, err
}
func GetGroupTeams(ctx context.Context, groupID int64) ([]*organization_model.Team, error) {
var teams []*organization_model.Team
return teams, db.GetEngine(ctx).
Where("`repo_group_team`.group_id = ?", groupID).
Join("INNER", "repo_group_team", "`repo_group_team`.team_id = `team`.id").
Asc("`team`.name").
Find(&teams)
}
func IsGroupMember(ctx context.Context, groupID int64, user *user_model.User) (bool, error) {
if user == nil {
return false, nil
}
return db.GetEngine(ctx).
Where("`repo_group_team`.group_id = ?", groupID).
Join("INNER", "repo_group_team", "`repo_group_team`.team_id = `team_user`.team_id").
And("`team_user`.uid = ?", user.ID).
Table("team_user").
Exist()
}
func GetGroupRepos(ctx context.Context, groupID int64, doer *user_model.User) ([]*repo_model.Repository, error) {
sess := db.GetEngine(ctx)
repos := make([]*repo_model.Repository, 0)
return repos, sess.Table("repository").
Where("group_id = ?", groupID).
And(builder.In("id", repo_model.AccessibleRepoIDsQuery(doer))).
OrderBy("group_sort_order").
Find(&repos)
}