fix: return not found for missing internal user
This commit is contained in:
@@ -12,6 +12,7 @@ import (
|
||||
"io"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"runtime/debug"
|
||||
"strconv"
|
||||
"strings"
|
||||
"sync"
|
||||
@@ -72,6 +73,12 @@ func initInternalAPI(raw json.RawMessage) error {
|
||||
}
|
||||
|
||||
func serveInternalAdminQuery(wrt http.ResponseWriter, req *http.Request, prefix string) {
|
||||
defer func() {
|
||||
if recovered := recover(); recovered != nil {
|
||||
logs.Err.Printf("internal admin query panic path:%s err:%v stack:%s", req.URL.RequestURI(), recovered, debug.Stack())
|
||||
writeIMError(wrt, req, http.StatusInternalServerError, 90000, imReasonInternal, "internal error", nil)
|
||||
}
|
||||
}()
|
||||
if req.Method != http.MethodGet {
|
||||
writeIMError(wrt, req, http.StatusMethodNotAllowed, 30002, imReasonMethodNotAllowed, "method not allowed", nil)
|
||||
return
|
||||
@@ -246,14 +253,21 @@ func serveInternalUserQuery(wrt http.ResponseWriter, req *http.Request, tenantID
|
||||
if row, err := store.InternalAdminQueries.QueryOne(tenantID, query, []any{userDBID}); err == nil {
|
||||
writeIMSuccess(wrt, req, normalizeInternalAdminRowForAPI(row))
|
||||
return
|
||||
} else {
|
||||
logs.Warn.Printf("internal user query sql failed tenant:%d user:%d err:%v", tenantID, userDBID, err)
|
||||
}
|
||||
}
|
||||
uid := store.EncodeUid(userDBID)
|
||||
user, err := store.Users.Get(tenantID, uid)
|
||||
if err != nil {
|
||||
logs.Warn.Printf("internal user query fallback failed tenant:%d user:%d err:%v", tenantID, userDBID, err)
|
||||
writeInternalQueryError(wrt, req, err)
|
||||
return
|
||||
}
|
||||
if user == nil {
|
||||
writeInternalQueryError(wrt, req, types.ErrUserNotFound)
|
||||
return
|
||||
}
|
||||
writeIMSuccess(wrt, req, map[string]any{
|
||||
"user_id": userDBID,
|
||||
"state": user.State,
|
||||
|
||||
Reference in New Issue
Block a user