summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/helpers/branches_helper.rb25
-rw-r--r--app/views/projects/tree/_tree.html.haml2
2 files changed, 19 insertions, 8 deletions
diff --git a/app/helpers/branches_helper.rb b/app/helpers/branches_helper.rb
index e08ffccb94c..2ec2cc96157 100644
--- a/app/helpers/branches_helper.rb
+++ b/app/helpers/branches_helper.rb
@@ -1,11 +1,22 @@
module BranchesHelper
def can_remove_branch?(project, branch_name)
- if project.protected_branch? branch_name
- false
- elsif branch_name == project.repository.root_ref
- false
- else
- can?(current_user, :push_code, project)
- end
+ if project.protected_branch? branch_name
+ false
+ elsif branch_name == project.repository.root_ref
+ false
+ else
+ can?(current_user, :push_code, project)
+ end
+ end
+
+ def can_push_branch?(project, branch_name)
+ return false unless project.repository.branch_names.include?(branch_name)
+ action = if project.protected_branch?(branch_name)
+ :push_code_to_protected_branches
+ else
+ :push_code
+ end
+
+ current_user.can?(action, project)
end
end
diff --git a/app/views/projects/tree/_tree.html.haml b/app/views/projects/tree/_tree.html.haml
index ee850e2bc1b..1fc06928bcf 100644
--- a/app/views/projects/tree/_tree.html.haml
+++ b/app/views/projects/tree/_tree.html.haml
@@ -9,7 +9,7 @@
= link_to truncate(title, length: 40), project_tree_path(@project, path)
- else
= link_to title, '#'
- - if current_user && @repository.branch_names.include?(@ref) && current_user.can?(:push_code, @project)
+ - if current_user && can_push_branch?(@project, @ref)
%li
= link_to project_new_tree_path(@project, @id), title: 'New file', id: 'new-file-link' do
%small