From 44b94f7c26a6f8d5582eca9c25121dd37418bb2e Mon Sep 17 00:00:00 2001 From: Marin Jankovski Date: Mon, 29 Sep 2014 13:36:28 +0200 Subject: [PATCH 1/3] Do not show ldap users in add members dropdown. --- app/assets/javascripts/api.js.coffee | 3 ++- app/assets/javascripts/users_select.js.coffee | 4 +++- app/helpers/selects_helper.rb | 1 + app/views/admin/groups/show.html.haml | 2 +- app/views/groups/_new_group_member.html.haml | 2 +- app/views/projects/team_members/_form.html.haml | 2 +- lib/api/users.rb | 3 +++ 7 files changed, 12 insertions(+), 5 deletions(-) diff --git a/app/assets/javascripts/api.js.coffee b/app/assets/javascripts/api.js.coffee index f01db6bcc7..0e7494cb2c 100644 --- a/app/assets/javascripts/api.js.coffee +++ b/app/assets/javascripts/api.js.coffee @@ -38,7 +38,7 @@ # Return users list. Filtered by query # Only active users retrieved - users: (query, callback) -> + users: (query, skip_ldap, callback) -> url = Api.buildUrl(Api.users_path) $.ajax( @@ -48,6 +48,7 @@ search: query per_page: 20 active: true + skip_ldap: skip_ldap dataType: "json" ).done (users) -> callback(users) diff --git a/app/assets/javascripts/users_select.js.coffee b/app/assets/javascripts/users_select.js.coffee index 86318bd7d9..08e40a1c41 100644 --- a/app/assets/javascripts/users_select.js.coffee +++ b/app/assets/javascripts/users_select.js.coffee @@ -15,12 +15,14 @@ $ -> user.name $('.ajax-users-select').each (i, select) -> + skip_ldap = $(select).hasClass('skip_ldap') + $(select).select2 placeholder: "Search for a user" multiple: $(select).hasClass('multiselect') minimumInputLength: 0 query: (query) -> - Api.users query.term, (users) -> + Api.users query.term, skip_ldap, (users) -> data = { results: users } query.callback(data) diff --git a/app/helpers/selects_helper.rb b/app/helpers/selects_helper.rb index ab24367c45..c04e214e40 100644 --- a/app/helpers/selects_helper.rb +++ b/app/helpers/selects_helper.rb @@ -2,6 +2,7 @@ module SelectsHelper def users_select_tag(id, opts = {}) css_class = "ajax-users-select " css_class << "multiselect " if opts[:multiple] + css_class << "skip_ldap " if opts[:skip_ldap] css_class << (opts[:class] || '') value = opts[:selected] || '' diff --git a/app/views/admin/groups/show.html.haml b/app/views/admin/groups/show.html.haml index 974324272c..39ccca9d2b 100644 --- a/app/views/admin/groups/show.html.haml +++ b/app/views/admin/groups/show.html.haml @@ -87,7 +87,7 @@ = form_tag project_teams_update_admin_group_path(@group), id: "new_team_member", class: "bulk_import", method: :put do %div - = users_select_tag(:user_ids, multiple: true) + = users_select_tag(:user_ids, { multiple: true, skip_ldap: true }) %div.prepend-top-10 = select_tag :group_access, options_for_select(UsersGroup.group_access_roles), class: "project-access-select select2" %hr diff --git a/app/views/groups/_new_group_member.html.haml b/app/views/groups/_new_group_member.html.haml index 3ab9276c54..14f982b2c5 100644 --- a/app/views/groups/_new_group_member.html.haml +++ b/app/views/groups/_new_group_member.html.haml @@ -1,7 +1,7 @@ = form_for @users_group, url: group_users_groups_path(@group), html: { class: 'form-horizontal users-group-form' } do |f| .form-group = f.label :user_ids, "People", class: 'control-label' - .col-sm-10= users_select_tag(:user_ids, multiple: true, class: 'input-large') + .col-sm-10= users_select_tag(:user_ids, { multiple: true, skip_ldap: true , class: 'input-large' }) .form-group = f.label :group_access, "Group Access", class: 'control-label' diff --git a/app/views/projects/team_members/_form.html.haml b/app/views/projects/team_members/_form.html.haml index 5998e4c6b4..5c16f4780d 100644 --- a/app/views/projects/team_members/_form.html.haml +++ b/app/views/projects/team_members/_form.html.haml @@ -12,7 +12,7 @@ .form-group = f.label :user_ids, "People", class: 'control-label' .col-sm-10 - = users_select_tag(:user_ids, multiple: true) + = users_select_tag(:user_ids, { multiple: true, skip_ldap: true }) %p 2. Set access level for them .form-group diff --git a/lib/api/users.rb b/lib/api/users.rb index 69553f1639..857080b8fa 100644 --- a/lib/api/users.rb +++ b/lib/api/users.rb @@ -9,8 +9,11 @@ module API # Example Request: # GET /users get do + skip_ldap = params[:skip_ldap].present? && params[:skip_ldap] == 'true' + @users = User.all @users = @users.active if params[:active].present? + @users = @users.where('provider != ? OR provider IS NULL', 'ldap') if skip_ldap @users = @users.search(params[:search]) if params[:search].present? @users = paginate @users From 336b7b8783cb8297e37aa33dca2fe7cb887791ad Mon Sep 17 00:00:00 2001 From: Marin Jankovski Date: Wed, 1 Oct 2014 14:59:37 +0200 Subject: [PATCH 2/3] Disable ldap user showing only if group is synced with LDAP group. --- app/views/admin/groups/show.html.haml | 2 +- app/views/groups/_new_group_member.html.haml | 2 +- app/views/projects/team_members/_form.html.haml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/views/admin/groups/show.html.haml b/app/views/admin/groups/show.html.haml index 39ccca9d2b..12fc700d1e 100644 --- a/app/views/admin/groups/show.html.haml +++ b/app/views/admin/groups/show.html.haml @@ -87,7 +87,7 @@ = form_tag project_teams_update_admin_group_path(@group), id: "new_team_member", class: "bulk_import", method: :put do %div - = users_select_tag(:user_ids, { multiple: true, skip_ldap: true }) + = users_select_tag(:user_ids, { multiple: true, skip_ldap: @group.ldap_cn.present? }) %div.prepend-top-10 = select_tag :group_access, options_for_select(UsersGroup.group_access_roles), class: "project-access-select select2" %hr diff --git a/app/views/groups/_new_group_member.html.haml b/app/views/groups/_new_group_member.html.haml index 14f982b2c5..9a8664a7e7 100644 --- a/app/views/groups/_new_group_member.html.haml +++ b/app/views/groups/_new_group_member.html.haml @@ -1,7 +1,7 @@ = form_for @users_group, url: group_users_groups_path(@group), html: { class: 'form-horizontal users-group-form' } do |f| .form-group = f.label :user_ids, "People", class: 'control-label' - .col-sm-10= users_select_tag(:user_ids, { multiple: true, skip_ldap: true , class: 'input-large' }) + .col-sm-10= users_select_tag(:user_ids, { multiple: true, skip_ldap: @group.ldap_cn.present? , class: 'input-large' }) .form-group = f.label :group_access, "Group Access", class: 'control-label' diff --git a/app/views/projects/team_members/_form.html.haml b/app/views/projects/team_members/_form.html.haml index 5c16f4780d..1e4953b501 100644 --- a/app/views/projects/team_members/_form.html.haml +++ b/app/views/projects/team_members/_form.html.haml @@ -12,7 +12,7 @@ .form-group = f.label :user_ids, "People", class: 'control-label' .col-sm-10 - = users_select_tag(:user_ids, { multiple: true, skip_ldap: true }) + = users_select_tag(:user_ids, { multiple: true, skip_ldap: @project.group.ldap_cn.present? }) %p 2. Set access level for them .form-group From db5497afe8cc83adc5e2b96eba081755e77973a5 Mon Sep 17 00:00:00 2001 From: Marin Jankovski Date: Thu, 2 Oct 2014 11:50:46 +0200 Subject: [PATCH 3/3] Move the check if group is synced with ldap to a method. --- app/models/group.rb | 4 ++++ app/views/admin/groups/show.html.haml | 2 +- app/views/groups/_new_group_member.html.haml | 2 +- app/views/projects/team_members/_form.html.haml | 2 +- 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/app/models/group.rb b/app/models/group.rb index b1c2ce2fdc..d41c3b5224 100644 --- a/app/models/group.rb +++ b/app/models/group.rb @@ -90,6 +90,10 @@ class Group < Namespace ldap_group_links.first.try(:group_access) end + def ldap_synced? + ldap_cn.present? + end + class << self def search(query) where("LOWER(namespaces.name) LIKE :query", query: "%#{query.downcase}%") diff --git a/app/views/admin/groups/show.html.haml b/app/views/admin/groups/show.html.haml index 12fc700d1e..ca309c8a4e 100644 --- a/app/views/admin/groups/show.html.haml +++ b/app/views/admin/groups/show.html.haml @@ -87,7 +87,7 @@ = form_tag project_teams_update_admin_group_path(@group), id: "new_team_member", class: "bulk_import", method: :put do %div - = users_select_tag(:user_ids, { multiple: true, skip_ldap: @group.ldap_cn.present? }) + = users_select_tag(:user_ids, { multiple: true, skip_ldap: @group.ldap_synced? }) %div.prepend-top-10 = select_tag :group_access, options_for_select(UsersGroup.group_access_roles), class: "project-access-select select2" %hr diff --git a/app/views/groups/_new_group_member.html.haml b/app/views/groups/_new_group_member.html.haml index 9a8664a7e7..c8f1ba3d05 100644 --- a/app/views/groups/_new_group_member.html.haml +++ b/app/views/groups/_new_group_member.html.haml @@ -1,7 +1,7 @@ = form_for @users_group, url: group_users_groups_path(@group), html: { class: 'form-horizontal users-group-form' } do |f| .form-group = f.label :user_ids, "People", class: 'control-label' - .col-sm-10= users_select_tag(:user_ids, { multiple: true, skip_ldap: @group.ldap_cn.present? , class: 'input-large' }) + .col-sm-10= users_select_tag(:user_ids, { multiple: true, skip_ldap: @group.ldap_synced? , class: 'input-large' }) .form-group = f.label :group_access, "Group Access", class: 'control-label' diff --git a/app/views/projects/team_members/_form.html.haml b/app/views/projects/team_members/_form.html.haml index 1e4953b501..f6853188b6 100644 --- a/app/views/projects/team_members/_form.html.haml +++ b/app/views/projects/team_members/_form.html.haml @@ -12,7 +12,7 @@ .form-group = f.label :user_ids, "People", class: 'control-label' .col-sm-10 - = users_select_tag(:user_ids, { multiple: true, skip_ldap: @project.group.ldap_cn.present? }) + = users_select_tag(:user_ids, { multiple: true, skip_ldap: @project.group.ldap_synced? }) %p 2. Set access level for them .form-group