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