Skip to content
Snippets Groups Projects
Verified Commit 88781783 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets
Browse files

Delete branch service with permission checks

parent 9f80ab8e
No related branches found
No related tags found
1 merge request!6949gitlab.com issue #229 - no_avatar.png path in coffee
class DeleteBranchService
def execute(project, branch_name, current_user)
repository = project.repository
branch = repository.find_branch(branch_name)
# No such branch
unless branch
return error('No such branch')
end
# Dont allow remove of protected branch
if project.protected_branch?(branch_name)
return error('Protected branch cant be removed')
end
# Dont allow user to remove branch if he is not allowed to push
unless current_user.can?(:push_code, project)
return error('You dont have push access to repo')
end
if repository.rm_branch(branch_name)
Event.create_ref_event(project, current_user, branch, 'rm')
success('Branch was removed')
else
return error('Failed to remove branch')
end
end
def error(message)
{
message: message,
state: :error
}
end
def success(message)
{
message: message,
state: :success
}
end
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment