From d96919e68cef84e8b02afe832911c21182e365b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Sat, 30 May 2026 15:58:51 +0300 Subject: [PATCH] fix: logo SVG viewBox (0 0 311 69), version in UI footer (v0.2.0) --- package.json | 2 +- server.js | 5 ++++- src/config.js | 7 ++++++- views/admin.ejs | 3 ++- views/audit.ejs | 3 ++- views/dev-login.ejs | 1 + views/index.ejs | 3 ++- views/login.ejs | 1 + 8 files changed, 19 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 4b2227b..7dcfa21 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ipwhitelist", - "version": "0.1.0", + "version": "0.2.0", "description": "IP WhiteList microservice for cloud provider", "main": "server.js", "scripts": { diff --git a/server.js b/server.js index 98cce3d..3253796 100644 --- a/server.js +++ b/server.js @@ -26,7 +26,7 @@ const { checkConnection } = require('./src/db'); const { initAuth, requireAdmin } = require('./src/auth'); const { aggregateCIDRs } = require('./src/validators'); const q = require('./src/queries'); -const { MOCK_USERS, backUrl } = require('./src/config'); +const { MOCK_USERS, backUrl, APP_VERSION } = require('./src/config'); const { mutationLimiter, exportLimiter, authLimiter } = require('./src/middleware/rateLimit'); const { initCsrf } = require('./src/middleware/csrf'); const { createSessionMiddleware } = require('./src/middleware/session'); @@ -38,6 +38,9 @@ const PORT = process.env.PORT || 3000; app.set('view engine', 'ejs'); app.set('views', path.join(__dirname, 'views')); +// Версия доступна во всех шаблонах как <%= appVersion %> без передачи вручную. +app.locals.appVersion = APP_VERSION; + // ── Безопасность HTTP-заголовков ─────────────────────────────────────────────── // helmet выставляет все security-заголовки одним вызовом, включая CSP. // Директивы CSP вынесены в src/middleware/csp.js. diff --git a/src/config.js b/src/config.js index 977b9c6..fc3144a 100644 --- a/src/config.js +++ b/src/config.js @@ -71,4 +71,9 @@ function backUrl(isAdmin, companyId, extra = {}) { return str ? '/?' + str : '/'; } -module.exports = { MOCK_USERS, backUrl }; +// ── Версия приложения (из package.json) ────────────────────────────────────── +// Читается один раз при загрузке модуля — require кешируется Node.js. +// Передаётся в шаблоны через app.locals чтобы отображаться в UI. +const { version: APP_VERSION } = require('../package.json'); + +module.exports = { MOCK_USERS, backUrl, APP_VERSION }; diff --git a/views/admin.ejs b/views/admin.ejs index ef073e0..3d1bd0a 100644 --- a/views/admin.ejs +++ b/views/admin.ejs @@ -63,7 +63,7 @@
- + @@ -202,5 +202,6 @@ form.submit(); } +
v<%= appVersion %>
diff --git a/views/audit.ejs b/views/audit.ejs index 9e4ccb2..34d6dae 100644 --- a/views/audit.ejs +++ b/views/audit.ejs @@ -61,7 +61,7 @@
- + @@ -169,5 +169,6 @@ +
v<%= appVersion %>
diff --git a/views/dev-login.ejs b/views/dev-login.ejs index e91cf81..be93c56 100644 --- a/views/dev-login.ejs +++ b/views/dev-login.ejs @@ -135,5 +135,6 @@ }); +
v<%= appVersion %>
diff --git a/views/index.ejs b/views/index.ejs index 95de31f..382bce9 100644 --- a/views/index.ejs +++ b/views/index.ejs @@ -146,7 +146,7 @@
- + @@ -404,5 +404,6 @@ }); +
v<%= appVersion %>
diff --git a/views/login.ejs b/views/login.ejs index 0aa99f3..d64a334 100644 --- a/views/login.ejs +++ b/views/login.ejs @@ -80,5 +80,6 @@ +