diff options
-rw-r--r-- | app/helpers/branches_helper.rb | 25 | ||||
-rw-r--r-- | app/views/projects/tree/_tree.html.haml | 2 |
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 |