diff --git a/app/helpers/role_helper.rb b/app/helpers/role_helper.rb index 244d2a2..965276b 100644 --- a/app/helpers/role_helper.rb +++ b/app/helpers/role_helper.rb @@ -1,2 +1,7 @@ module RoleHelper + + def role_available_permissions(role) + role.kind == "Environment" ? ['Environment', 'Profile'] : [role.kind] + end + end diff --git a/app/views/role/_form.html.erb b/app/views/role/_form.html.erb index 1151c03..bfdb946 100644 --- a/app/views/role/_form.html.erb +++ b/app/views/role/_form.html.erb @@ -6,10 +6,14 @@ <%= required f.text_field(:name) %> -

<%= _('Permissions:') %>

- <% permissions.keys.each do |p| %> - <%= check_box_tag("role[permissions][]", p, role.has_permission?(p), { :id => p }) %> - <%= content_tag(:label, permission_name(p), { :for => p }) %>
+ <% permissions.each do |key| %> +

+

<%= _('%s Permissions:' % key) %>

+ <% ActiveRecord::Base::PERMISSIONS[key].keys.each do |p| %> + <%= check_box_tag("role[permissions][]", p, role.has_permission?(p), { :id => p }) %> + <%= content_tag(:label, permission_name(p), { :for => p }) %>
+ <% end %> +
<% end %> <% button_bar do %> diff --git a/app/views/role/edit.html.erb b/app/views/role/edit.html.erb index a8ff970..8672e37 100644 --- a/app/views/role/edit.html.erb +++ b/app/views/role/edit.html.erb @@ -1,3 +1,3 @@

<%= _("Editing #{@role.name}") %>

-<%= render :partial => 'form', :locals => { :mode => :edit, :role => @role, :permissions => ActiveRecord::Base::PERMISSIONS[@role.kind] } %> +<%= render :partial => 'form', :locals => { :mode => :edit, :role => @role, :permissions => role_available_permissions(@role) } %> diff --git a/app/views/role/new.html.erb b/app/views/role/new.html.erb index 38c32d7..2a09d1d 100644 --- a/app/views/role/new.html.erb +++ b/app/views/role/new.html.erb @@ -1,3 +1,3 @@

<%= _("Create a new role") %>

-<%= render :partial => 'form', :locals => { :mode => :create, :role => @role, :permissions => ActiveRecord::Base::PERMISSIONS[@role.kind] } %> +<%= render :partial => 'form', :locals => { :mode => :create, :role => @role, :permissions => role_available_permissions(@role) } %> diff --git a/test/functional/role_controller_test.rb b/test/functional/role_controller_test.rb index b343b60..1ea169e 100644 --- a/test/functional/role_controller_test.rb +++ b/test/functional/role_controller_test.rb @@ -78,4 +78,24 @@ class RoleControllerTest < ActionController::TestCase get :edit, :id => role.id end end + + should 'display permissions for both environment and profile when editing a environment role' do + role = Role.create!(:name => 'environment_role', :key => 'environment_role', :environment => Environment.default) + get :edit, :id => role.id + ['Environment', 'Profile'].each do |key| + ActiveRecord::Base::PERMISSIONS[key].each do |permission, value| + assert_select ".permissions.#{key.downcase} input##{permission}" + end + end + end + + should 'display permissions only for profile when editing a profile role' do + role = Role.create!(:name => 'profile_role', :key => 'profile_role', :environment => Environment.default) + get :edit, :id => role.id + ActiveRecord::Base::PERMISSIONS['Profile'].each do |permission, value| + assert_select "input##{permission}" + end + assert_select ".permissions.environment", false + end + end -- libgit2 0.21.2