181 lines
5.5 KiB
JavaScript
181 lines
5.5 KiB
JavaScript
/**
|
|
* 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<Object>} - 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<Object>} - 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<Object>} - 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<Object>} - 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<Object>} - 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<Object>} - 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<Object>}
|
|
*/
|
|
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;
|
|
}
|
|
}
|