/// Schnittstelle, über die HTTP-Interceptors einen aktuellen /// Access-Token beziehen. Phase A liefert das eine simple /// Password-Grant-Implementation; Phase B (Keycloak OIDC mit /// flutter_appauth) ersetzt sie durch eine echte PKCE-/Refresh-fähige. abstract interface class AuthTokenProvider { /// Liefert einen aktuell gültigen Access-Token oder `null`, wenn /// keine Session aktiv ist. Darf bei Bedarf einen Refresh anstoßen. /// /// Wirft [AuthTemporarilyUnavailableException], wenn zwar eine Session /// existiert, der Token aber wegen eines **vorübergehenden** Problems /// (Netz/VPN/Timeout) gerade nicht erneuert werden konnte. Future currentAccessToken(); } /// Der Access-Token konnte gerade nicht erneuert werden, obwohl die Session /// (Refresh-Token) weiterhin gültig sein dürfte — typisch: Mobilfunk-/VPN- /// Aussetzer, Timeout, Login-Server kurz nicht erreichbar. /// /// Bewusst **kein** „Session abgelaufen": der Aufrufer soll den Request als /// Verbindungsfehler behandeln und später erneut versuchen, statt den Fahrer /// auszuloggen. class AuthTemporarilyUnavailableException implements Exception { const AuthTemporarilyUnavailableException(this.cause); final Object cause; @override String toString() => 'AuthTemporarilyUnavailableException($cause)'; }