aboutsummaryrefslogtreecommitdiffstats
path: root/models
diff options
context:
space:
mode:
author6543 <6543@obermui.de>2020-05-07 15:24:59 +0200
committerGitHub <noreply@github.com>2020-05-07 14:24:59 +0100
commit507d0ec57aaf02a60a3de8aca3e635616b592fc5 (patch)
tree4a9cd3366bac77a65117d75171bb64fefc1698b7 /models
parenta6b8de282c62ca38d91d94779b0de7b9c8f1b4b5 (diff)
downloadgitea-507d0ec57aaf02a60a3de8aca3e635616b592fc5.tar.gz
gitea-507d0ec57aaf02a60a3de8aca3e635616b592fc5.zip
Prevent multiple listings of organization when creating a repository (#11303)
prevent double entries in results of GetOrgsCanCreateRepoByUserID I first try to only add GroupBy directly but xorm return broken user objects ... ... solution was to just query related UserIDs(OrgIDs) first and return OrgUsers based on this IDs close #11258 Co-authored-by: zeripath <art27@cantab.net>
Diffstat (limited to 'models')
-rw-r--r--models/org.go12
1 files changed, 6 insertions, 6 deletions
diff --git a/models/org.go b/models/org.go
index 4961db2ac7..58afc5cb59 100644
--- a/models/org.go
+++ b/models/org.go
@@ -473,12 +473,12 @@ func GetOwnedOrgsByUserIDDesc(userID int64, desc string) ([]*User, error) {
func GetOrgsCanCreateRepoByUserID(userID int64) ([]*User, error) {
orgs := make([]*User, 0, 10)
- return orgs, x.Join("INNER", "`team_user`", "`team_user`.org_id=`user`.id").
- Join("INNER", "`team`", "`team`.id=`team_user`.team_id").
- Where("`team_user`.uid=?", userID).
- And(builder.Eq{"`team`.authorize": AccessModeOwner}.Or(builder.Eq{"`team`.can_create_org_repo": true})).
- Desc("`user`.updated_unix").
- Find(&orgs)
+ return orgs, x.Where(builder.In("id", builder.Select("`user`.id").From("`user`").
+ Join("INNER", "`team_user`", "`team_user`.org_id = `user`.id").
+ Join("INNER", "`team`", "`team`.id = `team_user`.team_id").
+ Where(builder.Eq{"`team_user`.uid": userID}).
+ And(builder.Eq{"`team`.authorize": AccessModeOwner}.Or(builder.Eq{"`team`.can_create_org_repo": true})))).
+ Desc("`user`.updated_unix").Find(&orgs)
}
// GetOrgUsersByUserID returns all organization-user relations by user ID.