fix: add UNIQUE on email, check dup email in profile update, generic error messages in auth route
This commit is contained in:
@@ -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: '服务器内部错误' });
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user