Commit 4ca96a5c authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Return membership lock feature for groups

parent d3361e6d
class Projects::ProjectMembersController < Projects::ApplicationController class Projects::ProjectMembersController < Projects::ApplicationController
# Authorize # Authorize
before_filter :authorize_admin_project!, except: :leave before_filter :authorize_admin_project!, except: :leave
before_filter :check_membership_lock, only: [:create, :update, :destroy]
layout "project_settings" layout "project_settings"
...@@ -103,4 +104,10 @@ class Projects::ProjectMembersController < Projects::ApplicationController ...@@ -103,4 +104,10 @@ class Projects::ProjectMembersController < Projects::ApplicationController
AuditEventService.new(current_user, @project, options). AuditEventService.new(current_user, @project, options).
for_member(member).security_event for_member(member).security_event
end end
def check_membership_lock
if @project.group && @project.group.membership_lock
return access_denied!
end
end
end end
...@@ -36,6 +36,8 @@ class AuditEventService ...@@ -36,6 +36,8 @@ class AuditEventService
target_details: user_name, target_details: user_name,
} }
end end
self
end end
def security_event def security_event
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
%label.label.label-danger %label.label.label-danger
%strong Blocked %strong Blocked
- if current_user_can_admin_project - if current_user_can_admin_project && !membership_locked?
- unless @project.personal? && user == current_user - unless @project.personal? && user == current_user
.pull-right .pull-right
%strong= member.human_access %strong= member.human_access
......
...@@ -8,9 +8,11 @@ ...@@ -8,9 +8,11 @@
group, members with group, members with
%strong #{group_links.human_access} %strong #{group_links.human_access}
role (#{shared_group_users_count}) role (#{shared_group_users_count})
.pull-right - if current_user.can?(:manage_group, shared_group)
= link_to members_group_path(shared_group), class: 'btn btn-small' do .panel-head-actions
%i.icon-edit = link_to group_group_members_path(shared_group), class: 'btn btn-sm' do
%i.fa.fa-pencil-square-o
Edit group members
%ul.well-list %ul.well-list
- shared_group.group_members.order('access_level DESC').limit(20).each do |member| - shared_group.group_members.order('access_level DESC').limit(20).each do |member|
= render 'groups/group_members/group_member', member: member, show_controls: false, show_roles: false = render 'groups/group_members/group_member', member: member, show_controls: false, show_roles: false
......
...@@ -5,6 +5,10 @@ ...@@ -5,6 +5,10 @@
Read more about project permissions Read more about project permissions
%strong= link_to "here", help_page_path("permissions", "permissions"), class: "vlink" %strong= link_to "here", help_page_path("permissions", "permissions"), class: "vlink"
- if membership_locked?
%span.pull-right.text-warning
Adding new users is disabled at group level
%hr %hr
.clearfix.js-toggle-container .clearfix.js-toggle-container
...@@ -13,7 +17,7 @@ ...@@ -13,7 +17,7 @@
= search_field_tag :search, params[:search], { placeholder: 'Find existing member by name', class: 'form-control search-text-input input-mn-300' } = search_field_tag :search, params[:search], { placeholder: 'Find existing member by name', class: 'form-control search-text-input input-mn-300' }
= button_tag 'Search', class: 'btn' = button_tag 'Search', class: 'btn'
- if can?(current_user, :admin_project_member, @project) - if !membership_locked? && can?(current_user, :admin_project_member, @project)
%span.pull-right %span.pull-right
= button_tag class: 'btn btn-new btn-grouped js-toggle-button', type: 'button' do = button_tag class: 'btn btn-new btn-grouped js-toggle-button', type: 'button' do
Add members Add members
...@@ -28,6 +32,8 @@ ...@@ -28,6 +32,8 @@
- if @group - if @group
= render "group_members", members: @group_members = render "group_members", members: @group_members
- if @project_group_links.any?
= render "shared_group_members"
:coffeescript :coffeescript
$('form.member-search-form').on 'submit', (event) -> $('form.member-search-form').on 'submit', (event) ->
......
...@@ -29,7 +29,7 @@ class Spinach::Features::GroupsManagement < Spinach::FeatureSteps ...@@ -29,7 +29,7 @@ class Spinach::Features::GroupsManagement < Spinach::FeatureSteps
end end
step 'I can control user membership' do step 'I can control user membership' do
page.should have_link 'New project member' page.should have_button 'Add members'
page.should have_link 'Import members' page.should have_link 'Import members'
page.should have_selector '#project_member_access_level', text: 'Master' page.should have_selector '#project_member_access_level', text: 'Master'
end end
...@@ -53,12 +53,12 @@ class Spinach::Features::GroupsManagement < Spinach::FeatureSteps ...@@ -53,12 +53,12 @@ class Spinach::Features::GroupsManagement < Spinach::FeatureSteps
@project = Project.find_by(name: "Open") @project = Project.find_by(name: "Open")
click_link 'Projects' click_link 'Projects'
link = "/#{@project.path_with_namespace}/team" link = "/#{@project.path_with_namespace}/project_members"
find(:xpath, "//a[@href=\"#{link}\"]").click find(:xpath, "//a[@href=\"#{link}\"]").click
end end
step 'I cannot control user membership from project page' do step 'I cannot control user membership from project page' do
page.should_not have_link 'New project member' page.should_not have_button 'Add members'
page.should_not have_link 'Import members' page.should_not have_link 'Import members'
page.should have_selector '#project_member_access_level', text: 'Master' page.should have_selector '#project_member_access_level', text: 'Master'
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment