v2: убран v2_ префикс из req.* — роутер и модули согласованы

This commit is contained in:
2026-06-12 21:19:43 +04:00
parent 53dec84045
commit cd49398660
4 changed files with 18 additions and 18 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "ipwhitelist",
"version": "0.5.78",
"version": "0.5.79",
"description": "IP WhiteList microservice for cloud provider",
"main": "server.js",
"scripts": {
+1 -1
View File
@@ -6,7 +6,7 @@
// ═══════════════════════════════════════════════════════════════════════════════
module.exports = {
version: '0.5.78',
version: '0.5.79',
iamUrl: process.env.V2_IAM_API_URL || 'https://auth-api.ngcloud.ru',
appUrl: process.env.V2_APP_URL || 'https://whitelist.nodejsk8s.services.ngcloud.ru',
};
+9 -9
View File
@@ -4,7 +4,7 @@
// ═══════════════════════════════════════════════════════════════════════════════
/**
* middleware — извлекает контекст из сессии и кладёт в req.v2_*
* middleware — извлекает контекст из сессии и кладёт в req.*
* Вызывается перед всеми маршрутами v2.
*/
function resolveContext(req, res, next) {
@@ -15,15 +15,15 @@ function resolveContext(req, res, next) {
const isImpersonated = !!u.isImpersonated;
// Контекст для CRUD
req.v2_email = isImpersonated ? (u.originalUserEmail || u.email) : u.email;
req.v2_clientId = isImpersonated ? (u.impersonatedCompanyId || u.activeClientId || u.clientId) : (u.activeClientId || u.clientId);
req.v2_isAdmin = isAdmin;
req.v2_isImpersonated = isImpersonated;
req.v2_impersonatedBy = isImpersonated ? u.email : null; // кто реально (для аудита)
req.email = isImpersonated ? (u.originalUserEmail || u.email) : u.email;
req.clientId = isImpersonated ? (u.impersonatedCompanyId || u.activeClientId || u.clientId) : (u.activeClientId || u.clientId);
req.isAdmin = isAdmin;
req.isImpersonated = isImpersonated;
req.impersonatedBy = isImpersonated ? u.email : null; // кто реально (для аудита)
req.user = u;
req.v2_allClientIds = u.allClientIds || [];
req.v2_profiles = u.profiles || [];
req.v2_companyName = u.companyName || u.clientId;
req.allClientIds = u.allClientIds || [];
req.profiles = u.profiles || [];
req.companyName = u.companyName || u.clientId;
next();
}
+7 -7
View File
@@ -26,39 +26,39 @@ t('нет user', { user: null }, { _redirect: '/v2/login' });
t('обычный юзер 1 компания', { user: {
email: 'u@t.ru', clientId: 'WZ03709', activeClientId: 'WZ03709',
allClientIds: ['WZ03709'], companyName: 'test', isAdmin: false, profiles: []
}}, { 'v2_email': 'u@t.ru', 'v2_clientId': 'WZ03709', 'v2_isAdmin': false, 'v2_isImpersonated': false, 'v2_impersonatedBy': null });
}}, { 'email': 'u@t.ru', 'clientId': 'WZ03709', 'isAdmin': false, 'isImpersonated': false, 'impersonatedBy': null });
t('юзер 2 компании', { user: {
email: 'm@t.ru', clientId: 'WZ88888', activeClientId: 'WZ77777',
allClientIds: ['WZ88888','WZ77777'], companyName: 'AB', isAdmin: false, profiles: []
}}, { 'v2_email': 'm@t.ru', 'v2_clientId': 'WZ77777', 'v2_allClientIds': ['WZ88888','WZ77777'] });
}}, { 'email': 'm@t.ru', 'clientId': 'WZ77777', 'allClientIds': ['WZ88888','WZ77777'] });
t('админ adminMode', { user: {
email: 'a@t.ru', clientId: 'WZ01112', activeClientId: 'WZ01112',
allClientIds: ['WZ01112'], isAdmin: true, profiles: []
}, adminMode: true }, { 'v2_email': 'a@t.ru', 'v2_clientId': 'WZ01112', 'v2_isAdmin': true });
}, adminMode: true }, { 'email': 'a@t.ru', 'clientId': 'WZ01112', 'isAdmin': true });
t('админ без adminMode', { user: {
email: 'a@t.ru', clientId: 'WZ01112', activeClientId: 'WZ01112',
allClientIds: ['WZ01112'], isAdmin: true, profiles: []
} }, { 'v2_email': 'a@t.ru', 'v2_clientId': 'WZ01112', 'v2_isAdmin': false });
} }, { 'email': 'a@t.ru', 'clientId': 'WZ01112', 'isAdmin': false });
t('имперсонация', { user: {
email: 'admin@t.ru', clientId: 'WZ01112', activeClientId: 'WZ01112',
allClientIds: ['WZ01112','WZ03709'], isAdmin: true, isImpersonated: true,
originalUserEmail: 'real@t.ru', impersonatedCompanyId: 'WZ03709', profiles: []
}, adminMode: true }, { 'v2_email': 'real@t.ru', 'v2_clientId': 'WZ03709', 'v2_isImpersonated': true, 'v2_impersonatedBy': 'admin@t.ru' });
}, adminMode: true }, { 'email': 'real@t.ru', 'clientId': 'WZ03709', 'isImpersonated': true, 'impersonatedBy': 'admin@t.ru' });
t('имперс. без origEmail', { user: {
email: 'x@t.ru', clientId: 'WZ01112', activeClientId: 'WZ01112',
allClientIds: ['WZ01112'], isAdmin: true, isImpersonated: true,
originalUserEmail: '', impersonatedCompanyId: '', profiles: []
} }, { 'v2_email': 'x@t.ru', 'v2_clientId': 'WZ01112', 'v2_impersonatedBy': 'x@t.ru' });
} }, { 'email': 'x@t.ru', 'clientId': 'WZ01112', 'impersonatedBy': 'x@t.ru' });
t('без activeClientId', { user: {
email: 'y@t.ru', clientId: 'WZ03709', allClientIds: ['WZ03709'],
isAdmin: false, profiles: []
} }, { 'v2_email': 'y@t.ru', 'v2_clientId': 'WZ03709' });
} }, { 'email': 'y@t.ru', 'clientId': 'WZ03709' });
console.log(`\n${passed} passed, ${failed} failed`);
if (failed) process.exit(1);