@@ -22,6 +22,7 @@ import (
2222	"code.gitea.io/gitea/modules/util" 
2323
2424	"xorm.io/builder" 
25+ 	"xorm.io/xorm" 
2526)
2627
2728// ________                            .__                __  .__ 
@@ -205,12 +206,27 @@ func (opts FindOrgMembersOpts) PublicOnly() bool {
205206	return  opts .Doer  ==  nil  ||  ! opts .IsMember  &&  ! opts .Doer .IsAdmin 
206207}
207208
209+ func  (opts  FindOrgMembersOpts ) addTeamMatesOnlyFilter (ctx  context.Context , sess  * xorm.Session ) error  {
210+ 	if  opts .Doer  !=  nil  &&  opts .IsMember  &&  opts .Doer .IsRestricted  {
211+ 		teamMates  :=  builder .Select ("DISTINCT team_user.uid" ).
212+ 			From ("team_user" ).
213+ 			Where (builder .In ("team_user.team_id" , userTeamIDbuilder (opts .OrgID , opts .Doer .ID ))).
214+ 			And (builder.Eq {"team_user.org_id" : opts .OrgID })
215+ 
216+ 		sess .In ("org_user.uid" , teamMates )
217+ 	}
218+ 	return  nil 
219+ }
220+ 
208221// CountOrgMembers counts the organization's members 
209222func  CountOrgMembers (ctx  context.Context , opts  * FindOrgMembersOpts ) (int64 , error ) {
210223	sess  :=  db .GetEngine (ctx ).Where ("org_id=?" , opts .OrgID )
211224	if  opts .PublicOnly () {
212225		sess .And ("is_public = ?" , true )
213226	}
227+ 	if  err  :=  opts .addTeamMatesOnlyFilter (ctx , sess ); err  !=  nil  {
228+ 		return  0 , err 
229+ 	}
214230
215231	return  sess .Count (new (OrgUser ))
216232}
@@ -535,6 +551,9 @@ func GetOrgUsersByOrgID(ctx context.Context, opts *FindOrgMembersOpts) ([]*OrgUs
535551	if  opts .PublicOnly () {
536552		sess .And ("is_public = ?" , true )
537553	}
554+ 	if  err  :=  opts .addTeamMatesOnlyFilter (ctx , sess ); err  !=  nil  {
555+ 		return  nil , err 
556+ 	}
538557
539558	if  opts .ListOptions .PageSize  >  0  {
540559		sess  =  db .SetSessionPagination (sess , opts )
0 commit comments