forked from NYANDEV/forgejo
Backport #27272 by @lng2020 As title ![ksnip_20230926-115158](https://github.com/go-gitea/gitea/assets/70063547/a60be44a-06ad-421e-ba27-e4e0adfa5db7) Co-authored-by: Nanguan Lin <70063547+lng2020@users.noreply.github.com>
This commit is contained in:
parent
e719bf8ead
commit
c61b9c5f3c
1 changed files with 17 additions and 8 deletions
|
@ -231,7 +231,7 @@ type CreateReviewOptions struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// IsOfficialReviewer check if at least one of the provided reviewers can make official reviews in issue (counts towards required approvals)
|
// IsOfficialReviewer check if at least one of the provided reviewers can make official reviews in issue (counts towards required approvals)
|
||||||
func IsOfficialReviewer(ctx context.Context, issue *Issue, reviewers ...*user_model.User) (bool, error) {
|
func IsOfficialReviewer(ctx context.Context, issue *Issue, reviewer *user_model.User) (bool, error) {
|
||||||
pr, err := GetPullRequestByIssueID(ctx, issue.ID)
|
pr, err := GetPullRequestByIssueID(ctx, issue.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, err
|
return false, err
|
||||||
|
@ -242,14 +242,21 @@ func IsOfficialReviewer(ctx context.Context, issue *Issue, reviewers ...*user_mo
|
||||||
return false, err
|
return false, err
|
||||||
}
|
}
|
||||||
if rule == nil {
|
if rule == nil {
|
||||||
return false, nil
|
// if no rule is found, then user with write access can make official reviews
|
||||||
|
err := pr.LoadBaseRepo(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
writeAccess, err := access_model.HasAccessUnit(ctx, reviewer, pr.BaseRepo, unit.TypeCode, perm.AccessModeWrite)
|
||||||
|
if err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
return writeAccess, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, reviewer := range reviewers {
|
official, err := git_model.IsUserOfficialReviewer(ctx, rule, reviewer)
|
||||||
official, err := git_model.IsUserOfficialReviewer(ctx, rule, reviewer)
|
if official || err != nil {
|
||||||
if official || err != nil {
|
return official, err
|
||||||
return official, err
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return false, nil
|
return false, nil
|
||||||
|
@ -578,7 +585,9 @@ func AddReviewRequest(ctx context.Context, issue *Issue, reviewer, doer *user_mo
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
official, err := IsOfficialReviewer(ctx, issue, reviewer, doer)
|
// if the reviewer is an official reviewer,
|
||||||
|
// remove the official flag in the all previous reviews
|
||||||
|
official, err := IsOfficialReviewer(ctx, issue, reviewer)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
} else if official {
|
} else if official {
|
||||||
|
|
Loading…
Reference in a new issue