diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 2709117..345c60e 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -2,13 +2,14 @@ import { useState } from 'react'; import { InventoryPage } from './pages/InventoryPage'; import './app-shell.css'; -type TabKey = 'overview' | 'inventory' | 'discovery' | 'topology' | 'wip'; +type TabKey = 'overview' | 'inventory' | 'discovery' | 'topology' | 'options' | 'wip'; const tabs: { key: TabKey; label: string; description: string }[] = [ { key: 'overview', label: 'Overview', description: 'Stato generale del workspace NetMapper.' }, { key: 'inventory', label: 'Inventory', description: 'Tree fisico/logico e navigazione tra oggetti.' }, { key: 'discovery', label: 'Discovery', description: 'Pipeline e job di raccolta dati.' }, { key: 'topology', label: 'Topology', description: 'Vista futura della mappa multilivello.' }, + { key: 'options', label: 'Options', description: 'Utenti, impostazioni, servizi di sistema e sicurezza.' }, { key: 'wip', label: 'WIP', description: 'Blocchi provvisori, note e parti in corso.' }, ]; @@ -35,16 +36,16 @@ function OverviewTab() { @@ -93,6 +94,72 @@ function TopologyTab() { ); } +function OptionsTab() { + return ( +
+
+ +
    +
  • Utenti locali e ruoli applicativi.
  • +
  • Disattivazione account inattivi o non più autorizzati.
  • +
  • Storico accessi e audit trail amministrativo.
  • +
+
+ +
    +
  • Parametri workspace e branding dell'istanza.
  • +
  • Configurazione discovery, inventory e policy future.
  • +
  • Feature flags per moduli sperimentali.
  • +
+
+
+ +
+ +
    +
  • La sezione Servizi viene assorbita nel menu Options.
  • +
  • Qui confluiranno terminale remoto, job runner e integrazioni di sistema.
  • +
  • Ogni funzione sensibile dovrà essere protetta da permessi espliciti.
  • +
+
+ +
    +
  • Login obbligatorio per tutte le viste non pubbliche.
  • +
  • MFA per admin e per funzioni ad alto impatto.
  • +
  • Controlli server-side su ogni richiesta, deny-by-default e audit centralizzato.
  • +
+
+
+ + +
+
+ 1 +
+ Authentication foundation +

Sessioni sicure, logout reale, protezione delle rotte e bootstrap identità all'avvio.

+
+
+
+ 2 +
+ Authorization model +

Ruoli base, policy per risorse sensibili e blocco di azioni per utenti non autorizzati.

+
+
+
+ 3 +
+ Remote access hardening +

Prima di un modulo tipo Termix: MFA, audit, approvazione esplicita e tracciamento comandi.

+
+
+
+
+
+ ); +} + function WipTab() { return (
@@ -105,8 +172,8 @@ function WipTab() { @@ -145,7 +212,7 @@ function App() {
MVP Inventory online - WIP restored + Options added
@@ -156,8 +223,8 @@ function App() {

{currentTab.description}

- LXC ready - Docker-ready base + Book of truth + Auth roadmap
@@ -173,6 +240,9 @@ function App() {
+
+ +
diff --git a/frontend/src/app-shell.css b/frontend/src/app-shell.css index d1e6e43..a22ad5f 100644 --- a/frontend/src/app-shell.css +++ b/frontend/src/app-shell.css @@ -126,6 +126,11 @@ body { grid-template-columns: repeat(2, minmax(0, 1fr)); } +.shell-stack { + display: grid; + gap: 16px; +} + .shell-card { background: rgba(17, 24, 39, 0.88); border: 1px solid rgba(255,255,255,0.08); @@ -153,6 +158,38 @@ body { color: #cbd5e1; } +.options-roadmap { + display: grid; + gap: 12px; +} + +.options-roadmap-item { + display: grid; + grid-template-columns: 40px minmax(0, 1fr); + gap: 12px; + align-items: start; + padding: 12px; + border-radius: 12px; + background: rgba(255,255,255,0.03); + border: 1px solid rgba(255,255,255,0.06); +} + +.options-roadmap-item p { + margin: 6px 0 0; + color: #94a3b8; +} + +.options-step { + width: 32px; + height: 32px; + border-radius: 999px; + display: grid; + place-items: center; + background: rgba(37, 99, 235, 0.18); + color: #bfdbfe; + font-weight: 700; +} + @media (max-width: 1100px) { .app-shell { grid-template-columns: 1fr;