diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-02-18 17:10:09 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-02-18 17:10:09 +0300 |
commit | a0a166e723005aea66e278c653542eb4e5cca11f (patch) | |
tree | bf9fb05985ff9e4046afe8d48733d5f41f10e7fd /app/models | |
parent | 859a6fb938bb9ee2a317c46dfa4fcc1af49608f0 (diff) |
Add latest changes from gitlab-org/gitlab@13-9-stable-ee
Diffstat (limited to 'app/models')
-rw-r--r-- | app/models/concerns/protected_ref.rb | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/app/models/concerns/protected_ref.rb b/app/models/concerns/protected_ref.rb index cf23a27244c..65195a8d5aa 100644 --- a/app/models/concerns/protected_ref.rb +++ b/app/models/concerns/protected_ref.rb @@ -40,26 +40,20 @@ module ProtectedRef end def protected_ref_accessible_to?(ref, user, project:, action:, protected_refs: nil) - all_matching_rules_allow?(ref, action: action, protected_refs: protected_refs) do |access_level| + access_levels_for_ref(ref, action: action, protected_refs: protected_refs).any? do |access_level| access_level.check_access(user) end end def developers_can?(action, ref, protected_refs: nil) - all_matching_rules_allow?(ref, action: action, protected_refs: protected_refs) do |access_level| + access_levels_for_ref(ref, action: action, protected_refs: protected_refs).any? do |access_level| access_level.access_level == Gitlab::Access::DEVELOPER end end - def all_matching_rules_allow?(ref, action:, protected_refs: nil, &block) - access_levels_groups = - self.matching(ref, protected_refs: protected_refs).map(&:"#{action}_access_levels") - - return false if access_levels_groups.blank? - - access_levels_groups.all? do |access_levels| - access_levels.any?(&block) - end + def access_levels_for_ref(ref, action:, protected_refs: nil) + self.matching(ref, protected_refs: protected_refs) + .flat_map(&:"#{action}_access_levels") end # Returns all protected refs that match the given ref name. |