Commit f2df2966 authored by Timothy Andrew's avatar Timothy Andrew

Humanize protected branches' access levels at one location.

1. The model now contains this humanization data, which is the once
   source of truth.

2. Previously, this was being listed out in the dropdown component as well.
parent c647540c
...@@ -3,7 +3,7 @@ class @ProtectedBranchesAccessSelect ...@@ -3,7 +3,7 @@ class @ProtectedBranchesAccessSelect
@container.find(".allowed-to-merge").each (i, element) => @container.find(".allowed-to-merge").each (i, element) =>
fieldName = $(element).data('field-name') fieldName = $(element).data('field-name')
$(element).glDropdown $(element).glDropdown
data: [{id: 'developers', text: 'Developers + Masters'}, {id: 'masters', text: 'Masters'}] data: gon.merge_access_levels
selectable: true selectable: true
fieldName: fieldName fieldName: fieldName
clicked: _.partial(@onSelect, element) clicked: _.partial(@onSelect, element)
...@@ -11,9 +11,7 @@ class @ProtectedBranchesAccessSelect ...@@ -11,9 +11,7 @@ class @ProtectedBranchesAccessSelect
@container.find(".allowed-to-push").each (i, element) => @container.find(".allowed-to-push").each (i, element) =>
fieldName = $(element).data('field-name') fieldName = $(element).data('field-name')
$(element).glDropdown $(element).glDropdown
data: [{id: 'no_one', text: 'No one'}, data: gon.push_access_levels
{id: 'developers', text: 'Developers + Masters'},
{id: 'masters', text: 'Masters'}]
selectable: true selectable: true
fieldName: fieldName fieldName: fieldName
clicked: _.partial(@onSelect, element) clicked: _.partial(@onSelect, element)
......
...@@ -9,7 +9,9 @@ class Projects::ProtectedBranchesController < Projects::ApplicationController ...@@ -9,7 +9,9 @@ class Projects::ProtectedBranchesController < Projects::ApplicationController
def index def index
@protected_branch = @project.protected_branches.new @protected_branch = @project.protected_branches.new
gon.push({ open_branches: @project.open_branches.map { |br| { text: br.name, id: br.name, title: br.name } } }) gon.push({ open_branches: @project.open_branches.map { |br| { text: br.name, id: br.name, title: br.name } },
push_access_levels: ProtectedBranch::PushAccessLevel.human_access_levels.map { |id, text| { id: id, text: text } },
merge_access_levels: ProtectedBranch::MergeAccessLevel.human_access_levels.map { |id, text| { id: id, text: text } } })
end end
def create def create
......
...@@ -4,6 +4,13 @@ class ProtectedBranch::MergeAccessLevel < ActiveRecord::Base ...@@ -4,6 +4,13 @@ class ProtectedBranch::MergeAccessLevel < ActiveRecord::Base
enum access_level: [:masters, :developers] enum access_level: [:masters, :developers]
def self.human_access_levels
{
"masters" => "Masters",
"developers" => "Developers + Masters"
}.with_indifferent_access
end
def check_access(user) def check_access(user)
if masters? if masters?
user.can?(:push_code, project) if project.team.master?(user) user.can?(:push_code, project) if project.team.master?(user)
...@@ -11,4 +18,8 @@ class ProtectedBranch::MergeAccessLevel < ActiveRecord::Base ...@@ -11,4 +18,8 @@ class ProtectedBranch::MergeAccessLevel < ActiveRecord::Base
user.can?(:push_code, project) if project.team.master?(user) || project.team.developer?(user) user.can?(:push_code, project) if project.team.master?(user) || project.team.developer?(user)
end end
end end
def humanize
self.class.human_access_levels[self.access_level]
end
end end
...@@ -4,6 +4,14 @@ class ProtectedBranch::PushAccessLevel < ActiveRecord::Base ...@@ -4,6 +4,14 @@ class ProtectedBranch::PushAccessLevel < ActiveRecord::Base
enum access_level: [:masters, :developers, :no_one] enum access_level: [:masters, :developers, :no_one]
def self.human_access_levels
{
"masters" => "Masters",
"developers" => "Developers + Masters",
"no_one" => "No one"
}.with_indifferent_access
end
def check_access(user) def check_access(user)
if masters? if masters?
user.can?(:push_code, project) if project.team.master?(user) user.can?(:push_code, project) if project.team.master?(user)
...@@ -13,4 +21,8 @@ class ProtectedBranch::PushAccessLevel < ActiveRecord::Base ...@@ -13,4 +21,8 @@ class ProtectedBranch::PushAccessLevel < ActiveRecord::Base
false false
end end
end end
def humanize
self.class.human_access_levels[self.access_level]
end
end end
...@@ -16,12 +16,12 @@ ...@@ -16,12 +16,12 @@
(branch was removed from repository) (branch was removed from repository)
%td %td
= hidden_field_tag "allowed_to_merge_#{protected_branch.id}", protected_branch.merge_access_level.access_level = hidden_field_tag "allowed_to_merge_#{protected_branch.id}", protected_branch.merge_access_level.access_level
= dropdown_tag(protected_branch.merge_access_level.access_level.humanize, = dropdown_tag(protected_branch.merge_access_level.humanize,
options: { title: "Allowed To Merge", toggle_class: 'allowed-to-merge', dropdown_class: 'dropdown-menu-selectable merge', options: { title: "Allowed To Merge", toggle_class: 'allowed-to-merge', dropdown_class: 'dropdown-menu-selectable merge',
data: { field_name: "allowed_to_merge_#{protected_branch.id}", url: url, id: protected_branch.id, type: "allowed_to_merge" }}) data: { field_name: "allowed_to_merge_#{protected_branch.id}", url: url, id: protected_branch.id, type: "allowed_to_merge" }})
%td %td
= hidden_field_tag "allowed_to_push_#{protected_branch.id}", protected_branch.push_access_level.access_level = hidden_field_tag "allowed_to_push_#{protected_branch.id}", protected_branch.push_access_level.access_level
= dropdown_tag(protected_branch.push_access_level.access_level.humanize, = dropdown_tag(protected_branch.push_access_level.humanize,
options: { title: "Allowed To Push", toggle_class: 'allowed-to-push', dropdown_class: 'dropdown-menu-selectable push', options: { title: "Allowed To Push", toggle_class: 'allowed-to-push', dropdown_class: 'dropdown-menu-selectable push',
data: { field_name: "allowed_to_push_#{protected_branch.id}", url: url, id: protected_branch.id, type: "allowed_to_push" }}) data: { field_name: "allowed_to_push_#{protected_branch.id}", url: url, id: protected_branch.id, type: "allowed_to_push" }})
- if can_admin_project - if can_admin_project
......
...@@ -83,11 +83,7 @@ feature 'Projected Branches', feature: true, js: true do ...@@ -83,11 +83,7 @@ feature 'Projected Branches', feature: true, js: true do
end end
describe "access control" do describe "access control" do
[ ProtectedBranch::PushAccessLevel.human_access_levels.each do |(access_type_id, access_type_name)|
['developers', 'Developers + Masters'],
['masters', 'Masters'],
['no_one', 'No one']
].each do |access_type_id, access_type_name|
it "allows creating protected branches that #{access_type_name} can push to" do it "allows creating protected branches that #{access_type_name} can push to" do
visit namespace_project_protected_branches_path(project.namespace, project) visit namespace_project_protected_branches_path(project.namespace, project)
set_protected_branch_name('master') set_protected_branch_name('master')
...@@ -120,10 +116,7 @@ feature 'Projected Branches', feature: true, js: true do ...@@ -120,10 +116,7 @@ feature 'Projected Branches', feature: true, js: true do
end end
end end
[ ProtectedBranch::MergeAccessLevel.human_access_levels.each do |(access_type_id, access_type_name)|
['developers', 'Developers + Masters'],
['masters', 'Masters']
].each do |access_type_id, access_type_name|
it "allows creating protected branches that #{access_type_name} can merge to" do it "allows creating protected branches that #{access_type_name} can merge to" do
visit namespace_project_protected_branches_path(project.namespace, project) visit namespace_project_protected_branches_path(project.namespace, project)
set_protected_branch_name('master') set_protected_branch_name('master')
......
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