diff --git a/app/views/shared/_list_groups.html.erb b/app/views/shared/_list_groups.html.erb
index 083fb8d..2878d97 100644
--- a/app/views/shared/_list_groups.html.erb
+++ b/app/views/shared/_list_groups.html.erb
@@ -12,7 +12,9 @@
<%= _('Members: %s') % group.members_count.to_s %>
<%= _('Created at: %s') % show_date(group.created_at) unless group.enterprise? %>
<% button_bar do %>
- <%= button 'menu-ctrl-panel', _('Control panel of this group'), group.admin_url %>
+ <% if user.has_permission?(:edit_profile, group) %>
+ <%= button 'menu-ctrl-panel', _('Control panel of this group'), group.admin_url %>
+ <% end %>
<%= button 'menu-logout', _('Leave community'), group.leave_url(true), :class => 'leave-community' %>
<% if (group.community? && user.has_permission?(:destroy_profile, group)) %>
<%= button 'delete', _('Remove'), { :controller => 'profile_editor', :action => 'destroy_profile', :profile => group.identifier } %>
diff --git a/test/functional/memberships_controller_test.rb b/test/functional/memberships_controller_test.rb
index 766312c..4146dfd 100644
--- a/test/functional/memberships_controller_test.rb
+++ b/test/functional/memberships_controller_test.rb
@@ -6,7 +6,7 @@ require 'memberships_controller'
class MembershipsController; def rescue_action(e) raise e end; end
class MembershipsControllerTest < ActionController::TestCase
-
+
include ApplicationHelper
def setup
@@ -22,7 +22,7 @@ class MembershipsControllerTest < ActionController::TestCase
def test_local_files_reference
assert_local_files_reference :get, :index, :profile => profile.identifier
end
-
+
def test_valid_xhtml
assert_valid_xhtml
end
@@ -245,4 +245,23 @@ class MembershipsControllerTest < ActionController::TestCase
assert_tag :tag => 'input', :attributes => {:id => 'community_plugin2', :type => 'hidden', :value => 'Plugin 2'}
end
+ should 'only display control panel link to members with permission' do
+ c1 = fast_create(Community, :name => 'My own community')
+ c2 = fast_create(Community, :name => 'Not my community')
+
+ owner = fast_create(Person)
+ c2.add_admin(owner)
+
+ person = Person['testuser']
+ c1.add_admin(person)
+ c2.add_member(person)
+
+ login_as('testuser')
+ get :index, :profile => 'testuser'
+
+ assert_template 'index'
+ assert_no_tag :tag => 'a', :attributes => { :href => "/myprofile/#{c2.identifier}" }
+ assert_tag :tag => 'a', :attributes => { :href => "/myprofile/#{c1.identifier}" }
+ end
+
end
--
libgit2 0.21.2