Fix Avatar-Anzeige: Auth-Header bei Avatar-Requests mitsenden

Avatar-Bilder wurden per <img src="..."> geladen, was keinen Authorization-Header
mitsendet. Der Endpoint erfordert aber Auth, daher kam immer 401 zurück.
Jetzt werden alle Avatar-Requests per fetch() mit Bearer-Token geladen und als Blob-URL gesetzt.
This commit is contained in:
2026-03-26 19:23:58 +01:00
parent 3f3609c944
commit a1001bad68
2 changed files with 56 additions and 26 deletions

View File

@@ -162,17 +162,27 @@ function bindLoginForm() {
// ── Avatar Helper ────────────────────────────────────────
function loadAvatarImage(avatarEl, username) {
const img = new Image();
img.onload = () => {
avatarEl.innerHTML = '';
img.style.cssText = 'width:100%;height:100%;object-fit:cover;position:absolute;inset:0';
avatarEl.appendChild(img);
};
img.onerror = () => {
avatarEl.innerHTML = '';
avatarEl.textContent = (username || '?')[0].toUpperCase();
};
img.src = `/api/profile/avatar?t=${Date.now()}`;
const token = localStorage.getItem('token');
fetch(`/api/profile/avatar?t=${Date.now()}`, {
headers: token ? { 'Authorization': `Bearer ${token}` } : {}
})
.then(res => {
if (!res.ok) throw new Error('No avatar');
return res.blob();
})
.then(blob => {
const img = new Image();
img.onload = () => {
avatarEl.innerHTML = '';
img.style.cssText = 'width:100%;height:100%;object-fit:cover;position:absolute;inset:0';
avatarEl.appendChild(img);
};
img.src = URL.createObjectURL(blob);
})
.catch(() => {
avatarEl.innerHTML = '';
avatarEl.textContent = (username || '?')[0].toUpperCase();
});
}
// ── Start ─────────────────────────────────────────────────