fix: X-Imp-* headers bridge UI→API impersonation + timezone GMT+4

This commit is contained in:
2026-06-11 20:17:07 +04:00
parent d0a0fdc264
commit 68ea44a81d
5 changed files with 50 additions and 14 deletions
+16
View File
@@ -445,6 +445,22 @@ function createBearerMiddleware(isOidc, devMode) {
try {
const payload = verifyAnyToken(bearer, devMode);
req.user = userFromPayload(payload);
// Проброс контекста имперсонации из UI-слоя (X-Imp-* заголовки)
// Устанавливаются ui/api-client.js → api.impHeaders()
const impEmail = req.headers['x-imp-email'] || '';
const impOrig = req.headers['x-imp-originalemail'] || '';
const impClientId = req.headers['x-imp-clientid'] || '';
if (impEmail) {
req.user.email = impEmail;
req.user.originalUserEmail = impOrig;
req.user.isImpersonated = true;
if (impClientId) {
req.user.clientId = impClientId;
req.user.activeClientId = impClientId;
}
}
return next();
} catch (e) {
return res.status(401).json({ error: 'Invalid token: ' + e.message });