diff options
Diffstat (limited to 'app/helpers')
-rw-r--r-- | app/helpers/branches_helper.rb | 25 |
1 files changed, 18 insertions, 7 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 |