import { createHash } from 'crypto' import { prisma } from '@/lib/prisma' export async function authenticateApiRequest(request: Request) { const authHeader = request.headers.get('Authorization') if (!authHeader?.startsWith('Bearer ')) { return { error: 'Unauthorized', status: 401 as const } } const token = authHeader.slice(7) const tokenHash = createHash('sha256').update(token).digest('hex') const apiToken = await prisma.apiToken.findUnique({ where: { token_hash: tokenHash }, include: { user: true }, }) if (!apiToken || apiToken.revoked_at) { return { error: 'Unauthorized', status: 401 as const } } return { userId: apiToken.user_id, isDemo: apiToken.user.is_demo } }