code.gitea.io/gitea@v1.21.7/services/pull/edits.go (about)

     1  // Copyright 2022 The Gitea Authors.
     2  // All rights reserved.
     3  // SPDX-License-Identifier: MIT
     4  
     5  package pull
     6  
     7  import (
     8  	"context"
     9  	"errors"
    10  
    11  	issues_model "code.gitea.io/gitea/models/issues"
    12  	access_model "code.gitea.io/gitea/models/perm/access"
    13  	unit_model "code.gitea.io/gitea/models/unit"
    14  	user_model "code.gitea.io/gitea/models/user"
    15  )
    16  
    17  var ErrUserHasNoPermissionForAction = errors.New("user not allowed to do this action")
    18  
    19  // SetAllowEdits allow edits from maintainers to PRs
    20  func SetAllowEdits(ctx context.Context, doer *user_model.User, pr *issues_model.PullRequest, allow bool) error {
    21  	if doer == nil || !pr.Issue.IsPoster(doer.ID) {
    22  		return ErrUserHasNoPermissionForAction
    23  	}
    24  
    25  	if err := pr.LoadHeadRepo(ctx); err != nil {
    26  		return err
    27  	}
    28  
    29  	permission, err := access_model.GetUserRepoPermission(ctx, pr.HeadRepo, doer)
    30  	if err != nil {
    31  		return err
    32  	}
    33  
    34  	if !permission.CanWrite(unit_model.TypeCode) {
    35  		return ErrUserHasNoPermissionForAction
    36  	}
    37  
    38  	pr.AllowMaintainerEdit = allow
    39  	return issues_model.UpdateAllowEdits(ctx, pr)
    40  }