Fixed Reset PW!
This commit is contained in:
@@ -648,8 +648,8 @@
|
|||||||
<button class="logout-btn" id="logoutBtn" onclick="logout()" style="display: none;">🚪 Logout</button>
|
<button class="logout-btn" id="logoutBtn" onclick="logout()" style="display: none;">🚪 Logout</button>
|
||||||
|
|
||||||
<div class="header-section">
|
<div class="header-section">
|
||||||
<h1 class="main-title">SPEEDRUN ARENA</h1>
|
<h1 class="main-title">NINJACROSS LEADERBOARD</h1>
|
||||||
<p class="tagline">Die ultimative Timer-Rangliste</p>
|
<p class="tagline">Die ultimative NinjaCross-Rangliste</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="dashboard-grid">
|
<div class="dashboard-grid">
|
||||||
|
|||||||
@@ -311,58 +311,7 @@
|
|||||||
const loading = document.getElementById('loading');
|
const loading = document.getElementById('loading');
|
||||||
const messageContainer = document.getElementById('messageContainer');
|
const messageContainer = document.getElementById('messageContainer');
|
||||||
|
|
||||||
// URL-Parameter extrahieren
|
// Nachricht anzeigen (muss vor anderen Funktionen definiert werden)
|
||||||
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
|
|
||||||
function showMessage(type, message) {
|
function showMessage(type, message) {
|
||||||
messageContainer.innerHTML = `
|
messageContainer.innerHTML = `
|
||||||
<div class="message ${type}">
|
<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
|
// Formular-Validierung
|
||||||
function validateForm() {
|
function validateForm() {
|
||||||
const newPassword = newPasswordInput.value;
|
const newPassword = newPasswordInput.value;
|
||||||
@@ -403,6 +429,12 @@
|
|||||||
resetForm.style.display = 'none';
|
resetForm.style.display = 'none';
|
||||||
|
|
||||||
try {
|
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);
|
const result = await resetPassword(newPasswordInput.value);
|
||||||
|
|
||||||
if (result.success) {
|
if (result.success) {
|
||||||
@@ -417,7 +449,8 @@
|
|||||||
resetForm.style.display = 'block';
|
resetForm.style.display = 'block';
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} 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';
|
resetForm.style.display = 'block';
|
||||||
} finally {
|
} finally {
|
||||||
resetBtn.disabled = false;
|
resetBtn.disabled = false;
|
||||||
@@ -425,8 +458,10 @@
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// Session beim Laden der Seite setzen
|
// Session beim Laden der Seite setzen (nur wenn Token vorhanden)
|
||||||
|
if (accessToken && refreshToken) {
|
||||||
setSession();
|
setSession();
|
||||||
|
}
|
||||||
|
|
||||||
// Passwort-Sicherheitshinweise
|
// Passwort-Sicherheitshinweise
|
||||||
newPasswordInput.addEventListener('input', function() {
|
newPasswordInput.addEventListener('input', function() {
|
||||||
|
|||||||
Reference in New Issue
Block a user