Changes
1 changed files (+28/-34)
-
-
@@ -218,50 +218,44 @@ func getReviewers(ctx context.Context, repo *repo_model.Repository, doerID, postreturn nil, err } var users []*user_model.User e := db.GetEngine(ctx) cond := builder.And(builder.Neq{"`user`.id": posterID}) if repo.IsPrivate || repo.Owner.Visibility == api.VisibleTypePrivate { // This a private repository: // Anyone who can read the repository is a requestable reviewer if err := e. SQL("SELECT * FROM `user` WHERE id in ("+ "SELECT user_id FROM `access` WHERE repo_id = ? AND mode >= ? AND user_id != ?"+ // private org repos ") ORDER BY name", repo.ID, perm.AccessModeRead, posterID). Find(&users); err != nil { return nil, err } cond = cond.And(builder.In("`user`.id", builder.Select("user_id").From("access").Where( builder.Eq{"repo_id": repo.ID}. And(builder.Gte{"mode": perm.AccessModeRead}), ), )) if repo.Owner.Type == user_model.UserTypeIndividual && repo.Owner.ID != posterID { // as private *user* repos don't generate an entry in the `access` table, // the owner of a private repo needs to be explicitly added. users = append(users, repo.Owner) cond = cond.Or(builder.Eq{"`user`.id": repo.Owner.ID}) } return users, nil } // This is a "public" repository: // Any user that has read access, is a watcher or organization member can be requested to review if err := e. SQL("SELECT * FROM `user` WHERE id IN ( "+ "SELECT user_id FROM `access` WHERE repo_id = ? AND mode >= ? "+ "UNION "+ "SELECT user_id FROM `watch` WHERE repo_id = ? AND mode IN (?, ?) "+ "UNION "+ "SELECT uid AS user_id FROM `org_user` WHERE org_id = ? "+ ") AND id != ? ORDER BY name", repo.ID, perm.AccessModeRead, repo.ID, repo_model.WatchModeNormal, repo_model.WatchModeAuto, repo.OwnerID, posterID). Find(&users); err != nil { return nil, err } return users, nil } else { // This is a "public" repository: // Any user that has read access, is a watcher or organization member can be requested to review cond = cond.And(builder.And(builder.In("`user`.id", builder.Select("user_id").From("access"). Where(builder.Eq{"repo_id": repo.ID}. And(builder.Gte{"mode": perm.AccessModeRead})), ).Or(builder.In("`user`.id", builder.Select("user_id").From("watch"). Where(builder.Eq{"repo_id": repo.ID}. And(builder.In("mode", repo_model.WatchModeNormal, repo_model.WatchModeAuto))), ).Or(builder.In("`user`.id", builder.Select("uid").From("org_user"). Where(builder.Eq{"org_id": repo.OwnerID}), ))))) } users := make([]*user_model.User, 0, 8) return users, db.GetEngine(ctx).Where(cond).OrderBy("name").Find(&users) } // GetReviewers get all users can be requested to review:
-