export type PersistedOidcUser = { access_token?: string; expires_at?: number; profile?: Record; }; const OIDC_USER_KEY_PREFIX = "oidc.user:"; const OIDC_CLIENT_ID = "devfront"; export function findPersistedOidcUser( storage: Storage = window.localStorage, ): PersistedOidcUser | null { for (let index = 0; index < storage.length; index += 1) { const key = storage.key(index); if ( key === null || !key.startsWith(OIDC_USER_KEY_PREFIX) || !key.endsWith(`:${OIDC_CLIENT_ID}`) ) { continue; } const rawValue = storage.getItem(key); if (!rawValue) { continue; } try { const parsed = JSON.parse(rawValue) as PersistedOidcUser; if ( typeof parsed.expires_at === "number" && parsed.expires_at * 1000 > Date.now() ) { return parsed; } } catch { // Ignore malformed storage entries and keep scanning. } } return null; }