import bcrypt from 'bcryptjs' import jwt from 'jsonwebtoken' import { prisma } from '@/lib/prisma' import type { NextRequest } from 'next/server' const JWT_SECRET = process.env.JWT_SECRET || 'your-jwt-secret-here' export async function hashPassword(password: string): Promise { return await bcrypt.hash(password, 12) } export async function verifyPassword(password: string, hashedPassword: string): Promise { return await bcrypt.compare(password, hashedPassword) } export function generateToken(payload: any): string { return jwt.sign(payload, JWT_SECRET, { expiresIn: '7d' }) } export function verifyToken(token: string): any { try { return jwt.verify(token, JWT_SECRET) } catch (error) { return null } } export async function getUser(request: NextRequest) { try { const authHeader = request.headers.get('Authorization') const token = authHeader?.replace('Bearer ', '') if (!token) { return null } const decoded = verifyToken(token) if (!decoded || !decoded.userId) { return null } const user = await prisma.user.findUnique({ where: { id: decoded.userId }, select: { id: true, email: true, username: true, name: true, phone: true, address: true, isAdmin: true, createdAt: true } }) return user } catch (error) { console.error('获取用户信息失败:', error) return null } }