init: 整合项目(dashboard + www + docs)
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
const { decodeToken } = require('../utils/jwt');
|
||||
|
||||
function authMiddleware(req, res, next) {
|
||||
const auth = req.headers.authorization;
|
||||
if (!auth || !auth.startsWith('Bearer ')) {
|
||||
return res.status(401).json({ detail: '未登录或缺少凭证' });
|
||||
}
|
||||
const token = auth.slice(7);
|
||||
try {
|
||||
const payload = decodeToken(token);
|
||||
if (!payload.sub) {
|
||||
return res.status(401).json({ detail: '无效凭证' });
|
||||
}
|
||||
req.user = {
|
||||
id: payload.sub,
|
||||
username: payload.username || '',
|
||||
is_super_admin: !!payload.is_super_admin,
|
||||
};
|
||||
next();
|
||||
} catch (e) {
|
||||
if (e.name === 'TokenExpiredError') {
|
||||
return res.status(401).json({ detail: '登录已过期,请重新登录' });
|
||||
}
|
||||
return res.status(401).json({ detail: '无效凭证' });
|
||||
}
|
||||
}
|
||||
|
||||
function requireSuperAdmin(req, res, next) {
|
||||
if (!req.user?.is_super_admin) {
|
||||
return res.status(403).json({ detail: '需要超级管理员权限' });
|
||||
}
|
||||
next();
|
||||
}
|
||||
|
||||
module.exports = { authMiddleware, requireSuperAdmin };
|
||||
@@ -0,0 +1,11 @@
|
||||
const MAX_BODY_SIZE = 8 * 1024 * 1024; // 8MB
|
||||
|
||||
function bodyLimit(req, res, next) {
|
||||
const contentLength = req.headers['content-length'];
|
||||
if (contentLength && parseInt(contentLength, 10) > MAX_BODY_SIZE) {
|
||||
return res.status(413).json({ detail: '上传文件大小超过 8MB 限制' });
|
||||
}
|
||||
next();
|
||||
}
|
||||
|
||||
module.exports = { bodyLimit };
|
||||
Reference in New Issue
Block a user