import { storeCreateToken, storeGetUserByToken } from '../store' let tokenCounter = 0 /** Generate a random session token and associate it with a user */ export function issueToken(username: string): { token: string expires_in: number } { // Use crypto.getRandomValues for uniqueness const bytes = new Uint8Array(16) crypto.getRandomValues(bytes) const hex = Array.from(bytes) .map(b => b.toString(16).padStart(2, '0')) .join('') const token = `rct_${tokenCounter++}_${hex}` storeCreateToken(username, token) return { token, expires_in: 86400 } } /** Resolve a token to a username. Returns null if invalid. */ export function resolveToken(token: string | undefined): string | null { if (!token) return null const entry = storeGetUserByToken(token) if (!entry) return null return entry.username }