import { Router } from 'express'; import { fetchGraph } from '../utils/index.ts'; import { AuthManager } from '../auth/index.ts'; export default (auth: AuthManager) => { const router = Router(); router.get('/', async (req, res) => { try { const sessionId = req.header('x-session-id'); if (!sessionId) { return res.status(400).json({ error: 'Missing x-session-id header' }); } let token: string; try { token = await auth.acquireTokenBySessionId(sessionId); } catch (err: any) { const status = err.message.includes('expired') || err.message.includes('not found') ? 401 : 500; return res.status(status).json({ error: 'authentication_required', message: err.message, hint: err.message.includes('expired') ? 'Device code has expired. Please call POST /login again.' : 'Please call POST /login first to authenticate', }); } const data = await fetchGraph('/me', token); res.json(data); } catch (err: any) { res.status(500).json({ error: err.message }); } }); return router; };