Files
tongjiweb/server/routes/auth.js
T
2026-06-04 11:01:29 +08:00

66 lines
1.9 KiB
JavaScript

const express = require('express');
const jwt = require('jsonwebtoken');
const bcrypt = require('bcryptjs');
const db = require('../db');
const { JWT_SECRET } = require('../middleware/auth');
const router = express.Router();
// POST /api/auth/login
router.post('/login', (req, res) => {
const { username, password } = req.body;
if (!username || !password) {
return res.status(400).json({ code: 400, message: '用户名和密码不能为空' });
}
const user = db.prepare('SELECT * FROM users WHERE username = ?').get(username);
if (!user) {
return res.status(401).json({ code: 401, message: '用户名或密码错误' });
}
if (user.status !== 1) {
return res.status(403).json({ code: 403, message: '账号已被禁用' });
}
if (user.role === 'sales') {
return res.status(403).json({ code: 403, message: '销售人员无需登录系统' });
}
if (!bcrypt.compareSync(password, user.password)) {
return res.status(401).json({ code: 401, message: '用户名或密码错误' });
}
const token = jwt.sign(
{ id: user.id, username: user.username, role: user.role, realname: user.realname },
JWT_SECRET,
{ expiresIn: '24h' }
);
res.json({
code: 200,
message: '登录成功',
data: {
token,
user: {
id: user.id,
username: user.username,
realname: user.realname,
role: user.role
}
}
});
});
// GET /api/auth/me
router.get('/me', (req, res) => {
// This route requires authentication (handled in middleware)
const user = db.prepare('SELECT id, username, realname, role, status FROM users WHERE id = ?').get(req.user.id);
if (!user) {
return res.status(404).json({ code: 404, message: '用户不存在' });
}
res.json({ code: 200, data: user });
});
module.exports = router;