import { sql } from '@vercel/postgres'; import jwt from 'jsonwebtoken'; const JWT_SECRET = process.env.JWT_SECRET || 'your-secret-key-change-in-production'; export default async function handler(req, res) { // Set CORS headers res.setHeader('Access-Control-Allow-Origin', '*'); res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS'); res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization'); // Handle preflight requests if (req.method === 'OPTIONS') { res.status(200).end(); return; } if (req.method !== 'GET') { return res.status(405).json({ error: 'Method not allowed' }); } try { const authHeader = req.headers.authorization; if (!authHeader || !authHeader.startsWith('Bearer ')) { // For development, return admin user if no token provided // In production, this should return 401 const result = await sql` SELECT id, email, role, created_at FROM users WHERE email = 'admin@tcgvault.com' `; if (result.rows.length > 0) { return res.status(200).json(result.rows[0]); } else { return res.status(401).json({ error: 'No admin user found' }); } } const token = authHeader.substring(7); try { const decoded = jwt.verify(token, JWT_SECRET); // Get user data from database const result = await sql` SELECT id, email, role, created_at FROM users WHERE id = ${decoded.userId} `; if (result.rows.length === 0) { return res.status(401).json({ error: 'User not found' }); } const user = result.rows[0]; res.status(200).json(user); } catch (jwtError) { console.error('JWT verification error:', jwtError); return res.status(401).json({ error: 'Invalid token' }); } } catch (error) { console.error('Auth verification error:', error); res.status(500).json({ error: 'Internal server error' }); } }