v0.5.105: убран переключатель Администратор, adminMode всегда on
This commit is contained in:
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "ipwhitelist",
|
"name": "ipwhitelist",
|
||||||
"version": "0.5.104",
|
"version": "0.5.105",
|
||||||
"description": "IP WhiteList microservice for cloud provider",
|
"description": "IP WhiteList microservice for cloud provider",
|
||||||
"main": "server.js",
|
"main": "server.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@@ -55,19 +55,6 @@ function createV2Router() {
|
|||||||
// ── /v2/admin — редирект на единый интерфейс ───────────────────
|
// ── /v2/admin — редирект на единый интерфейс ───────────────────
|
||||||
router.get('/admin', (req, res) => res.redirect('/v2/app'));
|
router.get('/admin', (req, res) => res.redirect('/v2/app'));
|
||||||
|
|
||||||
// ── POST /v2/toggle-admin — переключить режим администратора ────
|
|
||||||
router.post('/toggle-admin', (req, res) => {
|
|
||||||
if (!req.session || !req.session.user) return res.redirect('/v2/login');
|
|
||||||
const u = req.session.user;
|
|
||||||
const canAdmin = (u.allClientIds || []).includes('WZ01112') || u.clientId === 'WZ01112' || !!u.isAdmin;
|
|
||||||
if (!canAdmin) return res.redirect('/v2/app');
|
|
||||||
u.adminMode = !u.adminMode;
|
|
||||||
req.session.save(err => {
|
|
||||||
if (err) console.error('[toggle-admin] session save error:', err.message);
|
|
||||||
res.redirect('/v2/app');
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
// ── GET /v2/ — редирект на /v2/app ──────────────────────────────────
|
// ── GET /v2/ — редирект на /v2/app ──────────────────────────────────
|
||||||
router.get('/', (req, res) => res.redirect('/v2/app'));
|
router.get('/', (req, res) => res.redirect('/v2/app'));
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
// ═══════════════════════════════════════════════════════════════════════════════
|
// ═══════════════════════════════════════════════════════════════════════════════
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
version: '0.5.101',
|
version: '0.5.102',
|
||||||
|
|
||||||
// ── IAM ──────────────────────────────────────────────────────────────────
|
// ── IAM ──────────────────────────────────────────────────────────────────
|
||||||
iamUrl: process.env.V2_IAM_URL || 'https://auth-api.ngcloud.ru/api/v1/auth/user',
|
iamUrl: process.env.V2_IAM_URL || 'https://auth-api.ngcloud.ru/api/v1/auth/user',
|
||||||
|
|||||||
+2
-28
@@ -98,22 +98,6 @@
|
|||||||
font-size: .85rem; background: #fff; outline: none; cursor: pointer;
|
font-size: .85rem; background: #fff; outline: none; cursor: pointer;
|
||||||
}
|
}
|
||||||
select:focus { border-color: var(--blue); box-shadow: 0 0 0 2px rgba(37,99,235,.1); }
|
select:focus { border-color: var(--blue); box-shadow: 0 0 0 2px rgba(37,99,235,.1); }
|
||||||
|
|
||||||
/* Toggle */
|
|
||||||
.toggle-btn {
|
|
||||||
font-size: .8rem; display: flex; align-items: center; gap: .3rem;
|
|
||||||
padding: .2rem .6rem; border: 1px solid var(--border); border-radius: 5px;
|
|
||||||
background: #fff; cursor: pointer; color: var(--muted);
|
|
||||||
}
|
|
||||||
.toggle-switch {
|
|
||||||
position: relative; width: 36px; height: 20px; border-radius: 10px; transition: background .2s;
|
|
||||||
background: var(--border);
|
|
||||||
}
|
|
||||||
.toggle-switch.on { background: var(--blue); }
|
|
||||||
.toggle-knob {
|
|
||||||
position: absolute; top: 2px; width: 16px; height: 16px;
|
|
||||||
background: #fff; border-radius: 50%; transition: all .2s;
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
@@ -132,17 +116,7 @@
|
|||||||
<span style="font-weight:500;color:var(--text);">IP WhiteList v<%= version %></span>
|
<span style="font-weight:500;color:var(--text);">IP WhiteList v<%= version %></span>
|
||||||
|
|
||||||
<span style="margin-left:auto;display:flex;gap:.5rem;align-items:center;">
|
<span style="margin-left:auto;display:flex;gap:.5rem;align-items:center;">
|
||||||
<% if (user.isAdmin) { %>
|
<span style="font-weight:500;color:var(--text);"><%= user.email %><% if (user.isAdmin) { %> <span style="color:var(--amber);">(админ)</span><% } %></span>
|
||||||
<form method="POST" action="/v2/toggle-admin" style="display:inline;">
|
|
||||||
<button type="submit" class="toggle-btn">
|
|
||||||
<span style="font-weight:500;"><%= user.adminMode ? 'Выйти из админки' : 'Администратор' %></span>
|
|
||||||
<span class="toggle-switch<%= user.adminMode ? ' on' : '' %>">
|
|
||||||
<span class="toggle-knob" style="<%= user.adminMode ? 'right:2px;' : 'left:2px;' %>"></span>
|
|
||||||
</span>
|
|
||||||
</button>
|
|
||||||
</form>
|
|
||||||
<% } %>
|
|
||||||
<span style="font-weight:500;color:var(--text);"><%= user.email %><% if (user.isAdmin && user.adminMode) { %> <span style="color:var(--amber);">(админ)</span><% } %></span>
|
|
||||||
<a href="/v2/logout" class="btn btn-sm">Выйти<% if (user.isImpersonated && user.originalUserEmail) { %> (<%= user.originalUserEmail %>)<% } %></a>
|
<a href="/v2/logout" class="btn btn-sm">Выйти<% if (user.isImpersonated && user.originalUserEmail) { %> (<%= user.originalUserEmail %>)<% } %></a>
|
||||||
</span>
|
</span>
|
||||||
</header>
|
</header>
|
||||||
@@ -178,7 +152,7 @@
|
|||||||
<input type="checkbox" name="deleted" value="1" <%= includeDeleted ? 'checked' : '' %> onchange="this.form.submit()">
|
<input type="checkbox" name="deleted" value="1" <%= includeDeleted ? 'checked' : '' %> onchange="this.form.submit()">
|
||||||
Показать удалённые
|
Показать удалённые
|
||||||
</label>
|
</label>
|
||||||
<% if (user.adminMode) { %>
|
<% if (user.isAdmin) { %>
|
||||||
<span style="margin-left:auto;font-size:.8rem;color:var(--amber);">Режим: Администратор</span>
|
<span style="margin-left:auto;font-size:.8rem;color:var(--amber);">Режим: Администратор</span>
|
||||||
<% } %>
|
<% } %>
|
||||||
</form>
|
</form>
|
||||||
|
|||||||
Reference in New Issue
Block a user