PLT-3921 Fix System Console Recent Active Users (#3856)
* PLT-3921 System Console Recent Active Users
Этот коммит содержится в:
35
api/admin.go
35
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)))
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -527,3 +527,18 @@ func TestAdminLdapSyncNow(t *testing.T) {
|
||||
t.Fatal("Returned Failure")
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetRecentlyActiveUsers(t *testing.T) {
|
||||
th := Setup().InitBasic()
|
||||
|
||||
user1Id := th.BasicUser.Id
|
||||
user2Id := th.BasicUser2.Id
|
||||
|
||||
if userMap, err := th.BasicClient.GetRecentlyActiveUsers(th.BasicTeam.Id); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if len(userMap.Data.(map[string]*model.User)) != 2 {
|
||||
t.Fatal("should have been 2")
|
||||
} else if userMap.Data.(map[string]*model.User)[user1Id].Id != user1Id || userMap.Data.(map[string]*model.User)[user2Id].Id != user2Id {
|
||||
t.Fatal("should have been valid")
|
||||
}
|
||||
}
|
||||
|
||||
Ссылка в новой задаче
Block a user