mana-swift-core/Sources/ManaCore/Auth/AuthError.swift
Till JS df6f67ee45 v1.0.0 — initiale Extraktion aus memoro-native
ManaCore + ManaTokens als Swift-Package für alle nativen
mana-e.V.-Apps. Phase α aus mana/docs/MANA_SWIFT.md durch.

ManaCore:
- AuthClient gegen mana-auth (Login, Refresh, Status-Maschine)
- AuthenticatedTransport (URLSession + 401-Retry)
- ManaAppConfig-Protocol für App-injizierbare Konfig
- KeychainStore mit optionaler Shared-Access-Group
- JWT-Parser für lokale Expiry-Prüfung
- AuthError, CoreLog (interne OSLog-Logger)

ManaTokens:
- 12 Vereins-Tokens als dynamic Light/Dark Colors
- 5 Brand-Literale (mana-yellow, spectrum-orange, ...)
- Spacing, Radius, Typography aus mana/docs/THEMING.md

Tests: 12 Unit-Tests grün via swift test.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 19:13:31 +02:00

31 lines
1,004 B
Swift

import Foundation
/// Fehler-Typen des Auth- und Transport-Layers.
public enum AuthError: Error, LocalizedError, Sendable {
case notSignedIn
case invalidCredentials
case networkFailure(String)
case serverError(status: Int, message: String?)
case decoding(String)
case keychain(OSStatus)
case encoding
public var errorDescription: String? {
switch self {
case .notSignedIn:
"Nicht angemeldet"
case .invalidCredentials:
"Ungültige Anmeldedaten"
case let .networkFailure(message):
"Netzwerkfehler: \(message)"
case let .serverError(status, message):
"Server-Fehler (\(status))" + (message.map { ": \($0)" } ?? "")
case let .decoding(detail):
"Antwort konnte nicht gelesen werden: \(detail)"
case let .keychain(status):
"Keychain-Fehler (OSStatus \(status))"
case .encoding:
"Datenkodierung fehlgeschlagen"
}
}
}