Skip to content

Commit 80ee5a2

Browse files
committed
still have public members visible while restricted user is loged in ...
1 parent fdc7087 commit 80ee5a2

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

models/organization/org.go

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -206,24 +206,26 @@ func (opts FindOrgMembersOpts) PublicOnly() bool {
206206
return opts.Doer == nil || !(opts.IsDoerMember || opts.Doer.IsAdmin)
207207
}
208208

209+
// applyTeamMatesOnlyFilter make sure restricted users only see public team members and there own team mates
209210
func (opts FindOrgMembersOpts) applyTeamMatesOnlyFilter(sess *xorm.Session) {
210211
if opts.Doer != nil && opts.IsDoerMember && opts.Doer.IsRestricted {
211212
teamMates := builder.Select("DISTINCT team_user.uid").
212213
From("team_user").
213214
Where(builder.In("team_user.team_id", getUserTeamIDsQueryBuilder(opts.OrgID, opts.Doer.ID))).
214215
And(builder.Eq{"team_user.org_id": opts.OrgID})
215216

216-
sess.In("org_user.uid", teamMates)
217+
sess.And("is_public = ?", true).Or(sess.In("org_user.uid", teamMates))
217218
}
218219
}
219220

220221
// CountOrgMembers counts the organization's members
221222
func CountOrgMembers(ctx context.Context, opts *FindOrgMembersOpts) (int64, error) {
222223
sess := db.GetEngine(ctx).Where("org_id=?", opts.OrgID)
223224
if opts.PublicOnly() {
224-
sess.And("is_public = ?", true)
225+
sess = sess.And("is_public = ?", true)
226+
} else {
227+
opts.applyTeamMatesOnlyFilter(sess)
225228
}
226-
opts.applyTeamMatesOnlyFilter(sess)
227229

228230
return sess.Count(new(OrgUser))
229231
}
@@ -546,9 +548,10 @@ func GetOrgsCanCreateRepoByUserID(ctx context.Context, userID int64) ([]*Organiz
546548
func GetOrgUsersByOrgID(ctx context.Context, opts *FindOrgMembersOpts) ([]*OrgUser, error) {
547549
sess := db.GetEngine(ctx).Where("org_id=?", opts.OrgID)
548550
if opts.PublicOnly() {
549-
sess.And("is_public = ?", true)
551+
sess = sess.And("is_public = ?", true)
552+
} else {
553+
opts.applyTeamMatesOnlyFilter(sess)
550554
}
551-
opts.applyTeamMatesOnlyFilter(sess)
552555

553556
if opts.ListOptions.PageSize > 0 {
554557
sess = db.SetSessionPagination(sess, opts)

0 commit comments

Comments
 (0)