diff --git a/app/controllers/my_profile/memberships_controller.rb b/app/controllers/my_profile/memberships_controller.rb index 8adcd8c..9e21eb2 100644 --- a/app/controllers/my_profile/memberships_controller.rb +++ b/app/controllers/my_profile/memberships_controller.rb @@ -3,7 +3,10 @@ class MembershipsController < MyProfileController protect 'manage_memberships', :profile def index - @roles = environment.roles.select{ |role| profile.role_assignments.find_by_role_id(role.id).present? } + @roles = environment.roles.select do |role| + ra = profile.role_assignments.find_by_role_id(role.id) + ra.present? && ra.resource_type == 'Profile' + end @filter = params[:filter_type].blank? ? nil : params[:filter_type] begin @memberships = @filter.nil? ? profile.memberships : profile.memberships_by_role(environment.roles.find(@filter)) diff --git a/test/functional/memberships_controller_test.rb b/test/functional/memberships_controller_test.rb index 45a60af..dff587f 100644 --- a/test/functional/memberships_controller_test.rb +++ b/test/functional/memberships_controller_test.rb @@ -318,4 +318,20 @@ class MembershipsControllerTest < ActionController::TestCase assert_not_includes assigns(:roles), role2 end + should 'only show roles related to profiles' do + c1 = fast_create(Community, :name => 'First community') + role1 = Role.create!(:name => 'profile_role', :permissions => ['edit_profile'], :environment => c1.environment) + role2 = Role.create!(:name => 'environment_role', :permissions => ['edit_profile'], :environment => c1.environment) + + person = Person['testuser'] + c1.add_member(person) + person.add_role(role2, c1.environment) + person.add_role(role1, c1) + + login_as('testuser') + get :index, :profile => 'testuser' + + assert_includes assigns(:roles), role1 + assert_not_includes assigns(:roles), role2 + end end -- libgit2 0.21.2