diff --git a/frontend/collection.html b/frontend/collection.html index 6a2610d..165676f 100644 --- a/frontend/collection.html +++ b/frontend/collection.html @@ -365,7 +365,7 @@ LS.sidebar?.init(); lucide.createIcons(); const feats = await LS.loadFeatures(); - if (feats.collection === false) { window.location.replace('/403'); return; } + if (feats.collection === false && user?.role !== 'admin') { window.location.replace('/403'); return; } LS.hideDisabledFeatures?.(); await loadCollection(); })(); diff --git a/frontend/knowledge-map.html b/frontend/knowledge-map.html index 1737cd8..ce54048 100644 --- a/frontend/knowledge-map.html +++ b/frontend/knowledge-map.html @@ -585,7 +585,7 @@ let _dashOffset = 0; // animated dash offset for link flow LS.notif.init(); lucide.createIcons(); const feats = await LS.loadFeatures(); - if (feats.knowledge_map === false) { window.location.replace('/403'); return; } + if (feats.knowledge_map === false && user?.role !== 'admin') { window.location.replace('/403'); return; } LS.hideDisabledFeatures?.(); document.querySelector('.sb-toggle')?.addEventListener('click', () => { diff --git a/frontend/red-book.html b/frontend/red-book.html index 3ed34ad..67477c7 100644 --- a/frontend/red-book.html +++ b/frontend/red-book.html @@ -792,7 +792,7 @@ const XP_MAP = { CR: 50, EN: 40, VU: 30, NT: 20, LC: 10 }; async function init() { lucide.createIcons(); const feats = await LS.loadFeatures().catch(() => ({})); - if (feats.red_book === false) { window.location.replace('/403'); return; } + if (feats.red_book === false && LS.getUser()?.role !== 'admin') { window.location.replace('/403'); return; } LS.hideDisabledFeatures?.(); // Auth (sidebar) diff --git a/frontend/sim-builder.html b/frontend/sim-builder.html index 71daaa4..5d6aaef 100644 --- a/frontend/sim-builder.html +++ b/frontend/sim-builder.html @@ -196,7 +196,8 @@ if (!(ip.isTeacher || ip.isAdmin)) { location.href = '/dashboard'; return; } // Фича-гейт: «Конструктор симуляций» можно отключить в админке (feature_sim_builder_enabled). - if (LS.loadFeatures) { + // Админ имеет доступ всегда (он управляет модулями) — для него гейт не срабатывает. + if (LS.loadFeatures && !ip.isAdmin) { LS.loadFeatures().then(function (feats) { if (feats && feats.sim_builder === false) { LS.toast && LS.toast('Конструктор симуляций отключён', 'warn'); location.href = '/dashboard'; } }).catch(function () {});