import { ApiClientError } from "@/lib/frontend/apiClient"; import { LOGIN_REASONS } from "@/lib/frontend/authRedirect"; /** * Auth UI messages (RHL-020). * * Why this file exists: * - Keep user-facing auth messages consistent and centralized. * - Avoid string duplication across multiple UI components. * - Make mappings easy to test (pure functions, no UI dependencies). */ /** * Return a user-facing login-page alert message for a known reason. * * @param {string|null} reason * @returns {{ title: string, description: string } | null} */ export function getLoginReasonAlert(reason) { if (reason === LOGIN_REASONS.EXPIRED) { return { title: "Sitzung abgelaufen", description: "Ihre Sitzung ist abgelaufen. Bitte melden Sie sich erneut an.", }; } if (reason === LOGIN_REASONS.LOGGED_OUT) { return { title: "Abgemeldet", description: "Sie wurden erfolgreich abgemeldet.", }; } return null; } /** * Map an error to a safe, user-friendly login error message. * * Principles: * - Do not leak internal server details to the UI. * - Use stable error codes (ApiClientError.code) for UX decisions. * * @param {unknown} err * @returns {string} */ export function getLoginErrorMessage(err) { if (err instanceof ApiClientError) { if (err.code === "AUTH_INVALID_CREDENTIALS") { return "Benutzername oder Passwort ist falsch."; } if (err.code === "CLIENT_NETWORK_ERROR") { return "Netzwerkfehler. Bitte prüfen Sie Ihre Verbindung und versuchen Sie es erneut."; } return "Anmeldung fehlgeschlagen. Bitte erneut versuchen."; } return "Anmeldung fehlgeschlagen. Bitte erneut versuchen."; }