diff --git a/public/index.html b/public/index.html
index 232d663..b99dbc7 100644
--- a/public/index.html
+++ b/public/index.html
@@ -648,8 +648,8 @@
diff --git a/public/reset-password.html b/public/reset-password.html
index 525b15d..200a150 100644
--- a/public/reset-password.html
+++ b/public/reset-password.html
@@ -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 = `
@@ -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() {