Pro firefox enhancements
This commit is contained in:
@@ -7,6 +7,32 @@ import { AppUser, AuthTokenResponse } from '../interfaces/auth';
|
||||
|
||||
const TOKEN_KEY = 'kmtn_access_token';
|
||||
|
||||
// ── Safe localStorage helpers (privacy browsers may throw SecurityError) ──
|
||||
|
||||
function safeLocalStorageGet(key: string): string | null {
|
||||
try {
|
||||
return localStorage.getItem(key);
|
||||
} catch {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
function safeLocalStorageSet(key: string, value: string): void {
|
||||
try {
|
||||
localStorage.setItem(key, value);
|
||||
} catch {
|
||||
// Storage blocked — silently ignore
|
||||
}
|
||||
}
|
||||
|
||||
function safeLocalStorageRemove(key: string): void {
|
||||
try {
|
||||
localStorage.removeItem(key);
|
||||
} catch {
|
||||
// Storage blocked — silently ignore
|
||||
}
|
||||
}
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root',
|
||||
})
|
||||
@@ -30,7 +56,7 @@ export class AuthService {
|
||||
username,
|
||||
password,
|
||||
}).pipe(
|
||||
tap((resp) => localStorage.setItem(TOKEN_KEY, resp.access_token)),
|
||||
tap((resp) => safeLocalStorageSet(TOKEN_KEY, resp.access_token)),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -39,13 +65,13 @@ export class AuthService {
|
||||
return this.http.post<AuthTokenResponse>(`${this.baseUrl}/google`, {
|
||||
id_token: idToken,
|
||||
}).pipe(
|
||||
tap((resp) => localStorage.setItem(TOKEN_KEY, resp.access_token)),
|
||||
tap((resp) => safeLocalStorageSet(TOKEN_KEY, resp.access_token)),
|
||||
);
|
||||
}
|
||||
|
||||
/** Clear stored token and reset auth state. */
|
||||
logout(): void {
|
||||
localStorage.removeItem(TOKEN_KEY);
|
||||
safeLocalStorageRemove(TOKEN_KEY);
|
||||
this.authStateSubject.next(null);
|
||||
}
|
||||
|
||||
@@ -83,7 +109,7 @@ export class AuthService {
|
||||
// ── Private ──────────────────────────────────────────────
|
||||
|
||||
private _getToken(): string | null {
|
||||
return localStorage.getItem(TOKEN_KEY);
|
||||
return safeLocalStorageGet(TOKEN_KEY);
|
||||
}
|
||||
|
||||
private async _initAuth(): Promise<void> {
|
||||
|
||||
Reference in New Issue
Block a user