fix: P0/P1 fixes (auth+limit+schema) + project audit docs

This commit is contained in:
2026-05-31 09:42:46 +03:00
parent d81430dc9a
commit 0413b44051
9 changed files with 385 additions and 10 deletions
+21 -1
View File
@@ -93,7 +93,8 @@ async function initAuth() {
return {
isOidc,
middleware: createMiddleware(isOidc),
middleware: createMiddleware(isOidc),
bearerMiddleware: createBearerMiddleware(isOidc),
// OIDC-хелперы (используются в src/routes/auth.js)
buildAuthUrl,
exchangeCode,
@@ -252,6 +253,25 @@ function userFromPayload(payload) {
};
}
// ── Bearer-only middleware (для /api/v1) ────────────────────────────────────
// Не смотрит на сессию — всегда проверяет Bearer JWT явно.
// Используется в src/api/index.js вместо auth.middleware.
function createBearerMiddleware(isOidc) {
return function bearerAuthMiddleware(req, res, next) {
const bearer = (req.headers.authorization || '').replace(/^Bearer\s+/i, '').trim();
if (!bearer) {
return res.status(401).json({ error: 'Bearer token required' });
}
try {
const payload = isOidc ? verifyOidcToken(bearer) : verifyMockToken(bearer);
req.user = userFromPayload(payload);
return next();
} catch (e) {
return res.status(401).json({ error: 'Invalid token: ' + e.message });
}
};
}
// ── requireAdmin middleware ──────────────────────────────────────────────────
/**
* Middleware-защита для admin-only маршрутов.