MCPcopy Create free account
hub / github.com/daodst/chat / GetAdminWhois

Function GetAdminWhois

clientapi/routing/admin_whois.go:46–88  ·  view source on GitHub ↗

GetAdminWhois implements GET /admin/whois/{userId}

(
	req *http.Request, userAPI api.ClientUserAPI, device *api.Device,
	userID string,
)

Source from the content-addressed store, hash-verified

44
45// GetAdminWhois implements GET /admin/whois/{userId}
46func GetAdminWhois(
47 req *http.Request, userAPI api.ClientUserAPI, device *api.Device,
48 userID string,
49) util.JSONResponse {
50 allowed := device.AccountType == api.AccountTypeAdmin || userID == device.UserID
51 if !allowed {
52 return util.JSONResponse{
53 Code: http.StatusForbidden,
54 JSON: jsonerror.Forbidden("userID does not match the current user"),
55 }
56 }
57
58 var queryRes api.QueryDevicesResponse
59 err := userAPI.QueryDevices(req.Context(), &api.QueryDevicesRequest{
60 UserID: userID,
61 }, &queryRes)
62 if err != nil {
63 util.GetLogger(req.Context()).WithError(err).Error("GetAdminWhois failed to query user devices")
64 return jsonerror.InternalServerError()
65 }
66
67 devices := make(map[string]deviceInfo)
68 for _, device := range queryRes.Devices {
69 connInfo := connectionInfo{
70 IP: device.LastSeenIP,
71 LastSeen: device.LastSeenTS,
72 UserAgent: device.UserAgent,
73 }
74 dev, ok := devices[device.ID]
75 if !ok {
76 dev.Sessions = []sessionInfo{{}}
77 }
78 dev.Sessions[0].Connections = append(dev.Sessions[0].Connections, connInfo)
79 devices[device.ID] = dev
80 }
81 return util.JSONResponse{
82 Code: http.StatusOK,
83 JSON: adminWhoisResponse{
84 UserID: userID,
85 Devices: devices,
86 },
87 }
88}

Callers 1

SetupFunction · 0.85

Calls 3

ContextMethod · 0.80
QueryDevicesMethod · 0.65
ErrorMethod · 0.45

Tested by

no test coverage detected