const express = require('express'); const router = express.Router(); const db = require('../db'); const { hashPassword, verifyPassword, generateToken } = require('../utils/auth'); const { authenticate } = require('../middleware/auth'); router.post('/login', async (req, res) => { try { const { username, password } = req.body; if (!username || !password) { return res.status(400).json({ success: false, message: '用户名和密码不能为空' }); } const result = await db.query( 'SELECT id, username, name, email, phone, role, avatar, passport, driver_license, password_hash FROM users WHERE username = $1', [username] ); if (!result || result.rows.length === 0) { return res.status(401).json({ success: false, message: '用户名或密码错误' }); } const user = result.rows[0]; if (!user.password_hash || !verifyPassword(password, user.password_hash)) { return res.status(401).json({ success: false, message: '用户名或密码错误' }); } const token = generateToken({ id: user.id, username: user.username, role: user.role }); res.json({ success: true, data: { id: user.id, username: user.username, name: user.name, email: user.email, phone: user.phone, role: user.role, department: '', avatar: user.avatar || null, passport: user.passport || null, driverLicense: user.driver_license || null, token: token } }); } catch (error) { console.error('登录失败:', error); res.status(500).json({ success: false, message: '登录失败', error: process.env.NODE_ENV === 'development' ? error.message : '操作失败' }); } }); router.get('/verify', authenticate, (req, res) => { res.json({ success: true, data: { user: req.user } }); }); router.post('/logout', authenticate, (req, res) => { res.json({ success: true, message: '登出成功' }); }); module.exports = router;