From 5857945e71ba1e83bb9681c36c468809ae1dcf82 Mon Sep 17 00:00:00 2001 From: ze0s <43699394+zze0s@users.noreply.github.com> Date: Fri, 12 Apr 2024 15:09:40 +0200 Subject: [PATCH] fix(user): change username (#1502) * fix(user): change username * fix(user): api client error improvements * fix(user): api client error improvements --- internal/auth/service.go | 12 +++++++----- web/src/api/APIClient.ts | 14 +++++--------- web/src/api/QueryClient.tsx | 6 ++++++ 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/internal/auth/service.go b/internal/auth/service.go index b31aaf1..cfac122 100644 --- a/internal/auth/service.go +++ b/internal/auth/service.go @@ -134,12 +134,14 @@ func (s *service) UpdateUser(ctx context.Context, req domain.UpdateUserRequest) return errors.Errorf("invalid login: %s", req.UsernameCurrent) } - hashed, err := s.CreateHash(req.PasswordNew) - if err != nil { - return errors.New("failed to hash password") - } + if req.PasswordNew != "" { + hashed, err := s.CreateHash(req.PasswordNew) + if err != nil { + return errors.New("failed to hash password") + } - req.PasswordNewHash = hashed + req.PasswordNewHash = hashed + } if err := s.userSvc.Update(ctx, req); err != nil { s.log.Error().Err(err).Msgf("could not change password for user: %s", req.UsernameCurrent) diff --git a/web/src/api/APIClient.ts b/web/src/api/APIClient.ts index c798eed..5ffb3c5 100644 --- a/web/src/api/APIClient.ts +++ b/web/src/api/APIClient.ts @@ -81,23 +81,22 @@ export async function HttpClient( const response = await window.fetch(`${baseUrl()}${endpoint}`, init); + const isJson = response.headers.get("Content-Type")?.includes("application/json"); + const json = isJson ? await response.json() : null; + switch (response.status) { case 204: { // 204 contains no data, but indicates success return Promise.resolve({} as T); } case 401: { - return Promise.reject(response); - // return Promise.reject(new Error(`[401] Unauthorized: "${endpoint}"`)); + return Promise.reject(json as T); } case 403: { - return Promise.reject(response); + return Promise.reject(json as T); } case 404: { - const isJson = response.headers.get("Content-Type")?.includes("application/json"); - const json = isJson ? await response.json() : null; return Promise.reject(json as T); - // return Promise.reject(new Error(`[404] Not Found: "${endpoint}"`)); } case 500: { const health = await window.fetch(`${baseUrl()}api/healthz/liveness`); @@ -116,9 +115,6 @@ export async function HttpClient( break; } - const isJson = response.headers.get("Content-Type")?.includes("application/json"); - const json = isJson ? await response.json() : null; - // Resolve on success if (response.status >= 200 && response.status < 300) { if (isJson) { diff --git a/web/src/api/QueryClient.tsx b/web/src/api/QueryClient.tsx index e998630..1dd57b6 100644 --- a/web/src/api/QueryClient.tsx +++ b/web/src/api/QueryClient.tsx @@ -52,6 +52,12 @@ export const queryClient = new QueryClient({ }, mutations: { onError: (error) => { + console.log("mutation error: ", error) + + if (error instanceof Response) { + return + } + // Use a format string to convert the error object to a proper string without much hassle. const message = ( typeof (error) === "object" && typeof ((error as Error).message) ?