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