import crypto from 'node:crypto';
import { prisma } from './db';

/** B2B anahtarı: "ps_" + 32 hex. Yalnızca gösterildiği an üretilir; veritabanında saklanır. */
export const newApiKey = () => 'ps_' + crypto.randomBytes(24).toString('hex');

/** Authorization: Bearer ps_… başlığından kullanıcıyı bulur. */
export async function apiUser(req: Request) {
  const m = (req.headers.get('authorization') || '').match(/^Bearer\s+(ps_[0-9a-f]{48})$/);
  if (!m) return null;
  const u = await prisma.user.findUnique({ where: { apiKey: m[1] } });
  if (!u || u.disabledAt || !u.emailVerifiedAt) return null;
  return u;
}
