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>
31 lines
1,004 B
Swift
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"
|
|
}
|
|
}
|
|
}
|