From a3bdb3f467b353e86e4ef9bb27af646287eacdbe Mon Sep 17 00:00:00 2001 From: duffyduck Date: Fri, 3 Jul 2026 09:17:02 +0200 Subject: [PATCH] Passwort-Set: echte Fehlermeldung anzeigen statt Fallback MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Der axios-Response-Interceptor packt die Backend-Meldung in new Error(message) um und wirft .response weg. Der Catch- Handler beim Passwort-Setzen las aber err.response.data.error (nach dem Interceptor undefined) und fiel deshalb immer auf "Passwort konnte nicht gesetzt werden" zurück. Ergebnis: der Admin sah nie den echten Grund – typischerweise "Passwort erfüllt Mindestanforderungen nicht: mindestens 25 Zeichen" oder "Eigenes Passwort ist falsch". Fix: err.message lesen. Das ist genau der vom Interceptor gesetzte String. Co-Authored-By: Claude Opus 4.7 --- frontend/src/pages/users/UserList.tsx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/frontend/src/pages/users/UserList.tsx b/frontend/src/pages/users/UserList.tsx index 10e6f945..0d7fb07b 100644 --- a/frontend/src/pages/users/UserList.tsx +++ b/frontend/src/pages/users/UserList.tsx @@ -337,8 +337,13 @@ function UserModal({ } updateMutation.mutate(updateData, { onSuccess: () => { + // Der axios-Response-Interceptor wirft `.response` weg und + // legt die Backend-Meldung nach `err.message` – deshalb hier + // nicht `err.response.data.error` lesen, sonst sieht der + // Admin nur den Fallback und weiß nicht, dass Staff- + // Passwörter min. 25 Zeichen + Sonderzeichen brauchen. userApi.setPassword(user.id, formData.password, formData.currentPassword).catch((err) => { - alert(err?.response?.data?.error || 'Passwort konnte nicht gesetzt werden'); + alert(err?.message || 'Passwort konnte nicht gesetzt werden'); }); }, });