summaryrefslogtreecommitdiff
path: root/app/policies/merge_request_policy.rb
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-12-20 14:22:11 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2022-12-20 14:22:11 +0000
commit0c872e02b2c822e3397515ec324051ff540f0cd5 (patch)
treece2fb6ce7030e4dad0f4118d21ab6453e5938cdd /app/policies/merge_request_policy.rb
parentf7e05a6853b12f02911494c4b3fe53d9540d74fc (diff)
downloadgitlab-ce-f7d6ced4f57b4920a666336f5a44d098faade2ea.tar.gz
Add latest changes from gitlab-org/gitlab@15-7-stable-eev15.7.0-rc42
Diffstat (limited to 'app/policies/merge_request_policy.rb')
-rw-r--r--app/policies/merge_request_policy.rb14
1 files changed, 13 insertions, 1 deletions
diff --git a/app/policies/merge_request_policy.rb b/app/policies/merge_request_policy.rb
index bda327cb661..1759cf057e4 100644
--- a/app/policies/merge_request_policy.rb
+++ b/app/policies/merge_request_policy.rb
@@ -1,6 +1,8 @@
# frozen_string_literal: true
class MergeRequestPolicy < IssuablePolicy
+ condition(:can_approve) { can_approve? }
+
rule { locked }.policy do
prevent :reopen_merge_request
end
@@ -14,10 +16,14 @@ class MergeRequestPolicy < IssuablePolicy
prevent :accept_merge_request
end
- rule { can?(:update_merge_request) & is_project_member }.policy do
+ rule { can_approve }.policy do
enable :approve_merge_request
end
+ rule { can?(:approve_merge_request) & bot }.policy do
+ enable :reset_merge_request_approvals
+ end
+
rule { ~anonymous & can?(:read_merge_request) }.policy do
enable :create_todo
enable :update_subscription
@@ -32,6 +38,12 @@ class MergeRequestPolicy < IssuablePolicy
rule { can?(:admin_merge_request) }.policy do
enable :set_merge_request_metadata
end
+
+ private
+
+ def can_approve?
+ can?(:update_merge_request) && is_project_member?
+ end
end
MergeRequestPolicy.prepend_mod_with('MergeRequestPolicy')