diff --git a/model/user.go b/model/user.go index 168605adb2..629e83dc15 100644 --- a/model/user.go +++ b/model/user.go @@ -124,6 +124,7 @@ type UserForIndexing struct { Nickname string `json:"nickname"` FirstName string `json:"first_name"` LastName string `json:"last_name"` + Roles string `json:"roles"` CreateAt int64 `json:"create_at"` DeleteAt int64 `json:"delete_at"` TeamsIds []string `json:"team_id"` diff --git a/store/searchtest/user_layer.go b/store/searchtest/user_layer.go index 3a02d6796c..93bb74e4dd 100644 --- a/store/searchtest/user_layer.go +++ b/store/searchtest/user_layer.go @@ -99,7 +99,7 @@ var searchUserStoreTests = []searchTest{ { Name: "Should be able to search filtering by role", Fn: testShouldBeAbleToSearchFilteringByRole, - Tags: []string{ENGINE_POSTGRES, ENGINE_MYSQL}, + Tags: []string{ENGINE_MYSQL, ENGINE_POSTGRES, ENGINE_ELASTICSEARCH}, }, { Name: "Should ignore leading @ when searching users", @@ -612,18 +612,26 @@ func testShouldBeAbleToSearchInactiveUsers(t *testing.T, th *SearchTestHelper) { func testShouldBeAbleToSearchFilteringByRole(t *testing.T, th *SearchTestHelper) { userAlternate, err := th.createUser("basicusernamealternate", "alternatenickname", "firstname", "altlastname") require.Nil(t, err) - userAlternate.Roles = "system_admin" + userAlternate.Roles = "system_admin system_user" _, apperr := th.Store.User().Update(userAlternate, true) require.Nil(t, apperr) defer th.deleteUser(userAlternate) + userAlternate2, err := th.createUser("basicusernamealternate2", "alternatenickname2", "firstname2", "altlastname2") + require.Nil(t, err) + userAlternate2.Roles = "system_user" + _, apperr = th.Store.User().Update(userAlternate2, true) + require.Nil(t, apperr) + defer th.deleteUser(userAlternate2) err = th.addUserToTeams(userAlternate, []string{th.Team.Id}) require.Nil(t, err) + err = th.addUserToTeams(userAlternate2, []string{th.Team.Id}) + require.Nil(t, err) _, err = th.addUserToChannels(userAlternate, []string{th.ChannelBasic.Id}) require.Nil(t, err) t.Run("Should autocomplete users filtering by roles", func(t *testing.T) { options := createDefaultOptions(false, false, true) options.Role = "system_admin" - users, apperr := th.Store.User().AutocompleteUsersInChannel(th.Team.Id, th.ChannelBasic.Id, "basicusername", options) + users, apperr := th.Store.User().AutocompleteUsersInChannel(th.Team.Id, th.ChannelBasic.Id, "", options) require.Nil(t, apperr) th.assertUsersMatchInAnyOrder(t, []*model.User{userAlternate}, users.InChannel) th.assertUsersMatchInAnyOrder(t, []*model.User{}, users.OutOfChannel) @@ -631,7 +639,7 @@ func testShouldBeAbleToSearchFilteringByRole(t *testing.T, th *SearchTestHelper) t.Run("Should search users filtering by roles", func(t *testing.T) { options := createDefaultOptions(false, false, true) options.Role = "system_admin" - users, apperr := th.Store.User().Search(th.Team.Id, "basicusername", options) + users, apperr := th.Store.User().Search(th.Team.Id, "", options) require.Nil(t, apperr) th.assertUsersMatchInAnyOrder(t, []*model.User{userAlternate}, users) }) diff --git a/store/sqlstore/user_store.go b/store/sqlstore/user_store.go index 8c112e0a9d..827946e220 100644 --- a/store/sqlstore/user_store.go +++ b/store/sqlstore/user_store.go @@ -1527,6 +1527,7 @@ func (us SqlUserStore) GetUsersBatchForIndexing(startTime, endTime int64, limit Nickname: user.Nickname, FirstName: user.FirstName, LastName: user.LastName, + Roles: user.Roles, CreateAt: user.CreateAt, DeleteAt: user.DeleteAt, TeamsIds: []string{},