Commit f51eac1d authored by James Edwards-Jones's avatar James Edwards-Jones

Settings::RepositoryController includes protected tags in JS

parent 91ed8ed6
......@@ -7,22 +7,23 @@ module Projects
@deploy_keys = DeployKeysPresenter
.new(@project, current_user: current_user)
define_protected_branches
define_protected_refs
end
private
def define_protected_branches
load_protected_branches
def define_protected_refs
@protected_branches = @project.protected_branches.order(:name).page(params[:page])
@protected_tags = @project.protected_tags.order(:name).page(params[:page])
@protected_branch = @project.protected_branches.new
@protected_tag = @project.protected_tags.new
load_gon_index
end
def load_protected_branches
@protected_branches = @project.protected_branches.order(:name).page(params[:page])
end
def access_levels_options
#TODO: consider protected tags
#TODO: Refactor ProtectedBranch::PushAccessLevel so it doesn't mention branches
{
push_access_levels: {
roles: ProtectedBranch::PushAccessLevel.human_access_levels.map do |id, text|
......@@ -37,13 +38,28 @@ module Projects
}
end
#TODO: Move to Protections::TagMatcher.new(project).unprotected
def unprotected_tags
exact_protected_tag_names = @project.protected_tags.reject(&:wildcard?).map(&:name)
tag_names = @project.repository.tags.map(&:name)
non_open_tag_names = Set.new(exact_protected_tag_names).intersection(Set.new(tag_names))
@project.repository.tags.reject { |tag| non_open_tag_names.include? tag.name }
end
def unprotected_tags_hash
tags = unprotected_tags.map { |tag| { text: tag.name, id: tag.name, title: tag.name } }
{ open_tags: tags }
end
def open_branches
branches = @project.open_branches.map { |br| { text: br.name, id: br.name, title: br.name } }
{ open_branches: branches }
end
def load_gon_index
gon.push(open_branches.merge(access_levels_options))
gon.push(open_branches)
gon.push(unprotected_tags_hash)
gon.push(access_levels_options)
end
end
end
......
module ProtectedBranchAccess
extend ActiveSupport::Concern
# module ProtectedRefAccess
# extend ActiveSupport::Concern
included do
belongs_to :protected_branch
delegate :project, to: :protected_branch
# included do
# # belongs_to :protected_branch
# # delegate :project, to: :protected_branch
scope :master, -> { where(access_level: Gitlab::Access::MASTER) }
scope :developer, -> { where(access_level: Gitlab::Access::DEVELOPER) }
end
# scope :master, -> { where(access_level: Gitlab::Access::MASTER) }
# scope :developer, -> { where(access_level: Gitlab::Access::DEVELOPER) }
# end
def humanize
self.class.human_access_levels[self.access_level]
end
# def humanize
# self.class.human_access_levels[self.access_level]
# end
def check_access(user)
return true if user.is_admin?
# def check_access(user)
# return true if user.is_admin?
project.team.max_member_access(user.id) >= access_level
end
end
# project.team.max_member_access(user.id) >= access_level
# end
# end
......@@ -866,6 +866,7 @@ class Project < ActiveRecord::Base
end
# Branches that are not _exactly_ matched by a protected branch.
#TODO: Move to Protections::BranchMatcher.new(project).unprotecte
def open_branches
exact_protected_branch_names = protected_branches.reject(&:wildcard?).map(&:name)
branch_names = repository.branches.map(&:name)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment