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