diff options
Diffstat (limited to 'app/policies/merge_request_policy.rb')
-rw-r--r-- | app/policies/merge_request_policy.rb | 14 |
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') |