From 93485facaf5672f7472b2d0dd605d36617ad93be Mon Sep 17 00:00:00 2001 From: Blake Erickson Date: Thu, 18 Oct 2018 13:17:24 -0600 Subject: [PATCH] FIX: lowercase username for add/rem group members This fix searches for users based on the downcased username so that if you pass in usernames to add/remove from a group and you don't have the casing just right it will still find the correct users. I updated the tests to add a username that has a mix of upper and lowercase letters to verify this functionality. --- app/controllers/groups_controller.rb | 2 +- spec/requests/groups_controller_spec.rb | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/controllers/groups_controller.rb b/app/controllers/groups_controller.rb index 5dad97d0f4d..b20d5e639af 100644 --- a/app/controllers/groups_controller.rb +++ b/app/controllers/groups_controller.rb @@ -484,7 +484,7 @@ class GroupsController < ApplicationController def users_from_params if params[:usernames].present? - users = User.where(username: params[:usernames].split(",")) + users = User.where(username_lower: params[:usernames].split(",").map(&:downcase)) raise Discourse::InvalidParameters.new(:usernames) if users.blank? elsif params[:user_ids].present? users = User.where(id: params[:user_ids].split(",")) diff --git a/spec/requests/groups_controller_spec.rb b/spec/requests/groups_controller_spec.rb index 05e18d426b3..15d6b9612d6 100644 --- a/spec/requests/groups_controller_spec.rb +++ b/spec/requests/groups_controller_spec.rb @@ -856,7 +856,7 @@ describe GroupsController do context "is able to add several members to a group" do let(:user1) { Fabricate(:user) } - let(:user2) { Fabricate(:user) } + let(:user2) { Fabricate(:user, username: "UsEr2") } it "adds by username" do expect do @@ -1069,7 +1069,7 @@ describe GroupsController do context '#remove_members' do context "is able to remove several members from a group" do let(:user1) { Fabricate(:user) } - let(:user2) { Fabricate(:user) } + let(:user2) { Fabricate(:user, username: "UsEr2") } let(:group1) { Fabricate(:group, users: [user1, user2]) } it "removes by username" do