summaryrefslogtreecommitdiff
path: root/app/controllers/projects/project_members_controller.rb
diff options
context:
space:
mode:
authorPhil Hughes <me@iamphill.com>2016-09-06 16:48:48 +0100
committerPhil Hughes <me@iamphill.com>2016-09-13 08:44:59 +0100
commit2b41db9215f322ba61113a7bef2f49da157bbd53 (patch)
treef644a760192d0005c4e325e3d67c25f9706bd1f6 /app/controllers/projects/project_members_controller.rb
parent73c4da1780c5086543eb998d5bc9cbd632ef6576 (diff)
downloadgitlab-ce-2b41db9215f322ba61113a7bef2f49da157bbd53.tar.gz
Search project groups
Diffstat (limited to 'app/controllers/projects/project_members_controller.rb')
-rw-r--r--app/controllers/projects/project_members_controller.rb49
1 files changed, 41 insertions, 8 deletions
diff --git a/app/controllers/projects/project_members_controller.rb b/app/controllers/projects/project_members_controller.rb
index bf6ac25266a..ac83377148a 100644
--- a/app/controllers/projects/project_members_controller.rb
+++ b/app/controllers/projects/project_members_controller.rb
@@ -10,23 +10,30 @@ class Projects::ProjectMembersController < Projects::ApplicationController
project_members = @project.project_members
project_members = project_members.non_invite unless can?(current_user, :admin_project, @project)
- if params[:search].present?
- users = @project.users.search(params[:search]).to_a
- project_members = project_members.where(user_id: users)
- end
-
- members_ids = project_members.pluck(:id)
-
group = @project.group
+
if group
group_members = group.group_members
group_members = group_members.non_invite unless can?(current_user, :admin_project, @project)
+ end
+
+ if params[:search].present?
+ groups_id = @groups.pluck(:group_id)
+ groups = Group.where(id: groups_id).search(params[:search]).to_a
+ @groups = @project.project_group_links.where(group_id: groups)
+
+ users = @project.users.search(params[:search]).to_a
+ project_members = project_members.where(user_id: users)
- if params[:search].present?
+ if group_members
users = group.users.search(params[:search]).to_a
group_members = group_members.where(user_id: users)
end
+ end
+ members_ids = project_members.pluck(:id)
+
+ if group_members
members_ids << group_members.pluck(:id)
end
@@ -48,6 +55,17 @@ class Projects::ProjectMembersController < Projects::ApplicationController
current_user: current_user
)
+ group_ids = params[:group_ids].split(',')
+ groups = Group.where(id: group_ids)
+
+ groups.each do |group|
+ project.project_group_links.create(
+ group: group,
+ group_access: params[:access_level],
+ expires_at: params[:expires_at]
+ )
+ end
+
redirect_to namespace_project_project_members_path(@project.namespace, @project)
end
@@ -101,6 +119,21 @@ class Projects::ProjectMembersController < Projects::ApplicationController
notice: notice)
end
+ def options
+ users = User.all
+ users = users.search(params[:search]) if params[:search].present?
+ users = users.page(1)
+
+ groups = Group.all
+ groups = groups.search(params[:search]) if params[:search].present?
+ groups = groups.page(1)
+
+ render json: {
+ Groups: groups.as_json(only: [:id, :name], methods: [:avatar_url]),
+ Users: users.as_json(only: [:id, :name, :username], methods: [:avatar_url]),
+ }
+ end
+
protected
def member_params