@@ -43,7 +43,7 @@ func getPullWorkingLockKey(prID int64) string {
4343}
4444
4545// NewPullRequest creates new pull request with labels for repository.
46- func NewPullRequest (ctx context.Context , repo * repo_model.Repository , issue * issues_model.Issue , labelIDs []int64 , uuids []string , pr * issues_model.PullRequest , assigneeIDs [] int64 , reviewerIDs []int64 ) error {
46+ func NewPullRequest (ctx context.Context , repo * repo_model.Repository , issue * issues_model.Issue , labelIDs []int64 , uuids []string , pr * issues_model.PullRequest , assigneeIDs , reviewerIDs []int64 ) error {
4747 if err := issue .LoadPoster (ctx ); err != nil {
4848 return err
4949 }
@@ -118,11 +118,16 @@ func NewPullRequest(ctx context.Context, repo *repo_model.Repository, issue *iss
118118 }
119119
120120 for _ , reviewerID := range reviewerIDs {
121+ // negative reviewIDs represent team requests
121122 if reviewerID < 0 {
122123 team , err := organization .GetTeamByID (ctx , - reviewerID )
123124 if err != nil {
124125 return err
125126 }
127+ err = issue_service .IsValidTeamReviewRequest (ctx , team , issue .Poster , true , issue )
128+ if err != nil {
129+ return err
130+ }
126131 _ , err = issue_service .TeamReviewRequest (ctx , issue , issue .Poster , team , true )
127132 if err != nil {
128133 return err
@@ -134,6 +139,14 @@ func NewPullRequest(ctx context.Context, repo *repo_model.Repository, issue *iss
134139 if err != nil {
135140 return err
136141 }
142+ permDoer , err := access_model .GetUserRepoPermission (ctx , issue .Repo , issue .Poster )
143+ if err != nil {
144+ return err
145+ }
146+ err = issue_service .IsValidReviewRequest (ctx , reviewer , issue .Poster , true , issue , & permDoer )
147+ if err != nil {
148+ return err
149+ }
137150 _ , err = issue_service .ReviewRequest (ctx , issue , issue .Poster , reviewer , true )
138151 if err != nil {
139152 return err
0 commit comments