Login-Dialog zeigt echte Server-Fehlermeldung + pwLen im Log

Tiefe Debug-Runde bewiesen: Server, DB-Passwort und App-Token-Logik sind
korrekt (8/8-Repro gegen Live-Server) — abgelehnt wird ein falscher
Passwort-Wert vom Gerät. Damit das künftig sofort sichtbar ist:
- NavidromeService.letzterLoginFehler hält die Server-Meldung fest
- Login-Dialog zeigt sie statt generischem "Login fehlgeschlagen"
- Fehler-Log enthält die Passwort-Länge (nie das Passwort selbst)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JRj3pupcigUi683vy2Wwnz
This commit is contained in:
Hermes (Server)
2026-08-20 16:13:34 +02:00
co-authored by Claude Fable 5
parent 0776177901
commit 5d08da1086
4 changed files with 79 additions and 2 deletions
+7 -2
View File
@@ -288,10 +288,15 @@ class _SettingsScreenState extends State<SettingsScreen> {
if (ctx.mounted) Navigator.pop(ctx);
if (mounted) setState(() {});
} else if (ctx.mounted) {
// Server-Meldung + Passwortlänge festhalten: „Wrong
// username or password" bei pwLen=10 zeigt sofort
// einen Tippfehler statt eines Netzwerkproblems.
final grund = _navidrome.letzterLoginFehler;
await logger.error(
'Navidrome Login fehlgeschlagen (pwLeer=${passCtrl.text.isEmpty})');
'Navidrome Login fehlgeschlagen '
'(pwLen=${pass.length}, grund=${grund ?? 'unbekannt'})');
setDialogState(() =>
fehler = '❌ Login fehlgeschlagen');
fehler = '${grund ?? 'Login fehlgeschlagen'}');
}
},
child: const Text('Login',