Group master can manage group members
Created by: timmjd
In the current implementation only Group Owner can manage users within a group.
This change will grand Group Master to manage users within a group. It will also prevent a master to add a user with a higher access role then it's own (Master cannot create Owner, only Owner can create Owner).
Use case for this change is a distributed teams where you have localized managers who are responsible for group setup but should not be able to do operations like deletion of repositories.
Merge request reports
Activity
Created by: TeatroIO
I've prepared a stage. Click to open.
By Administrator on 2014-06-28T09:45:55 (imported from GitLab project)
By Administrator on 2014-06-28T09:45:55 (imported from GitLab)
74 74 75 75 @members = @members.order('group_access DESC').page(params[:page]).per(50) 76 76 @users_group = UsersGroup.new 77 78 if current_user.nil? 79 return 74 74 75 75 @members = @members.order('group_access DESC').page(params[:page]).per(50) 76 76 @users_group = UsersGroup.new 77 78 if current_user.nil? 79 return 80 end 74 74 75 75 @members = @members.order('group_access DESC').page(params[:page]).per(50) 76 76 @users_group = UsersGroup.new 77 78 if current_user.nil? 79 return 8 8 9 9 def create 10 @group.add_users(params[:user_ids].split(','), params[:group_access]) 10 @current_users_group_roles = UsersGroup.where(user: current_user, group: group).first.access_roles 11 11 12 redirect_to members_group_path(@group), notice: 'Users were successfully added.' 12 if @current_users_group_roles.has_value?(params[:group_access].to_i) 13 @group.add_users(params[:user_ids].split(','), params[:group_access]) 14 redirect_to members_group_path(@group), notice: 'Users were successfully added.' 15 else 16 redirect_to members_group_path(@group) 17 end 13 18 end 14 19 15 20 def update 21 @current_users_group_roles = UsersGroup.where(user: current_user, group: group).first.access_roles 7 7 layout 'group' 8 8 9 9 def create 10 @group.add_users(params[:user_ids].split(','), params[:group_access]) 10 @current_users_group_roles = UsersGroup.where(user: current_user, group: group).first.access_roles 11 11 12 redirect_to members_group_path(@group), notice: 'Users were successfully added.' 12 if @current_users_group_roles.has_value?(params[:group_access].to_i) 13 @group.add_users(params[:user_ids].split(','), params[:group_access]) 14 redirect_to members_group_path(@group), notice: 'Users were successfully added.' 7 7 layout 'group' 8 8 9 9 def create 10 @group.add_users(params[:user_ids].split(','), params[:group_access]) 10 @current_users_group_roles = UsersGroup.where(user: current_user, group: group).first.access_roles 11 11 12 redirect_to members_group_path(@group), notice: 'Users were successfully added.' 12 if @current_users_group_roles.has_value?(params[:group_access].to_i) 13 @group.add_users(params[:user_ids].split(','), params[:group_access]) 14 redirect_to members_group_path(@group), notice: 'Users were successfully added.' 15 else 12 if @current_users_group_roles.has_value?(params[:group_access].to_i) 13 @group.add_users(params[:user_ids].split(','), params[:group_access]) 14 redirect_to members_group_path(@group), notice: 'Users were successfully added.' 15 else 16 redirect_to members_group_path(@group) 17 end 13 18 end 14 19 15 20 def update 21 @current_users_group_roles = UsersGroup.where(user: current_user, group: group).first.access_roles 16 22 @member = @group.users_groups.find(params[:id]) 17 @member.update_attributes(member_params) 23 24 if @current_users_group_roles.has_value?(params[:users_group]["group_access"].to_i) 25 @member.update_attributes(member_params) 26 end 74 74 75 75 @members = @members.order('group_access DESC').page(params[:page]).per(50) 76 76 @users_group = UsersGroup.new 77 78 if current_user.nil? 79 return 74 74 75 75 @members = @members.order('group_access DESC').page(params[:page]).per(50) 76 76 @users_group = UsersGroup.new 77 78 if current_user.nil? 79 return 7 7 layout 'group' 8 8 9 9 def create 10 @group.add_users(params[:user_ids].split(','), params[:group_access]) 10 @current_users_group_roles = UsersGroup.where(user: current_user, group: group).first.access_roles Created by: jvanbaarsen
What do you think about:
current_users_group = UsersGroup.where(user: current_user, group: group).first
? Might be a little bit more expressiveBy Administrator on 2014-08-02T13:11:56 (imported from GitLab project)
By Administrator on 2014-08-02T13:11:56 (imported from GitLab)
9 9 def create 10 @group.add_users(params[:user_ids].split(','), params[:group_access]) 10 @current_users_group_roles = UsersGroup.where(user: current_user, group: group).first.access_roles 11 11 12 redirect_to members_group_path(@group), notice: 'Users were successfully added.' 12 if @current_users_group_roles.has_value?(params[:group_access].to_i) 13 @group.add_users(params[:user_ids].split(','), params[:group_access]) 14 redirect_to members_group_path(@group), notice: 'Users were successfully added.' 15 else 16 redirect_to members_group_path(@group) 17 end 13 18 end 14 19 15 20 def update 21 @current_users_group_roles = UsersGroup.where(user: current_user, group: group).first.access_roles 16 22 @member = @group.users_groups.find(params[:id]) 7 7 layout 'group' 8 8 9 9 def create 10 @group.add_users(params[:user_ids].split(','), params[:group_access]) 10 @current_users_group_roles = UsersGroup.where(user: current_user, group: group).first.access_roles 8 8 9 9 def create 10 @group.add_users(params[:user_ids].split(','), params[:group_access]) 10 @current_users_group_roles = UsersGroup.where(user: current_user, group: group).first.access_roles 11 11 12 redirect_to members_group_path(@group), notice: 'Users were successfully added.' 12 if @current_users_group_roles.has_value?(params[:group_access].to_i) 13 @group.add_users(params[:user_ids].split(','), params[:group_access]) 14 redirect_to members_group_path(@group), notice: 'Users were successfully added.' 15 else 16 redirect_to members_group_path(@group) 17 end 13 18 end 14 19 15 20 def update 21 @current_users_group_roles = UsersGroup.where(user: current_user, group: group).first.access_roles 74 74 75 75 @members = @members.order('group_access DESC').page(params[:page]).per(50) 76 76 @users_group = UsersGroup.new 77 78 if current_user.nil? 79 return 80 end 81 82 current_users_group = group.users_groups.where(user_id: current_user.id).first 83 @current_users_group_roles = {} 74 74 75 75 @members = @members.order('group_access DESC').page(params[:page]).per(50) 76 76 @users_group = UsersGroup.new 77 78 if current_user.nil? 79 return 80 end 81 82 current_users_group = group.users_groups.where(user_id: current_user.id).first 74 74 75 75 @members = @members.order('group_access DESC').page(params[:page]).per(50) 76 76 @users_group = UsersGroup.new 77 78 if current_user.nil? 79 return 80 end 81 82 current_users_group = group.users_groups.where(user_id: current_user.id).first 83 @current_users_group_roles = {} Created by: timmjd
It seems that the current test setup will fail random If I tun them multiple times they will past. Also I don't think the failure is related to the content of this pull request
By Administrator on 2014-07-18T20:31:36 (imported from GitLab project)
By Administrator on 2014-07-18T20:31:36 (imported from GitLab)
7 7 layout 'group' 8 8 9 9 def create 10 @group.add_users(params[:user_ids].split(','), params[:group_access]) 10 @current_users_group_roles = UsersGroup.where(user: current_user, group: group).first.access_roles 11 11 12 redirect_to members_group_path(@group), notice: 'Users were successfully added.' 12 if @current_users_group_roles.has_value?(params[:group_access].to_i) 13 @group.add_users(params[:user_ids].split(','), params[:group_access]) 14 redirect_to members_group_path(@group), notice: 'Users were successfully added.' 113 113 response.status.should == 200 114 114 end 115 115 116 it "should not remove a group if not an owner" do 116 it "should not remove a group if a developer" do 45 45 group_access 46 46 end 47 47 48 def access_roles 49 Gitlab::Access.options_with_owner.select { |k, v| v <= group_access } 11 11 12 redirect_to members_group_path(@group), notice: 'Users were successfully added.' 12 if @current_users_group_roles.has_value?(params[:group_access].to_i) 13 @group.add_users(params[:user_ids].split(','), params[:group_access]) 14 redirect_to members_group_path(@group), notice: 'Users were successfully added.' 15 else 16 redirect_to members_group_path(@group) 17 end 13 18 end 14 19 15 20 def update 21 @current_users_group_roles = UsersGroup.where(user: current_user, group: group).first.access_roles 16 22 @member = @group.users_groups.find(params[:id]) 17 @member.update_attributes(member_params) 23 24 if @current_users_group_roles.has_value?(params[:users_group]["group_access"].to_i) 194 194 # Only group masters and group owners can create new projects in group 195 195 if group.has_master?(user) || group.has_owner?(user) || user.admin? 196 196 rules += [ 197 :manage_group, 45 45 group_access 46 46 end 47 47 48 def access_roles 49 Gitlab::Access.options_with_owner.select { |k, v| v <= group_access } 8 8 9 9 def create 10 @group.add_users(params[:user_ids].split(','), params[:group_access]) 10 @current_users_group_roles = UsersGroup.where(user: current_user, group: group).first.access_roles 11 11 12 redirect_to members_group_path(@group), notice: 'Users were successfully added.' 12 if @current_users_group_roles.has_value?(params[:group_access].to_i) 13 @group.add_users(params[:user_ids].split(','), params[:group_access]) 14 redirect_to members_group_path(@group), notice: 'Users were successfully added.' 15 else 16 redirect_to members_group_path(@group) 17 end 13 18 end 14 19 15 20 def update 21 @current_users_group_roles = UsersGroup.where(user: current_user, group: group).first.access_roles Created by: dzaporozhets
Is it possible a case when
UsersGroup.where(user: current_user, group: group).first
returns nil? Ex whenadmin
without group membership access this page? Because in this casenil.access_roles
will raise exceptionBy Administrator on 2014-09-01T11:22:39 (imported from GitLab project)
By Administrator on 2014-09-01T11:22:39 (imported from GitLab)
Created by: dblessing
This merge request has been closed because a request for more information has not been reacted to for more than 2 weeks. If you respond and conform to the merge request guidelines in our contributing guidelines we will reopen this merge request.
By Administrator on 2014-11-11T14:24:06 (imported from GitLab project)
By Administrator on 2014-11-11T14:24:06 (imported from GitLab)