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}`);