This commit is contained in:
qwq
2026-06-04 11:01:29 +08:00
commit cccb578669
14509 changed files with 2636947 additions and 0 deletions
+36
View File
@@ -0,0 +1,36 @@
const jwt = require('jsonwebtoken');
const JWT_SECRET = process.env.JWT_SECRET || 'worktime_jwt_secret_2024';
// Verify JWT token
function authenticateToken(req, res, next) {
const authHeader = req.headers['authorization'];
const token = authHeader && authHeader.split(' ')[1]; // Bearer TOKEN
if (!token) {
return res.status(401).json({ code: 401, message: '未登录,请先登录' });
}
try {
const decoded = jwt.verify(token, JWT_SECRET);
req.user = decoded;
next();
} catch (err) {
return res.status(401).json({ code: 401, message: 'Token无效或已过期,请重新登录' });
}
}
// Role-based access control middleware
function requireRole(...roles) {
return (req, res, next) => {
if (!req.user) {
return res.status(401).json({ code: 401, message: '未登录' });
}
if (!roles.includes(req.user.role)) {
return res.status(403).json({ code: 403, message: '权限不足,无法访问' });
}
next();
};
}
module.exports = { authenticateToken, requireRole, JWT_SECRET };