备份:PWA配置前的完整版本
包含所有最新开发的功能和修复,作为PWA正确配置前的备份点。
This commit is contained in:
+64
-6
@@ -4,6 +4,34 @@ const db = require('../db');
|
||||
const { hashPassword, verifyPassword } = require('../utils/auth');
|
||||
const { authenticate, requireAdmin } = require('../middleware/auth');
|
||||
|
||||
router.get('/me', authenticate, async (req, res) => {
|
||||
try {
|
||||
const result = await db.query('SELECT id, username, name, email, phone, role, avatar, passport, driver_license, is_active, created_at, updated_at FROM users WHERE id = $1', [req.user.id]);
|
||||
if (result.rows.length === 0) {
|
||||
return res.status(404).json({ success: false, message: '用户不存在' });
|
||||
}
|
||||
const u = result.rows[0];
|
||||
res.json({
|
||||
success: true,
|
||||
data: {
|
||||
id: u.id,
|
||||
username: u.username,
|
||||
name: u.name,
|
||||
email: u.email,
|
||||
phone: u.phone,
|
||||
role: u.role,
|
||||
avatar: u.avatar,
|
||||
passport: u.passport,
|
||||
driverLicense: u.driver_license,
|
||||
is_active: u.is_active
|
||||
}
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('获取用户信息失败:', error);
|
||||
res.status(500).json({ success: false, message: '获取用户信息失败' });
|
||||
}
|
||||
});
|
||||
|
||||
router.get('/', authenticate, requireAdmin, async (req, res) => {
|
||||
try {
|
||||
const usersResult = await db.query('SELECT id, username, name, email, phone, role, is_active, created_at, updated_at FROM users ORDER BY id');
|
||||
@@ -45,25 +73,55 @@ router.post('/', authenticate, requireAdmin, async (req, res) => {
|
||||
}
|
||||
});
|
||||
|
||||
router.put('/:id/profile', authenticate, async (req, res) => {
|
||||
try {
|
||||
const { id } = req.params;
|
||||
const userId = parseInt(id);
|
||||
|
||||
if (req.user.id !== userId && req.user.role !== 'admin') {
|
||||
return res.status(403).json({ success: false, message: '只能修改自己的个人信息' });
|
||||
}
|
||||
|
||||
const { name, email, phone, avatar, passport, driver_license } = req.body;
|
||||
|
||||
await db.query(
|
||||
'UPDATE users SET name = $1, email = $2, phone = $3, avatar = $4, passport = $5, driver_license = $6, updated_at = NOW() WHERE id = $7',
|
||||
[name, email || null, phone || null, avatar || null, passport || null, driver_license || null, userId]
|
||||
);
|
||||
|
||||
const updatedUserResult = await db.query('SELECT id, username, name, email, phone, role, avatar, passport, driver_license, is_active, created_at, updated_at FROM users WHERE id = $1', [userId]);
|
||||
const updatedUser = updatedUserResult.rows[0];
|
||||
|
||||
if (!updatedUser) {
|
||||
return res.status(404).json({ success: false, message: '用户不存在' });
|
||||
}
|
||||
|
||||
res.json({ success: true, data: updatedUser });
|
||||
} catch (error) {
|
||||
console.error('更新个人信息失败:', error);
|
||||
res.status(500).json({ success: false, message: '更新个人信息失败' });
|
||||
}
|
||||
});
|
||||
|
||||
router.put('/:id', authenticate, requireAdmin, async (req, res) => {
|
||||
try {
|
||||
const { id } = req.params;
|
||||
const { name, email, phone, role, password } = req.body;
|
||||
const { name, email, phone, role, password, avatar, passport, driver_license } = req.body;
|
||||
|
||||
if (password) {
|
||||
const passwordHash = hashPassword(password);
|
||||
await db.query(
|
||||
'UPDATE users SET name = $1, email = $2, phone = $3, role = $4, password_hash = $5, updated_at = NOW() WHERE id = $6',
|
||||
[name, email || null, phone || null, role, passwordHash, id]
|
||||
'UPDATE users SET name = $1, email = $2, phone = $3, role = $4, avatar = $5, passport = $6, driver_license = $7, password_hash = $8, updated_at = NOW() WHERE id = $9',
|
||||
[name, email || null, phone || null, role, avatar || null, passport || null, driver_license || null, passwordHash, id]
|
||||
);
|
||||
} else {
|
||||
await db.query(
|
||||
'UPDATE users SET name = $1, email = $2, phone = $3, role = $4, updated_at = NOW() WHERE id = $5',
|
||||
[name, email || null, phone || null, role, id]
|
||||
'UPDATE users SET name = $1, email = $2, phone = $3, role = $4, avatar = $5, passport = $6, driver_license = $7, updated_at = NOW() WHERE id = $8',
|
||||
[name, email || null, phone || null, role, avatar || null, passport || null, driver_license || null, id]
|
||||
);
|
||||
}
|
||||
|
||||
const updatedUserResult = await db.query('SELECT id, username, name, email, phone, role, is_active, created_at, updated_at FROM users WHERE id = $1', [id]);
|
||||
const updatedUserResult = await db.query('SELECT id, username, name, email, phone, role, avatar, passport, driver_license, is_active, created_at, updated_at FROM users WHERE id = $1', [id]);
|
||||
const updatedUser = updatedUserResult.rows[0];
|
||||
|
||||
if (!updatedUser) {
|
||||
|
||||
Reference in New Issue
Block a user