Commit 4ee05c1c041534ecc40d3f132a04523784de49c2
1 parent
b2294d44
Exists in
master
and in
23 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,7 +3,10 @@ class MembershipsController < MyProfileController | ||
| 3 | protect 'manage_memberships', :profile | 3 | protect 'manage_memberships', :profile |
| 4 | 4 | ||
| 5 | def index | 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 | @filter = params[:filter_type].blank? ? nil : params[:filter_type] | 10 | @filter = params[:filter_type].blank? ? nil : params[:filter_type] |
| 8 | begin | 11 | begin |
| 9 | @memberships = @filter.nil? ? profile.memberships : profile.memberships_by_role(environment.roles.find(@filter)) | 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,4 +318,20 @@ class MembershipsControllerTest < ActionController::TestCase | ||
| 318 | assert_not_includes assigns(:roles), role2 | 318 | assert_not_includes assigns(:roles), role2 |
| 319 | end | 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 | end | 337 | end |