diff options
author | Corey Hulen <corey@hulen.com> | 2016-05-04 06:31:42 -0700 |
---|---|---|
committer | Christopher Speller <crspeller@gmail.com> | 2016-05-04 09:31:42 -0400 |
commit | 6611229cd7bd3cdfc0082c0a581145aaac0ab322 (patch) | |
tree | db6670a8c2716179bfe6e07b82588d83d3afb6bd /api | |
parent | 6b06f49e8910ed44f619adad15ab268758312852 (diff) | |
download | chat-6611229cd7bd3cdfc0082c0a581145aaac0ab322.tar.gz chat-6611229cd7bd3cdfc0082c0a581145aaac0ab322.tar.bz2 chat-6611229cd7bd3cdfc0082c0a581145aaac0ab322.zip |
PLT-2707 Adding option to show DM list from all of server (#2871)
* PLT-2707 Adding option to show DM list from all of server
* Fixing loc
Diffstat (limited to 'api')
-rw-r--r-- | api/cli_test.go | 4 | ||||
-rw-r--r-- | api/user.go | 46 | ||||
-rw-r--r-- | api/user_test.go | 16 |
3 files changed, 62 insertions, 4 deletions
diff --git a/api/cli_test.go b/api/cli_test.go index 6597819b3..12f38b54a 100644 --- a/api/cli_test.go +++ b/api/cli_test.go @@ -68,7 +68,7 @@ func TestCliCreateUserWithTeam(t *testing.T) { t.Fatal(err) } - profiles := th.SystemAdminClient.Must(th.SystemAdminClient.GetProfilesForTeam(th.SystemAdminTeam.Id, "")).Data.(map[string]*model.User) + profiles := th.SystemAdminClient.Must(th.SystemAdminClient.GetProfiles(th.SystemAdminTeam.Id, "")).Data.(map[string]*model.User) found := false @@ -149,7 +149,7 @@ func TestCliJoinTeam(t *testing.T) { t.Fatal(err) } - profiles := th.SystemAdminClient.Must(th.SystemAdminClient.GetProfilesForTeam(th.SystemAdminTeam.Id, "")).Data.(map[string]*model.User) + profiles := th.SystemAdminClient.Must(th.SystemAdminClient.GetProfiles(th.SystemAdminTeam.Id, "")).Data.(map[string]*model.User) found := false diff --git a/api/user.go b/api/user.go index aee4dab61..f7d3eb1d3 100644 --- a/api/user.go +++ b/api/user.go @@ -55,6 +55,7 @@ func InitUser() { BaseRoutes.Users.Handle("/status", ApiUserRequiredActivity(getStatuses, false)).Methods("POST") BaseRoutes.Users.Handle("/direct_profiles", ApiUserRequired(getDirectProfiles)).Methods("GET") BaseRoutes.Users.Handle("/profiles/{id:[A-Za-z0-9]+}", ApiUserRequired(getProfiles)).Methods("GET") + BaseRoutes.Users.Handle("/profiles_for_dm_list/{id:[A-Za-z0-9]+}", ApiUserRequired(getProfilesForDirectMessageList)).Methods("GET") BaseRoutes.Users.Handle("/mfa", ApiAppHandler(checkMfa)).Methods("POST") BaseRoutes.Users.Handle("/generate_mfa_qr", ApiUserRequiredTrustRequester(generateMfaQrCode)).Methods("GET") @@ -902,6 +903,49 @@ func getUser(c *Context, w http.ResponseWriter, r *http.Request) { } } +func getProfilesForDirectMessageList(c *Context, w http.ResponseWriter, r *http.Request) { + params := mux.Vars(r) + id := params["id"] + + var pchan store.StoreChannel + + if *utils.Cfg.TeamSettings.RestrictDirectMessage == model.DIRECT_MESSAGE_TEAM { + if c.Session.GetTeamByTeamId(id) == nil { + if !c.HasSystemAdminPermissions("getProfiles") { + return + } + } + + pchan = Srv.Store.User().GetProfiles(id) + } else { + pchan = Srv.Store.User().GetAllProfiles() + } + + if result := <-pchan; result.Err != nil { + c.Err = result.Err + return + } else { + profiles := result.Data.(map[string]*model.User) + + for k, p := range profiles { + options := utils.Cfg.GetSanitizeOptions() + options["passwordupdate"] = false + + if c.IsSystemAdmin() { + options["fullname"] = true + options["email"] = true + } else { + p.ClearNonProfileFields() + } + + p.Sanitize(options) + profiles[k] = p + } + + w.Write([]byte(model.UserMapToJson(profiles))) + } +} + func getProfiles(c *Context, w http.ResponseWriter, r *http.Request) { params := mux.Vars(r) id := params["id"] @@ -940,7 +984,6 @@ func getProfiles(c *Context, w http.ResponseWriter, r *http.Request) { w.Header().Set(model.HEADER_ETAG_SERVER, etag) w.Write([]byte(model.UserMapToJson(profiles))) - return } } @@ -973,7 +1016,6 @@ func getDirectProfiles(c *Context, w http.ResponseWriter, r *http.Request) { w.Header().Set(model.HEADER_ETAG_SERVER, etag) w.Write([]byte(model.UserMapToJson(profiles))) - return } } diff --git a/api/user_test.go b/api/user_test.go index ee13f43f2..629f7d257 100644 --- a/api/user_test.go +++ b/api/user_test.go @@ -395,6 +395,22 @@ func TestGetDirectProfiles(t *testing.T) { } } +func TestGetProfilesForDirectMessageList(t *testing.T) { + th := Setup().InitBasic() + + th.BasicClient.Must(th.BasicClient.CreateDirectChannel(th.BasicUser2.Id)) + + if result, err := th.BasicClient.GetProfilesForDirectMessageList(th.BasicTeam.Id); err != nil { + t.Fatal(err) + } else { + users := result.Data.(map[string]*model.User) + + if len(users) < 1 { + t.Fatal("map was wrong length") + } + } +} + func TestGetAudits(t *testing.T) { th := Setup() Client := th.CreateClient() |