feat(auth): portable auth provider interface types (AUTH-0)
This commit is contained in:
@@ -0,0 +1,44 @@
|
|||||||
|
/**
|
||||||
|
* Portabelt autentiseringsgränssnitt.
|
||||||
|
*
|
||||||
|
* App-koden (vyer, affärslogik) anropar ENDAST detta gränssnitt – aldrig
|
||||||
|
* Firebase direkt. Firebase blir en implementation (FirebaseAuthProvider); en
|
||||||
|
* framtida ZitadelAuthProvider ska kunna ersätta den utan att någon vy eller
|
||||||
|
* affärslogik ändras. ALL leverantörsspecifik import (firebase/*) hålls
|
||||||
|
* isolerad till implementationsfilen – aldrig här, aldrig i en vy.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** Minimal, leverantörsneutral användarrepresentation. */
|
||||||
|
export interface AuthUser {
|
||||||
|
/** Stabil unik identitet från identitetsleverantören (Firebase-UID i dag). */
|
||||||
|
uid: string;
|
||||||
|
email: string | null;
|
||||||
|
emailVerified: boolean;
|
||||||
|
displayName: string | null;
|
||||||
|
/** t.ex. "password" | "google.com" | "apple.com". Neutral sträng. */
|
||||||
|
providerId: string | null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Avregistreringsfunktion som returneras av onAuthStateChanged. */
|
||||||
|
export type Unsubscribe = () => void;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enda gränssnittet mot autentisering. Implementeras av FirebaseAuthProvider.
|
||||||
|
* Alla nätverksmetoder är async och kastar vid fel (fångas i UI-lagret).
|
||||||
|
*/
|
||||||
|
export interface AuthProvider {
|
||||||
|
signUpWithEmail(email: string, password: string): Promise<AuthUser>;
|
||||||
|
signInWithEmail(email: string, password: string): Promise<AuthUser>;
|
||||||
|
signInWithGoogle(): Promise<AuthUser>;
|
||||||
|
signInWithApple(): Promise<AuthUser>;
|
||||||
|
signOut(): Promise<void>;
|
||||||
|
/** Nuvarande inloggade användare, eller null. Synkront ögonblicksvärde. */
|
||||||
|
currentUser(): AuthUser | null;
|
||||||
|
/** Prenumererar på inloggningsändringar. Returnerar avregistrering. */
|
||||||
|
onAuthStateChanged(callback: (user: AuthUser | null) => void): Unsubscribe;
|
||||||
|
/**
|
||||||
|
* Hämtar aktuell ID-token för backend-verifiering. forceRefresh tvingar
|
||||||
|
* förnyelse mot leverantören. null om ingen är inloggad.
|
||||||
|
*/
|
||||||
|
getIdToken(forceRefresh?: boolean): Promise<string | null>;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user