import type { UserRole } from '../data/users' const AUTH_KEY = 'balout.admin.auth' export type AuthUser = { id: string title: string firstName: string lastName: string cellNumber: string role: UserRole name: string } export type AuthSession = { accessToken: string refreshToken: string user: AuthUser } function isSession(value: unknown): value is AuthSession { if (!value || typeof value !== 'object') return false const session = value as Partial return ( typeof session.accessToken === 'string' && typeof session.refreshToken === 'string' && !!session.user && typeof session.user === 'object' && typeof session.user.name === 'string' && typeof session.user.id === 'string' ) } export function getSession(): AuthSession | null { try { const raw = localStorage.getItem(AUTH_KEY) if (!raw) return null const parsed = JSON.parse(raw) as unknown return isSession(parsed) ? parsed : null } catch { return null } } export function setSession(session: AuthSession) { localStorage.setItem(AUTH_KEY, JSON.stringify(session)) } export function clearSession() { localStorage.removeItem(AUTH_KEY) } export function isAuthenticated(): boolean { return getSession() !== null } export function getAccessToken(): string | null { return getSession()?.accessToken ?? null } export function getRefreshToken(): string | null { return getSession()?.refreshToken ?? null } export function getAuthUser(): AuthUser | null { return getSession()?.user ?? null }