From 0cf2351c79e386833fb3e1038ac51bb4e37705b6 Mon Sep 17 00:00:00 2001 From: "Torsten Schulz (local)" Date: Sat, 4 Oct 2025 01:49:30 +0200 Subject: [PATCH] =?UTF-8?q?Erweitert=20die=20Funktionalit=C3=A4t=20von=20u?= =?UTF-8?q?pdateRatingsFromMyTischtennis,=20um=20eine=20automatische=20Anm?= =?UTF-8?q?eldung=20bei=20abgelaufener=20Session=20zu=20erm=C3=B6glichen.?= =?UTF-8?q?=20F=C3=BCgt=20Fehlerbehandlung=20f=C3=BCr=20den=20Login-Prozes?= =?UTF-8?q?s=20hinzu=20und=20entfernt=20die=20Best=C3=A4tigungsabfrage=20v?= =?UTF-8?q?or=20der=20Aktualisierung=20der=20TTR/QTTR-Werte,=20um=20den=20?= =?UTF-8?q?Benutzerfluss=20zu=20verbessern.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/services/memberService.js | 34 ++++++++++++++++++++++++++++-- frontend/src/views/MembersView.vue | 4 ---- 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/backend/services/memberService.js b/backend/services/memberService.js index 0ca5bf7..834b934 100644 --- a/backend/services/memberService.js +++ b/backend/services/memberService.js @@ -150,8 +150,38 @@ class MemberService { const myTischtennisClient = (await import('../clients/myTischtennisClient.js')).default; try { - // 1. myTischtennis-Session abrufen - const session = await myTischtennisService.getSession(user.id); + // 1. myTischtennis-Session abrufen oder Login durchführen + let session; + try { + session = await myTischtennisService.getSession(user.id); + } catch (sessionError) { + console.log('[updateRatingsFromMyTischtennis] - Session invalid, attempting login...', sessionError.message); + + // Versuche automatischen Login mit gespeicherten Credentials + try { + const loginResult = await myTischtennisService.verifyLogin(user.id); + const freshSession = await myTischtennisService.getSession(user.id); + session = { + cookie: freshSession.cookie, + accessToken: freshSession.accessToken, + refreshToken: freshSession.refreshToken, + expiresAt: freshSession.expiresAt, + userData: freshSession.userData + }; + console.log('[updateRatingsFromMyTischtennis] - Automatic login successful'); + } catch (loginError) { + console.error('[updateRatingsFromMyTischtennis] - Automatic login failed:', loginError.message); + return { + status: 401, + response: { + message: 'Session abgelaufen und automatischer Login fehlgeschlagen. Bitte einmal in myTischtennis einloggen.', + updated: 0, + errors: [loginError.message], + needsReauth: true + } + }; + } + } const account = await myTischtennisService.getAccount(user.id); diff --git a/frontend/src/views/MembersView.vue b/frontend/src/views/MembersView.vue index 193dbbd..56bf013 100644 --- a/frontend/src/views/MembersView.vue +++ b/frontend/src/views/MembersView.vue @@ -387,10 +387,6 @@ export default { return ''; }, async updateRatingsFromMyTischtennis() { - if (!confirm('TTR/QTTR-Werte von myTischtennis aktualisieren?')) { - return; - } - this.isUpdatingRatings = true; try { const response = await apiClient.post(`/clubmembers/update-ratings/${this.currentClub}`);