/** * Die Basis-URL für alle Authentifizierungs-Anfragen. * Zentralisiert, damit wir sie bei Server-Umzügen nur an einer Stelle ändern müssen. */ const API_BASE_URL = 'https://api-dev.void-genesis.de/api/auth'; /** * Führt den Login-Request an das Backend aus. * * @param {string} identifier - Benutzername oder E-Mail-Addresse * @param {string} password - Das eingegebene Klartext-Passwort * * @returns {Promise} - Ein Objekt mit 'ok' (boolean) und den 'data' (JSON) */ export async function loginUser(identifier, password) { try { const response = await fetch(`${API_BASE_URL}/login`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ identifier, password }) }); const data = await response.json(); return { ok: response.ok, data }; } catch (error) { console.error("Netzwerkfehler beim Login:", error); throw error; } } /** * Führt den Registrierungs-Request an das Backend aus. * * @param {string} username - Der gewünschete Benutzername * @param {string} email - Die E-Mail-Addresse * @param {string} password - Das Klartext-Passwort * * @returns {Promise} - Ein Objekt mit 'ok' (boolean) und den 'data' (JSON) */ export async function registerUser(username, email, password) { try { const response = await fetch(`${API_BASE_URL}/register`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ username, email, password }) }); const data = await response.json(); return { ok: response.ok, data }; } catch (error) { console.error("Netzwerkfehler bei der Registrierung:", error); throw error; } } /** * Verifiziert die E-Mail-Addresse mit dem 6-stelligen OTP Code. * * @param {string} email - Die E-Mail-Addresse des Nutzers * @param {string} otpCode - Der eingegebende 6-stellige Code aus der E-Mail * * @returns {Promise} - Ein Objekt mit 'ok' (boolean) und den 'data' (JSON) */ export async function verifyEmailUser(email, otpCode) { try { const response = await fetch(`${API_BASE_URL}/verify-email`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ email, otpCode }) }); const data = await response.json(); return { ok: response.ok, data }; } catch (error) { console.error("Netzwerkfehler bei der Verifizierung:", error); throw error; } } /** * Fordert einen neuen OTP-Code an, falls der alte abgelaufen ist (Resend-Funktion) * * @param {string} email - Die E-Mail-Addresse des Nutzers * * @returns {Promise} - Ein Objekt mit 'ok' (boolean) und den 'data' (JSON) */ export async function resendOTPCode(email) { try { console.log ("Email:", email); const response = await fetch(`${API_BASE_URL}/resend-otp`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ email }) }); const data = await response.json(); return { ok: response.ok, data }; } catch (error) { console.error("Netzwerkfehler beim erneutem Senden des OTP:", error); throw error; } } /** * Leitet den Prozess zum Zurücksetzen des Passworts ein (sendet die Email mit Code). * * @param {string} email - Die E-Mail-Addresse des Nutzers * * @returns {Promise} - Ein Objekt mit 'ok' (boolean) und den 'data' (JSON) */ export async function requestPasswordResetUser(email) { try { const response = await fetch(`${API_BASE_URL}/forgot-password`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ email }) }); const data = await response.json(); return { ok: response.ok, data }; } catch (error) { console.error("Netzwerkfehler bei, Passwort-Reset-Anfrage:", error); throw error; } } /** * Setzt das Passwort final zurück. * * @param {string} email - Die E-Mail-Addresse des Nutzers * @param {string} otpCode - Der 6-stellige Code aus der Reset-E-Mail * @param {string} newPassword - Das neu gewählte Passwort * * @returns {Promise} - Ein Objekt mit 'ok' (boolean) und den 'data' (JSON) */ export async function resetPasswordUser(email, otpCode, newPassword) { try { const response = await fetch(`${API_BASE_URL}/reset-password`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ email, otpCode, newPassword }) }); const data = await response.json(); return { ok: response.ok, data }; } catch (error) { console.error("Netzwerkfehler bei, Passwort-Reset:", error); throw error; } } /** * Nutzt das Refresh-Token, um ein neues Access-Token anzufordern (Auto-Login). * * @param {string} refreshToken * * @returns {Promise} */ export async function refreshAccessTokenUser(refreshToken) { try { const response = await fetch(`${API_BASE_URL}/refresh`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ refreshToken }) }); const data = await response.json(); return { ok: response.ok, data }; } catch (error) { console.error("Netzwerkfehler beim Token-Refresh:", error); throw error; } }