From 4af34616f9c007aac47a57fbd5253bc82cf11528 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Thu, 11 Jun 2026 13:41:35 +0400 Subject: [PATCH] =?UTF-8?q?fix:=20canAdminMode=20=D0=BF=D0=BE=20email=20nt?= =?UTF-8?q?azetdinov@nubes.ru=20=D0=B2=D0=BC=D0=B5=D1=81=D1=82=D0=BE=20isA?= =?UTF-8?q?dmin?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ui/index.js: email берётся из сессии (IAM/Keycloak) - canAdminMode: (isAdmin AND WZ01112) OR (ntazetdinov@nubes.ru AND WZ01112) - Временно для тестов, убрать после настройки IAM isAdmin --- package.json | 2 +- ui/index.js | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index f797ade..1759b31 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ipwhitelist", - "version": "0.5.41", + "version": "0.5.42", "description": "IP WhiteList microservice for cloud provider", "main": "server.js", "scripts": { diff --git a/ui/index.js b/ui/index.js index bc34c0a..0f665ab 100644 --- a/ui/index.js +++ b/ui/index.js @@ -58,18 +58,22 @@ function createUiRouter({ auth, MOCK_USERS, authLimiter }) { ? sessionActive : (allClientIds[0] || rawClientId); + // Email из сессии (IAM или Keycloak) или из JWT + const sessionEmail = req.session && req.session.user && req.session.user.email; + const email = sessionEmail || payload.email || payload.login || activeClientId + '@unknown'; + // 🔮 isAdmin через IAM const iamAdmin = req.session && req.session.user && req.session.user.isAdmin; - // ВРЕМЕННО: WZ01112 без isAdmin тоже видит toggle (для тестов) + // ВРЕМЕННО: ntazetdinov@nubes.ru без isAdmin тоже видит toggle (для тестов) const canAdminMode = !!(iamAdmin && activeClientId === ADMIN_CLIENT_ID) - || activeClientId === ADMIN_CLIENT_ID; // ← убрать после тестов + || (email === 'ntazetdinov@nubes.ru' && activeClientId === ADMIN_CLIENT_ID); // ← убрать после тестов req.user = { clientId: rawClientId, allClientIds, activeClientId, companyId: payload.company_id || payload.companyId || null, companyName: payload.company_name || payload.companyName || activeClientId, - email: payload.email || activeClientId + '@unknown', + email, isAdmin: iamAdmin, canAdminMode, adminMode: !!(req.session && req.session.adminMode),