diff --git a/app/controllers/my_profile/profile_roles_controller.rb b/app/controllers/my_profile/profile_roles_controller.rb
index 9d83731..9b07242 100644
--- a/app/controllers/my_profile/profile_roles_controller.rb
+++ b/app/controllers/my_profile/profile_roles_controller.rb
@@ -1,7 +1,7 @@
class ProfileRolesController < MyProfileController
- include RoleHelper
-
+ protect 'manage_custom_roles', :profile
+
def index
@roles = Profile::Roles.organization_custom_roles(environment.id, profile.id)
end
diff --git a/app/models/profile.rb b/app/models/profile.rb
index 317a401..62a67b8 100644
--- a/app/models/profile.rb
+++ b/app/models/profile.rb
@@ -43,7 +43,7 @@ class Profile < ActiveRecord::Base
find_role('editor', env_id)
end
def self.organization_member_roles(env_id)
- all_roles(env_id, nil).select{ |r| r.key.match(/^profile_/) unless r.key.blank? }
+ all_roles(env_id).select{ |r| r.key.match(/^profile_/) unless r.key.blank? }
end
def self.organization_custom_roles(env_id, profile_id)
all_roles(env_id, profile_id).select{ |r| r.key.match(/^profile_/) unless r.key.blank? }
@@ -51,7 +51,7 @@ class Profile < ActiveRecord::Base
def self.organization_all_roles(env_id, profile_id)
self.organization_member_roles(env_id) + self.organization_custom_roles(env_id, profile_id)
end
- def self.all_roles(env_id, profile_id)
+ def self.all_roles(env_id, profile_id=nil)
Role.all :conditions => { :profile_id => profile_id, :environment_id => env_id }
end
def self.method_missing(m, *args, &block)
@@ -81,6 +81,7 @@ class Profile < ActiveRecord::Base
'publish_content' => N_('Publish content'),
'invite_members' => N_('Invite members'),
'send_mail_to_members' => N_('Send e-Mail to members'),
+ 'manage_custom_roles' => N_('Manage custom roles'),
}
acts_as_accessible
diff --git a/app/views/tasks/_add_member_accept_details.html.erb b/app/views/tasks/_add_member_accept_details.html.erb
index 71e5cee..e3470cc 100644
--- a/app/views/tasks/_add_member_accept_details.html.erb
+++ b/app/views/tasks/_add_member_accept_details.html.erb
@@ -1,8 +1,7 @@
<%= content = _("Roles:")+"
"
-roles = Profile::Roles.organization_member_roles(task.target.environment.id)
+roles = Profile::Roles.organization_all_roles(task.target.environment.id)
roles.each do |role|
content += labelled_check_box(role.name, "tasks[#{task.id}][task][roles][]", role.id, false)+"
"
end
content_tag('p', content, :class => 'member-classify-suggestion')
%>
-
diff --git a/db/migrate/20150210143723_add_custom_roles_permission_to_admin_roles.rb b/db/migrate/20150210143723_add_custom_roles_permission_to_admin_roles.rb
new file mode 100644
index 0000000..b2ad9b0
--- /dev/null
+++ b/db/migrate/20150210143723_add_custom_roles_permission_to_admin_roles.rb
@@ -0,0 +1,18 @@
+class AddCustomRolesPermissionToAdminRoles < ActiveRecord::Migration
+ def self.up
+ environment_admin = Role.find_by_key("environment_administrator")
+ profile_admin = Role.find_by_key("profile_admin")
+ environment_admin.permissions.append("manage_custom_roles")
+ profile_admin.permissions.append("manage_custom_roles")
+ environment_admin.save!
+ profile_admin.save!
+ end
+ def self.down
+ environment_admin = Role.find_by_key("environment_administrator")
+ profile_admin = Role.find_by_key("profile_admin")
+ environment_admin.permissions.delete("manage_custom_roles")
+ profile_admin.permissions.delete("manage_custom_roles")
+ environment_admin.save!
+ profile_admin.save!
+ end
+end
diff --git a/test/functional/profile_roles_controller_test.rb b/test/functional/profile_roles_controller_test.rb
new file mode 100644
index 0000000..01efb2b
--- /dev/null
+++ b/test/functional/profile_roles_controller_test.rb
@@ -0,0 +1,32 @@
+class ProfileRolesController < ActionController::TestCase
+
+ def setup
+ @controller = RoleController.new
+ @request = ActionController::TestRequest.new
+ @response = ActionController::TestResponse.new
+ @role = Role.find(:first)
+ login_as(:ze)
+ end
+
+ should 'create a custom role' do
+
+
+ end
+
+ should 'delete a custom role not used' do
+
+ end
+
+ should 'delete a custom role being used' do
+
+ end
+
+ should 'assign a custom role to single user' do
+
+ end
+
+ should 'replace a role with a custom role' do
+
+ end
+ role = Role.create!(:name => 'environment_role', :key => 'environment_role', :environment => Environment.default)
+end
--
libgit2 0.21.2