fix: add UNIQUE on email, check dup email in profile update, generic error messages in auth route

This commit is contained in:
2026-07-12 04:20:56 +08:00
parent f2fec8e609
commit 5dd0db76be
2 changed files with 15 additions and 7 deletions

View File

@@ -71,7 +71,8 @@ router.post('/register', validateLengths({
res.status(201).json({ message: '注册成功,请查收验证邮件' });
} catch (err) {
res.status(500).json({ error: err.message });
console.error('[auth]', err);
res.status(500).json({ error: '服务器内部错误' });
}
});
@@ -91,7 +92,8 @@ router.get('/verify-email', async (req, res) => {
res.json({ message: '邮箱验证成功,现在可以登录了' });
} catch (err) {
res.status(500).json({ error: err.message });
console.error('[auth]', err);
res.status(500).json({ error: '服务器内部错误' });
}
});
@@ -126,7 +128,8 @@ router.post('/login', async (req, res) => {
},
});
} catch (err) {
res.status(500).json({ error: err.message });
console.error('[auth]', err);
res.status(500).json({ error: '服务器内部错误' });
}
});
@@ -139,7 +142,8 @@ router.get('/me', authenticate, async (req, res) => {
if (!user) return res.status(404).json({ error: '用户不存在' });
res.json(user);
} catch (err) {
res.status(500).json({ error: err.message });
console.error('[auth]', err);
res.status(500).json({ error: '服务器内部错误' });
}
});
@@ -157,6 +161,8 @@ router.put('/profile', authenticate, async (req, res) => {
if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(req.body.email)) {
return res.status(400).json({ error: '邮箱格式不正确' });
}
const dup = await getRow('SELECT id FROM users WHERE email = ? AND id != ?', [req.body.email, req.user.id]);
if (dup) return res.status(400).json({ error: '邮箱已被其他账号使用' });
fields.email = req.body.email;
}
@@ -174,7 +180,8 @@ router.put('/profile', authenticate, async (req, res) => {
const token = generateToken(updated);
res.json({ message: '更新成功', token, user: updated });
} catch (err) {
res.status(500).json({ error: err.message });
console.error('[auth]', err);
res.status(500).json({ error: '服务器内部错误' });
}
});
@@ -196,7 +203,8 @@ router.put('/password', authenticate, async (req, res) => {
await query('UPDATE users SET password = ? WHERE id = ?', [hashed, req.user.id]);
res.json({ message: '密码修改成功' });
} catch (err) {
res.status(500).json({ error: err.message });
console.error('[auth]', err);
res.status(500).json({ error: '服务器内部错误' });
}
});