import jwt from 'jsonwebtoken'; import { sql } from '@vercel/postgres'; export async function verifyToken(token) { if (!token) { return null; } try { const jwtSecret = process.env.JWT_SECRET || 'fallback-secret-change-in-production'; const decoded = jwt.verify(token, jwtSecret); // Get user from database const result = await sql.query(` SELECT up.user_id, up.username, up.email, up.first_name, up.last_name, up.avatar_url, up.roles, up.created_at, up.updated_at FROM user_preferences up WHERE up.user_id = $1 `, [decoded.userId]); if (result.rows.length === 0) { return null; } const user = result.rows[0]; return { id: user.user_id, username: user.username, email: user.email, firstName: user.first_name, lastName: user.last_name, avatarUrl: user.avatar_url, roles: user.roles || [], createdAt: user.created_at, updatedAt: user.updated_at }; } catch (error) { console.error('Token verification failed:', error); return null; } } export function isAdmin(user) { return user && user.roles && user.roles.includes('admin'); }