From 35b816b92217237de922c928a6623b5ac426655a Mon Sep 17 00:00:00 2001 From: enahum Date: Tue, 6 Sep 2016 15:48:43 -0300 Subject: PLT-3921 Fix System Console Recent Active Users (#3856) * PLT-3921 System Console Recent Active Users --- api/admin.go | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) (limited to 'api/admin.go') diff --git a/api/admin.go b/api/admin.go index d48c8d379..573a22c6b 100644 --- a/api/admin.go +++ b/api/admin.go @@ -48,6 +48,7 @@ func InitAdmin() { BaseRoutes.Admin.Handle("/remove_certificate", ApiAdminSystemRequired(removeCertificate)).Methods("POST") BaseRoutes.Admin.Handle("/saml_cert_status", ApiAdminSystemRequired(samlCertificateStatus)).Methods("GET") BaseRoutes.Admin.Handle("/cluster_status", ApiAdminSystemRequired(getClusterStatus)).Methods("GET") + BaseRoutes.Admin.Handle("/recently_active_users/{team_id:[A-Za-z0-9]+}", ApiUserRequiredActivity(getRecentlyActiveUsers, false)).Methods("GET") } func getLogs(c *Context, w http.ResponseWriter, r *http.Request) { @@ -754,3 +755,37 @@ func samlCertificateStatus(c *Context, w http.ResponseWriter, r *http.Request) { w.Write([]byte(model.StringInterfaceToJson(status))) } + +func getRecentlyActiveUsers(c *Context, w http.ResponseWriter, r *http.Request) { + statusMap := map[string]interface{}{} + + if result := <-Srv.Store.Status().GetAllFromTeam(c.TeamId); result.Err != nil { + c.Err = result.Err + return + } else { + statuses := result.Data.([]*model.Status) + for _, s := range statuses { + statusMap[s.UserId] = s.LastActivityAt + } + } + + if result := <-Srv.Store.User().GetProfiles(c.TeamId); result.Err != nil { + c.Err = result.Err + return + } else { + profiles := result.Data.(map[string]*model.User) + + for k, p := range profiles { + p = sanitizeProfile(c, p) + + if lastActivityAt, ok := statusMap[p.Id].(int64); ok { + p.LastActivityAt = lastActivityAt + } + + profiles[k] = p + } + + w.Write([]byte(model.UserMapToJson(profiles))) + } + +} -- cgit v1.2.3-1-g7c22