Commit 4ee05c1c041534ecc40d3f132a04523784de49c2

Authored by Larissa Reis
1 parent b2294d44

Filter only profile related roles

app/controllers/my_profile/memberships_controller.rb
... ... @@ -3,7 +3,10 @@ class MembershipsController < MyProfileController
3 3 protect 'manage_memberships', :profile
4 4  
5 5 def index
6   - @roles = environment.roles.select{ |role| profile.role_assignments.find_by_role_id(role.id).present? }
  6 + @roles = environment.roles.select do |role|
  7 + ra = profile.role_assignments.find_by_role_id(role.id)
  8 + ra.present? && ra.resource_type == 'Profile'
  9 + end
7 10 @filter = params[:filter_type].blank? ? nil : params[:filter_type]
8 11 begin
9 12 @memberships = @filter.nil? ? profile.memberships : profile.memberships_by_role(environment.roles.find(@filter))
... ...
test/functional/memberships_controller_test.rb
... ... @@ -318,4 +318,20 @@ class MembershipsControllerTest < ActionController::TestCase
318 318 assert_not_includes assigns(:roles), role2
319 319 end
320 320  
  321 + should 'only show roles related to profiles' do
  322 + c1 = fast_create(Community, :name => 'First community')
  323 + role1 = Role.create!(:name => 'profile_role', :permissions => ['edit_profile'], :environment => c1.environment)
  324 + role2 = Role.create!(:name => 'environment_role', :permissions => ['edit_profile'], :environment => c1.environment)
  325 +
  326 + person = Person['testuser']
  327 + c1.add_member(person)
  328 + person.add_role(role2, c1.environment)
  329 + person.add_role(role1, c1)
  330 +
  331 + login_as('testuser')
  332 + get :index, :profile => 'testuser'
  333 +
  334 + assert_includes assigns(:roles), role1
  335 + assert_not_includes assigns(:roles), role2
  336 + end
321 337 end
... ...