update
This commit is contained in:
@@ -3588,8 +3588,13 @@ async function doLogin() {
|
||||
errEl.style.color = '';
|
||||
if (!name || !pass) { errEl.textContent = 'Benutzername/E-Mail und Passwort erforderlich.'; return; }
|
||||
var inv = getUrlInviteCode();
|
||||
|
||||
/* Schritt 1: Login-Request. NUR ein echter fetch-Reject (Netzwerk,
|
||||
DNS, TLS, Abort) zaehlt als "Verbindungsfehler". HTTP-Antworten
|
||||
mit 4xx/5xx erreichen "r" und werden weiter unten ausgewertet. */
|
||||
var r;
|
||||
try {
|
||||
var r = await fetch(API_BASE + '/auth/login', {
|
||||
r = await fetch(API_BASE + '/auth/login', {
|
||||
method: 'POST', credentials: 'include',
|
||||
headers: {'Content-Type': 'application/json'},
|
||||
body: JSON.stringify({
|
||||
@@ -3599,38 +3604,61 @@ async function doLogin() {
|
||||
invite_code: inv
|
||||
})
|
||||
});
|
||||
if (r.ok) {
|
||||
try {
|
||||
var ld = await r.json();
|
||||
if (ld.practice_id) localStorage.setItem('aza_practice_id', ld.practice_id);
|
||||
if (ld.practice_bind_source) try {
|
||||
sessionStorage.setItem('aza_practice_bind', ld.practice_bind_source);
|
||||
} catch (eB) {}
|
||||
var saveUser = (ld.display_name || name).trim();
|
||||
localStorage.setItem('aza_last_login_user', saveUser);
|
||||
try {
|
||||
var u = new URL(window.location.href);
|
||||
if (u.searchParams.get('invite')) {
|
||||
clearEmpfangLocalSelectionAfterPracticeSwitch();
|
||||
u.searchParams.delete('invite');
|
||||
history.replaceState({}, '', u.pathname + u.search + u.hash);
|
||||
}
|
||||
} catch (eu) {}
|
||||
} catch(e) {}
|
||||
if (!await onAuthSuccess()) errEl.textContent = 'Anmeldung fehlgeschlagen.';
|
||||
} catch (eNet) {
|
||||
errEl.style.color = '#842029';
|
||||
errEl.textContent = 'Verbindungsfehler.';
|
||||
return;
|
||||
}
|
||||
|
||||
/* Schritt 2: HTTP-Fehler (z.B. 400/401/403/409/500) — echte
|
||||
Servermeldung anzeigen, nicht mit "Verbindungsfehler" maskieren. */
|
||||
if (!r.ok) {
|
||||
var d = {};
|
||||
try { d = await r.json(); } catch (_eJ) { d = {}; }
|
||||
errEl.style.color = '#842029';
|
||||
var det = d && d.detail;
|
||||
if (typeof det === 'object' && det !== null && det.message) {
|
||||
errEl.textContent = det.message;
|
||||
} else if (typeof det === 'string') {
|
||||
errEl.textContent = det;
|
||||
} else {
|
||||
var d = await r.json().catch(function(){ return {}; });
|
||||
errEl.style.color = '#842029';
|
||||
var det = d.detail;
|
||||
if (typeof det === 'object' && det !== null && det.message) {
|
||||
errEl.textContent = det.message;
|
||||
} else if (typeof det === 'string') {
|
||||
errEl.textContent = det;
|
||||
} else {
|
||||
errEl.textContent = d.error || 'Anmeldung fehlgeschlagen.';
|
||||
}
|
||||
errEl.textContent = (d && d.error) || 'Anmeldung fehlgeschlagen.';
|
||||
}
|
||||
} catch(e) { errEl.style.color = '#842029'; errEl.textContent = 'Verbindungsfehler.'; }
|
||||
return;
|
||||
}
|
||||
|
||||
/* Schritt 3: Erfolgreicher Server-Login. Lokales State-Update — falls
|
||||
etwas hier scheitert, ist die Session serverseitig trotzdem gueltig. */
|
||||
try {
|
||||
var ld = await r.json();
|
||||
if (ld.practice_id) localStorage.setItem('aza_practice_id', ld.practice_id);
|
||||
if (ld.practice_bind_source) try {
|
||||
sessionStorage.setItem('aza_practice_bind', ld.practice_bind_source);
|
||||
} catch (eB) {}
|
||||
var saveUser = (ld.display_name || name).trim();
|
||||
localStorage.setItem('aza_last_login_user', saveUser);
|
||||
try {
|
||||
var u = new URL(window.location.href);
|
||||
if (u.searchParams.get('invite')) {
|
||||
clearEmpfangLocalSelectionAfterPracticeSwitch();
|
||||
u.searchParams.delete('invite');
|
||||
history.replaceState({}, '', u.pathname + u.search + u.hash);
|
||||
}
|
||||
} catch (eu) {}
|
||||
} catch (_eR) {}
|
||||
|
||||
/* Schritt 4: UI-Initialisierung. Eigener try/catch, damit ein Fehler
|
||||
hier NICHT mehr als "Verbindungsfehler" oben durchschlaegt. */
|
||||
try {
|
||||
var ok = await onAuthSuccess();
|
||||
if (!ok) {
|
||||
errEl.style.color = '#842029';
|
||||
errEl.textContent = 'Anmeldung fehlgeschlagen.';
|
||||
}
|
||||
} catch (_eA) {
|
||||
errEl.style.color = '#842029';
|
||||
errEl.textContent = 'Anmeldung erfolgreich, aber Initialisierung fehlgeschlagen. Bitte Seite neu laden.';
|
||||
}
|
||||
}
|
||||
|
||||
async function doRegister() {
|
||||
|
||||
Reference in New Issue
Block a user