Files
2026-04-02 00:59:42 +08:00

85 lines
2.1 KiB
JavaScript

// 用户认证模块 - 后端代码
// 文件位置: shared/code/backend/user-auth.js
// 创建时间: 2026-03-31 20:56
// 开发者: 后端工程师 (BE)
const express = require('express');
const router = express.Router();
const jwt = require('jsonwebtoken');
// 用户登录接口
router.post('/login', async (req, res) => {
try {
const { username, password } = req.body;
// 验证用户凭据
const user = await validateCredentials(username, password);
if (!user) {
return res.status(401).json({ error: 'Invalid credentials' });
}
// 生成JWT token
const token = jwt.sign(
{ userId: user.id, username: user.username },
process.env.JWT_SECRET,
{ expiresIn: '7d' }
);
res.json({
success: true,
token,
user: {
id: user.id,
username: user.username,
email: user.email
}
});
} catch (error) {
console.error('Login error:', error);
res.status(500).json({ error: 'Internal server error' });
}
});
// 用户注册接口
router.post('/register', async (req, res) => {
try {
const { username, password, email } = req.body;
// 检查用户是否已存在
const existingUser = await findUserByUsername(username);
if (existingUser) {
return res.status(400).json({ error: 'Username already exists' });
}
// 创建新用户
const newUser = await createUser({ username, password, email });
res.status(201).json({
success: true,
message: 'User registered successfully',
userId: newUser.id
});
} catch (error) {
console.error('Registration error:', error);
res.status(500).json({ error: 'Internal server error' });
}
});
// 辅助函数
async function validateCredentials(username, password) {
// 实际实现中这里会查询数据库
return { id: 1, username: 'testuser', email: 'test@example.com' };
}
async function findUserByUsername(username) {
// 实际实现中这里会查询数据库
return null;
}
async function createUser(userData) {
// 实际实现中这里会插入数据库
return { id: 1, ...userData };
}
module.exports = router;