Commit 4ee05c1c041534ecc40d3f132a04523784de49c2
1 parent
b2294d44
Exists in
master
and in
29 other branches
Filter only profile related roles
Showing
2 changed files
with
20 additions
and
1 deletions
Show diff stats
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 | ... | ... |