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 }