Fixed Reset PW!

This commit is contained in:
2025-09-03 14:24:41 +02:00
parent f20f9b538d
commit cd9fbce5f9
2 changed files with 92 additions and 57 deletions

View File

@@ -648,8 +648,8 @@
<button class="logout-btn" id="logoutBtn" onclick="logout()" style="display: none;">🚪 Logout</button>
<div class="header-section">
<h1 class="main-title">SPEEDRUN ARENA</h1>
<p class="tagline">Die ultimative Timer-Rangliste</p>
<h1 class="main-title">NINJACROSS LEADERBOARD</h1>
<p class="tagline">Die ultimative NinjaCross-Rangliste</p>
</div>
<div class="dashboard-grid">

View File

@@ -311,58 +311,7 @@
const loading = document.getElementById('loading');
const messageContainer = document.getElementById('messageContainer');
// URL-Parameter extrahieren
const urlParams = new URLSearchParams(window.location.hash.substring(1));
const accessToken = urlParams.get('access_token');
const refreshToken = urlParams.get('refresh_token');
const tokenType = urlParams.get('token_type');
// Prüfen ob Reset-Token vorhanden ist
if (!accessToken) {
showMessage('error', 'Ungültiger oder fehlender Reset-Link. Bitte fordere einen neuen Reset-Link an.');
resetForm.style.display = 'none';
return;
}
// Session mit Token setzen
async function setSession() {
try {
const { data, error } = await supabase.auth.setSession({
access_token: accessToken,
refresh_token: refreshToken
});
if (error) {
throw error;
}
console.log('Session erfolgreich gesetzt:', data.user?.email);
} catch (error) {
console.error('Fehler beim Setzen der Session:', error);
showMessage('error', 'Fehler beim Laden des Reset-Links. Bitte versuche es erneut.');
resetForm.style.display = 'none';
}
}
// Passwort zurücksetzen
async function resetPassword(newPassword) {
try {
const { data, error } = await supabase.auth.updateUser({
password: newPassword
});
if (error) {
throw error;
}
return { success: true, data };
} catch (error) {
console.error('Fehler beim Zurücksetzen des Passworts:', error);
return { success: false, error: error.message };
}
}
// Nachricht anzeigen
// Nachricht anzeigen (muss vor anderen Funktionen definiert werden)
function showMessage(type, message) {
messageContainer.innerHTML = `
<div class="message ${type}">
@@ -371,6 +320,83 @@
`;
}
// URL-Parameter extrahieren
console.log('URL Hash:', window.location.hash);
const urlParams = new URLSearchParams(window.location.hash.substring(1));
const accessToken = urlParams.get('access_token');
const refreshToken = urlParams.get('refresh_token');
const tokenType = urlParams.get('token_type');
console.log('Access Token gefunden:', !!accessToken);
console.log('Refresh Token gefunden:', !!refreshToken);
// Prüfen ob Reset-Token vorhanden ist
if (!accessToken) {
showMessage('error', 'Ungültiger oder fehlender Reset-Link. Bitte fordere einen neuen Reset-Link an.');
resetForm.style.display = 'none';
}
// Session mit Token setzen
async function setSession() {
if (!accessToken || !refreshToken) {
showMessage('error', 'Ungültiger Reset-Link. Tokens fehlen.');
resetForm.style.display = 'none';
return false;
}
try {
console.log('Setze Session mit Tokens...');
const { data, error } = await supabase.auth.setSession({
access_token: accessToken,
refresh_token: refreshToken
});
if (error) {
console.error('Session Error:', error);
throw error;
}
console.log('Session erfolgreich gesetzt:', data.user?.email);
showMessage('success', `Session aktiv für: ${data.user?.email}`);
return true;
} catch (error) {
console.error('Fehler beim Setzen der Session:', error);
showMessage('error', `Fehler beim Laden des Reset-Links: ${error.message}`);
resetForm.style.display = 'none';
return false;
}
}
// Passwort zurücksetzen
async function resetPassword(newPassword) {
try {
console.log('Starte Passwort-Update...');
// Erstmal Session prüfen
const { data: session } = await supabase.auth.getSession();
console.log('Aktuelle Session:', session);
if (!session.session) {
throw new Error('Keine aktive Session gefunden');
}
const { data, error } = await supabase.auth.updateUser({
password: newPassword
});
if (error) {
console.error('Update User Error:', error);
throw error;
}
console.log('Passwort erfolgreich aktualisiert:', data);
return { success: true, data };
} catch (error) {
console.error('Fehler beim Zurücksetzen des Passworts:', error);
return { success: false, error: error.message };
}
}
// Formular-Validierung
function validateForm() {
const newPassword = newPasswordInput.value;
@@ -403,6 +429,12 @@
resetForm.style.display = 'none';
try {
// Warten bis Session gesetzt ist
const sessionSet = await setSession();
if (!sessionSet) {
throw new Error('Session konnte nicht gesetzt werden');
}
const result = await resetPassword(newPasswordInput.value);
if (result.success) {
@@ -417,7 +449,8 @@
resetForm.style.display = 'block';
}
} catch (error) {
showMessage('error', '❌ Ein unerwarteter Fehler ist aufgetreten. Bitte versuche es erneut.');
console.error('Submit Error:', error);
showMessage('error', `❌ Fehler: ${error.message}`);
resetForm.style.display = 'block';
} finally {
resetBtn.disabled = false;
@@ -425,8 +458,10 @@
}
});
// Session beim Laden der Seite setzen
setSession();
// Session beim Laden der Seite setzen (nur wenn Token vorhanden)
if (accessToken && refreshToken) {
setSession();
}
// Passwort-Sicherheitshinweise
newPasswordInput.addEventListener('input', function() {