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
+6
View File
@@ -77,6 +77,10 @@ class NavidromeService {
String _salt = '';
String? _token;
/// Server-Meldung des letzten abgelehnten Logins (z. B. „Wrong username
/// or password"), damit der Login-Dialog die echte Ursache zeigen kann.
String? letzterLoginFehler;
static const _version = '1.16.1';
static const _client = 'Melo';
@@ -179,6 +183,7 @@ class NavidromeService {
}
Future<bool> ping() async {
letzterLoginFehler = null;
try {
final r = await http.get(_uri('ping.view')).timeout(const Duration(seconds: 10));
if (r.statusCode != 200) {
@@ -191,6 +196,7 @@ class NavidromeService {
logger.info('✅ Navidrome Verbindung erfolgreich: $_serverUrl');
return true;
} on NavidromeException catch (e) {
letzterLoginFehler = e.message;
logger.warning('Navidrome Login abgelehnt: ${e.message}');
return false;
} catch (e) {