Gestione Utenti

Elenco utenti, creazione, ruoli, permessi, moduli abilitati, workspace e sicurezza

v 2.2Aprile 2026Manuale Utente

Riferimenti normativi

1Panoramica

Il modulo Gestione Utenti consente di creare, modificare e gestire gli account degli utenti che accedono a NOX Enterprise Suite. Ogni utente ha credenziali individuali, un ruolo che ne determina i permessi, e una configurazione di moduli e workspace personalizzata.

Funzionalità principali

  • 4 livelli di ruolo gerarchici: USER, OPERATOR, ADMIN, SUPERADMIN
  • Multi-workspace: ogni utente può accedere a più ambienti di lavoro con configurazioni indipendenti
  • Moduli abilitati: configurazione granulare di quali sezioni del menu sono visibili per ogni utente e workspace
  • Profilo personale: ogni utente può modificare i propri dati e cambiare la password
  • Statistiche database: conteggio record per tabella nel workspace selezionato
  • Operazioni avanzate: gestione backup workspace, dati demo, tabelle normativa
  • Protezione eliminazione: conferma con nome completo per eliminare utenti ADMIN/SUPERADMIN
Accessibile dal menu laterale: Impostazioni → Gestione Utenti, oppure dal menu utente nella topbar → “Gestione Utenti”. Richiede il ruolo ADMIN o superiore per la lista completa; gli utenti standard vedono solo il proprio profilo.
2Elenco Utenti

La schermata principale mostra tutti gli utenti in una lista con le seguenti informazioni:

ColonnaContenuto
AvatarIniziali dell'utente con colore basato sul ruolo
NomeNome e cognome completi
UsernameFormato @username
DatabaseBadge con nome del workspace attivo (Principale o nome workspace)
RuoloBadge colorato con icona (security, shield, person, support_agent)
StatoPillola: Attivo (verde) o Inattivo (grigio)
AzioniPulsante elimina e freccia per accedere al dettaglio

In alto: contatore utenti totali e utenti attivi. Pulsante + Nuovo per creare un nuovo utente.

Gli utenti ADMIN non possono vedere gli altri SUPERADMIN nella lista. Solo un SUPERADMIN vede tutti gli utenti, inclusi gli altri SUPERADMIN.
3Creare un Utente
  1. Dall'elenco utenti, premere + Nuovo Utente.
  2. Compilare il campo Username (obbligatorio, identificativo univoco per il login).
  3. Inserire la Password (obbligatoria, minimo 6 caratteri) e la Conferma password (deve corrispondere).
  4. Selezionare il Ruolo nella griglia con 4 opzioni:
    • USER — Utente standard (default)
    • OPERATOR — Operatore
    • ADMIN — Amministratore
    • SUPERADMIN — Super Amministratore (visibile solo ai SUPERADMIN)
  5. Premere Salva. L'utente viene creato e appare nell'elenco.
  6. Dopo la creazione, aprire l'utente per completare il profilo: nome, cognome, email, workspace, moduli abilitati.
Solo un SUPERADMIN può assegnare il ruolo SUPERADMIN a un nuovo utente. Il ruolo SUPERADMIN non appare nel selettore se l'utente corrente è solo ADMIN.
4Ruoli e Gerarchia dei Permessi
RuoloIconaAccessoPuò gestire
USERpersonSolo consultazione base e moduli abilitatiSolo il proprio profilo
OPERATORsupport_agentOperatività completa sui moduli abilitatiSolo il proprio profilo
ADMINshieldTutti i moduli + gestione utenti, parametri, tabelleUtenti USER e OPERATOR. Non può modificare altri ADMIN o SUPERADMIN.
SUPERADMINsecurityAccesso totale al sistemaTutti gli utenti. Gestione workspace, database nascosti, backup, ripristino, eliminazione database.

Differenze chiave ADMIN vs SUPERADMIN

OperazioneADMINSUPERADMIN
Vedere altri SUPERADMIN
Assegnare ruolo SUPERADMIN
Vedere workspace nascosti
Scaricare/ripristinare backup workspace
Eliminare un workspace/database
Caricare tabelle normativa
Creare backup
Configurare moduli per altri utenti
Modificare parametri azienda
Un SUPERADMIN che si declassa a ADMIN perde definitivamente la possibilità di riottenere il ruolo SUPERADMIN in autonomia. Sarà necessario che un altro SUPERADMIN glielo riassegni. Il sistema mostra un avviso esplicito con l'elenco delle capacità che verranno perse.
4bPrivilegi Produzione vs Permessi del Ruolo nel Workspace

Nella scheda di Modifica Utente esistono due sezioni distinte che governano cosa un utente può fare: la sezione "Privilegi Produzione" (riquadro lilla) e la sezione "Permessi del ruolo <X> in <workspace>" (riquadro arancio). Sono due meccanismi complementari, non alternativi: vengono valutati in AND sulle azioni a cui si applicano.

Quadro di confronto

Caratteristica Privilegi Produzione (lilla) Permessi del ruolo (arancio)
Granularità Per singolo utente Per (workspace + ruolo base)
Salvataggio Array privileges sulla tabella Users Tabella dedicata WorkspaceRolePermission
Quante chiavi 3 31 (12 ADMIN + 11 USER + 8 OPERATOR)
Su che ambito agisce Solo modulo Produzione (distinte, ordini, ECO, qualità) Tutti i moduli (utenti, documenti, magazzino, anagrafiche, catalogo, parametri, corrispettivi, scadenze, produzione, audit, backup…)
Chi può modificarli SUPERADMIN e ADMIN Solo SUPERADMIN
Effetto della modifica Vale solo per l'utente mostrato Vale per tutti gli utenti dello stesso ruolo nello stesso workspace
Default per utente nuovo Tutti i privilegi a off (vanno assegnati esplicitamente) Tutti i permessi a on (retrocompatibilità)
Bypass SUPERADMIN e ADMIN bypassano sempre i controlli di privilegio Solo SUPERADMIN bypassa

A cosa serve la sezione "Privilegi Produzione" (lilla)

Implementa la Separation of Duties del modulo Produzione: assegna a singoli utenti uno dei 3 ruoli applicativi della produzione, indipendentemente dal loro ruolo base USER / OPERATOR / ADMIN.

PrivilegioCosa abilita
PRODUCTION_MANAGER Creare e modificare distinte; avviare, completare, annullare ordini di produzione; applicare ECO; ripristinare elementi dal cestino produzione.
QUALITY_MANAGER Approvare e respingere ECO (su utenti diversi dal proponente); registrare e forzare l'esito dei test qualità.
OPERATOR_PROD Avviare e chiudere le singole fasi di lavorazione sui propri ordini.

Tipico caso d'uso: in uno stesso workspace ci sono più collaboratori USER, ognuno con un compito diverso in produzione. Mario è addetto qualità e riceve QUALITY_MANAGER; Luigi è magazziniere/operatore e riceve OPERATOR_PROD; Giovanni è il responsabile di reparto e riceve PRODUCTION_MANAGER. Senza questi privilegi un USER non può toccare nulla in produzione.

I privilegi sono inoltre la base tecnica della Separation of Duties: chi propone un ECO non può approvarlo, e questo controllo si appoggia proprio al fatto che proponente e approvatore siano due utenti distinti, ciascuno con il proprio privilegio individuale.

A cosa serve la sezione "Permessi del ruolo" (arancio)

Permette al SUPERADMIN di disabilitare per l'intero workspace e l'intero ruolo alcune azioni già consentite di default. Esempio: nel workspace "Studio Bianchi" il SUPERADMIN decide che gli ADMIN non possano modificare i pacchetti licenza né eseguire backup manuali; basta togliere il segno di spunta a pacchetti.modifica e backup.esegui: la modifica vale per tutti gli ADMIN di quel workspace presenti e futuri.

Pagina dedicata SUPERADMIN-only: in Amministrazione di Sistema » Permessi per Ruolo (/admin/permessi-ruolo) si possono modificare i permessi di un ruolo per qualsiasi workspace anche senza un utente "campione" già esistente — utile su workspace appena creati. Bottoni "Abilita tutti" / "Disabilita tutti" per cambio bulk veloce. Ogni modifica viene tracciata in audit_log (azione UPDATE_WORKSPACE_ROLE_PERMISSIONS) con utente, timestamp, IP, snapshot prima/dopo.

 

Le 31 chiavi disponibili coprono creazione/modifica/cancellazione di documenti, anagrafiche, catalogo, magazzino, corrispettivi, scadenze; emissione documenti; ripristino dal cestino; approvazione ECO e completamento ordini di produzione; registrazione test qualità; consultazione audit log; backup. Il default per ogni nuovo workspace è tutto abilitato, in modo che il comportamento storico non cambi finché il SUPERADMIN non interviene.

Come si combinano (regola pratica)

Per eseguire un'azione, l'utente deve passare entrambi i controlli applicabili.
Esempio — completare un ordine di produzione:
  1. L'utente deve avere il privilegio individuale PRODUCTION_MANAGER (o essere ADMIN/SUPERADMIN).
  2. Il permesso del suo ruolo produzione.ordini.completa deve essere abilitato in quel workspace.
  3. Deve fornire la firma elettronica (password) richiesta dal flusso.
Se uno solo dei tre check fallisce, l'azione è bloccata con HTTP 403 e messaggio esplicito.

Quando usare uno o l'altro

  • Vuoi specializzare un singolo utente (Mario fa solo qualità)? → Privilegi Produzione.
  • Vuoi vietare un'azione a tutti gli ADMIN di un'azienda (es. Studio Verdi)? → Permessi del ruolo.
  • Vuoi un'azione per pochi (es. solo 2 USER su 5) con regole produzione? → combina i due: assegna il privilegio solo ai 2 USER e tieni acceso il permesso ruolo.
  • Vuoi spegnere completamente l'audit log per gli ADMIN di un workspace? → Permessi del ruolo: audit.consulta = off.
Hard-delete dal cestino resta sempre e solo SUPERADMIN, indipendentemente da entrambe queste sezioni. ADMIN non può eliminare definitivamente, né con i privilegi né con i permessi.
5Modificare un Utente

Fare clic su un utente nell'elenco per aprire la scheda di modifica. La schermata è organizzata in sezioni:

Intestazione

Avatar con colore del ruolo, nome completo, @username, badge ruolo cliccabile (per ADMIN), toggle Attivo/Inattivo.

Riquadro Account

CampoIconaNote
UsernamelockBloccato dopo la creazione (non modificabile). Bordo rosso per evidenziare.
EmailmailValidazione formato email
NomefaceMax 50 caratteri
CognomedrawMax 50 caratteri

Sotto il riquadro: pulsante Cambia Password (o “Reset Password” se si sta modificando un altro utente) e, solo per ADMIN, i pulsanti Statistiche Database e Operazioni Avanzate.

Sezione Workspace

Selettore “Ambiente attualmente in uso” per il workspace primario. Per ADMIN: sezione multi-workspace con checkbox per assegnare l'utente a più ambienti. Opzione speciale ___NUOVO___ per creare un workspace al volo.

Sezione Moduli Abilitati

Vedere sezione 9 per i dettagli completi.

Barra azioni

  • Disattiva Utente (rosso): disabilita l'account (non è possibile disattivare sé stessi)
  • Annulla: scarta le modifiche
  • Salva Modifiche: salva tutti i cambiamenti (disabilitato se nulla è cambiato)
6Profilo Personale

Ogni utente può accedere al proprio profilo dal menu utente nella topbar → “Profilo”.

Il profilo personale mostra tre card:

Informazioni Account

  • Username: modificabile (min. 3 caratteri)
  • Email: con validazione formato
  • Ruolo: sola lettura (solo SUPERADMIN può modificare il proprio ruolo)

Dati Anagrafici

  • Nome e Cognome (max 50 caratteri ciascuno)

Sicurezza

  • Password attuale: obbligatoria per verificare l'identità
  • Nuova password: minimo 6 caratteri
  • Conferma nuova password: deve corrispondere

I campi password sono opzionali: compilare solo se si desidera cambiare la password.

7Gestione Password

Cambiare la propria password

  1. Accedere al proprio Profilo dalla topbar.
  2. Nella sezione “Sicurezza”, inserire la password attuale (per verifica identità).
  3. Inserire la nuova password (minimo 6 caratteri).
  4. Inserire la conferma (deve corrispondere).
  5. Premere Salva Modifiche.

Reset password di un altro utente (solo ADMIN)

  1. Aprire la scheda dell'utente dall'elenco.
  2. Premere “Reset Password”.
  3. Si apre una modale: inserire la nuova password e la conferma.
  4. Non serve la password attuale dell'utente (l'ADMIN è autorizzato al reset).
  5. Premere Salva Password.
Ai sensi del D.Lgs. 196/2003 All. B regola 5, le credenziali di autenticazione devono essere individuali. Non condividere mai username e password tra più persone. Ogni operatore deve avere il proprio account.
8Workspace (Ambienti di Lavoro)

Ogni workspace corrisponde a un database PostgreSQL separato. Permette di gestire più aziende, sedi o ambienti (produzione, test, demo) dalla stessa installazione.

Workspace primario

Il dropdown “Ambiente attualmente in uso” nella scheda utente seleziona il workspace che l'utente vede al login. L'utente può cambiare workspace dalla topbar (icona storage).

Multi-workspace (solo ADMIN)

La sezione “Ambienti Assegnati” mostra tutti i workspace disponibili con checkbox. Per configurare:

  1. Nel selettore “Seleziona utente”, scegliere l'utente da configurare.
  2. Sotto, attivare le checkbox dei workspace a cui l'utente deve avere accesso.
  3. I workspace contrassegnati con lucchetto sono riservati al SUPERADMIN.
  4. I workspace con icona occhio barrato sono nascosti (visibili solo ai SUPERADMIN).
  5. Le modifiche vengono salvate automaticamente alla selezione.

Creare un nuovo workspace

Nel dropdown workspace, selezionare l'opzione “+ Crea nuovo ambiente”. Viene creato un database vuoto pronto per essere configurato.

I workspace nascosti (visibility_off) non appaiono nel selettore della topbar per gli utenti non-SUPERADMIN. Sono utili per ambienti di test, staging o dati storici.
9Moduli Abilitati

La sezione “Moduli Abilitati” consente di personalizzare quali voci del menu laterale sono visibili per ciascun utente in ciascun workspace.

Come configurare

  1. Nella scheda utente, scorrere alla sezione “Moduli Abilitati”.
  2. Selezionare l'utente e il workspace di riferimento dai dropdown.
  3. I moduli sono raggruppati in 8 categorie (accordion espandibile).
  4. Per ogni categoria: toggle per nascondere l'intero gruppo dal menu, e pulsante per abilitare/disabilitare tutti i moduli del gruppo.
  5. Dentro ogni gruppo: toggle individuale per ogni modulo con nome, icona e descrizione.
  6. Le modifiche vengono salvate automaticamente.

Toggle bloccato o sbloccato — come capire perché

Ogni toggle può trovarsi in uno di questi stati:

StatoSignificatoEsempio
🔒 BloccatoIl modulo è indispensabile (fa parte del core sistema o è richiesto dal regime fiscale). Non si può disattivare.Dashboard, Parametri, Soggetti, Documenti. Anche Registri IVA se l'azienda è in regime ordinario.
LiberoL'admin decide. Utile quando un modulo «sulla carta obbligatorio» in realtà non serve al tipo di attività.Listini/Magazzino/Spedizioni per un consulente, Registri IVA per un naturopata forfettario.
Dalla versione 2.2 il sistema sblocca automaticamente alcuni toggle in base ai Parametri → tab Fatturazione-Cassa (regime fiscale, cassa previdenziale, tipo anagrafica, tipo attività). Ad esempio, se imposti regime RF19 forfettario, le voci Registri IVA / Corrispettivi / Ritenuta d'acconto / Rivalsa INPS diventano automaticamente disattivabili perché fiscalmente inutili. Approfondimento completo con tabella dei 3 tipi di moduli (Core / Fiscali condizionali / Operativi sbloccabili) nel manuale Pacchetti Licenza §15.

Categorie di moduli

GruppoModuli inclusi
Ciclo Attivo / PassivoSoggetti, Catalogo, Documenti, Scadenzario, Agenti, Spedizioni, Lettere intento, Listini, Sconti, CRM, RDO, Valutazione fornitori (13 moduli)
MagazzinoGiacenze e movimenti
ContabilitàPiano dei Conti, Prima Nota, Registro IVA, Aliquote IVA, Bilancio, Budget, Riconciliazione, F24 (8 moduli)
ReportingDashboard analitica, Statistiche catalogo
HR & PersonaleDipendenti, Presenze, Ferie, Payroll, Note spese (5 moduli)
IntegrazioniSDI, Sistema TS, Corrispettivi, Conservazione, PEC, PSD2, E-commerce, API, Firma digitale, Email, Notifiche (11 moduli)
DocumentaleGDPR, Archiviazione, Audit trail, Import/Export (4 moduli)
ImpostazioniUtenti, Parametri, Tabelle, Backup, Print Designer, Modelli stampa, Numerazioni (7 moduli)

Opzioni globali

  • Menu espanso: i sottomenu restano aperti di default
  • Nascondi intestazioni gruppo: menu piatto senza raggruppamenti
  • Nascondi “Coming Soon”: nasconde i moduli non ancora disponibili
Gli utenti non-ADMIN vedono la sezione Moduli in sola lettura con un banner di sicurezza. Solo ADMIN e SUPERADMIN possono modificare la configurazione moduli.
10Statistiche Database

Il pulsante “Statistiche Database” (solo ADMIN) nella scheda utente apre una finestra di dialogo con i conteggi dei record per tabella nel workspace selezionato.

Informazioni visualizzate

  • KPI: totale record, tabelle attive (con almeno 1 record), massimo record per tabella
  • Griglia: lista di tutte le tabelle con barra grafica proporzionale e conteggio
  • Timestamp: ora dell'ultimo aggiornamento
  • Pulsante Aggiorna per ricaricare i dati

Utile per verificare lo stato del database, controllare che i dati demo siano stati caricati o individuare tabelle vuote da popolare.

11Operazioni Avanzate sui Database

Il pulsante “Operazioni Avanzate” (solo ADMIN) apre un pannello con gestione avanzata dei workspace:

Selezione workspace

Lista di tutti i workspace disponibili. Fare clic per selezionare e visualizzare le operazioni disponibili.

Backup

  • Crea Backup Ora: genera un backup del workspace selezionato
  • Lista backup: elenco con data, dimensione, pulsanti scarica/ripristina/elimina
  • ADMIN: può solo creare backup. SUPERADMIN: può anche scaricare, ripristinare ed eliminare.

Dati Demo

Pulsante “Carica Dati Demo” per aprire la procedura guidata (vedere sezione 12).

Zona Pericolosa (solo SUPERADMIN, workspace non-default)

Procedura di eliminazione workspace in 3 passaggi con doppia conferma. Elimina definitivamente il database e tutti i dati contenuti.

L'eliminazione di un workspace è irreversibile. Tutti i documenti, soggetti, catalogo, impostazioni e backup del workspace vengono distrutti. Eseguire sempre un backup prima e scaricare il file sul PC.
12Dati Demo e Tabelle Normativa

La procedura guidata “Dati Demo” consente di popolare un workspace con dati di esempio o con le tabelle normative ufficiali italiane.

Tab “Carica Demo”

Wizard a 3 step per generare dati realistici:

  1. Scegli archivio: Soggetti (anagrafe) o Catalogo (articoli)
  2. Scegli categoria: es. Clienti, Fornitori, Agenti, Farmaci, Articoli, Kit, ecc.
  3. Scegli quantità: preset rapidi (10, 50, 100, 500, 1.000) o valore personalizzato fino a 100.000

I dati generati sono realistici: nomi, indirizzi, P.IVA, CF, codici articolo, prezzi, categorie.

Tab “Tabelle Normativa”

Carica le tabelle ufficiali dell'Agenzia delle Entrate / INPS / SDI:

  • Tipi Pagamento (codici SDI)
  • Condizioni Pagamento
  • Tipi Documento (TD01-TD28)
  • Formati Trasmissione (FPR12, FPA12)
  • Regimi Fiscali (RF01-RF19)
  • Tipi Cassa Previdenza (TC01-TC22)
  • Nature IVA (N1-N7 con sottotipi)

L'operazione è idempotente: aggiorna i record esistenti e inserisce quelli mancanti senza creare duplicati.

Tab “Svuota Archivi”

Zona pericolosa per svuotare tabelle selezionate. Richiede conferma esplicita. Mostra il conteggio dei record eliminati per archivio.

Per un nuovo workspace: caricare prima le Tabelle Normativa (codici SDI, regimi fiscali, nature IVA), poi eventualmente i Dati Demo per avere un ambiente di test funzionante.
13Disattivare ed Eliminare Utenti

Disattivare

Il toggle Attivo/Inattivo nella scheda utente disabilita l'account senza eliminarlo. Un utente disattivato non può effettuare il login ma i suoi dati e le sue associazioni restano nel sistema.

  • Non è possibile disattivare sé stessi
  • La disattivazione è reversibile: riattivare con lo stesso toggle

Eliminare

Il pulsante Elimina (cestino) nell'elenco utenti rimuove definitivamente l'account.

Ruolo dell'utente da eliminareChi può eliminareConferma richiesta
USER / OPERATORQualsiasi ADMINConferma semplice
ADMINADMIN o SUPERADMINDigitare il nome completo dell'utente per confermare
SUPERADMINSolo SUPERADMINDigitare il nome completo dell'utente per confermare
L'eliminazione è irreversibile. L'utente, le sue configurazioni moduli e le assegnazioni workspace vengono cancellate. I documenti creati dall'utente non vengono eliminati.
13bAmministrazione di Sistema (SUPERADMIN-only)

La pagina /admin/sistema raccoglie le funzioni di manutenzione tecnica del prodotto, accessibili solo al Super Amministratore. Si raggiunge dal menu utente in topbar » Amministrazione Sistema.

CardFunzioneNote
Versione Applicazione Modifica del numero di versione (semver MAJOR.MINOR.PATCH) mostrato in tutta la piattaforma. Modale "odometro" con incremento singolo per cifra.
Pacchetti Licenza Apre /admin/pacchetti: abilita/disabilita i pacchetti di moduli per ciascun workspace. Funzione esistente, ora raggiungibile dall'hub.
Permessi per Ruolo Apre /admin/permessi-ruolo: configura i permessi di ADMIN/USER/OPERATOR per qualsiasi workspace senza dover passare da un utente esistente. 2 selettori (workspace + ruolo) + griglia di card con i 31 permessi. Bottoni "Abilita tutti" / "Disabilita tutti". Cambio audit-tracciato in audit_log.
Backup & Ripristino Apre la pagina Backup esistente (/backup): backup manuali, scarica, ripristina, importa. Funzione esistente.
Dati Demo Carica un dataset di esempio in un workspace (selezionabile da dropdown nella card). Apre il dialog SeedDemo già esistente, passandogli il workspace selezionato.
Refactor Modifica Utente in tab: da aprile 2026 la pagina di modifica di un utente (/utenti/modifica/:id) è organizzata in 4 schede:
  1. Profilo & Workspace — account/anagrafica + database di lavoro
  2. Privilegi Produzione — visibile solo se per quell'utente la Distinta Base è abilitata
  3. Permessi del Ruolo — griglia configurabile (mostra placeholder se ruolo è SUPERADMIN o workspace non selezionato)
  4. Moduli abilitati — accordion per categoria (immutato)
Le opzioni "Sottomenu sempre espansi" e "Nascondi intestazioni gruppi" sono uscite dal tab Moduli e ora si attivano dai due mini-bottoni accanto a "Home Dashboard" nella sidebar (effetto solo per la sessione corrente, non persistente).
14Novità Aprile 2026 (v2.1)

Aggiornamenti alla gestione utenti, workspace e permessi.

Sync target per-workspace

In Modifica Utente → Database di Lavoro, accanto a ogni workspace abilitato, compare un selettore “Sync target” (visibile solo ai SuperAdmin). Permette di indicare il workspace di replica automatica: qualsiasi generazione XML o documento nel workspace sorgente viene replicato su quello target.

Rimpiazza i precedenti hardcoded “provatest” / “studio”: ora ogni coppia sorgente-target è configurabile da UI. Lasciare vuoto il selettore disabilita la sincronizzazione per quel workspace.

menuConfig per-workspace

I moduli abilitati (menu laterale visibile all'utente) non sono più configurati a livello utente ma a livello workspace. La configurazione viene salvata su Parametri.menuConfig invece che su User.menuConfig.

  • Ogni workspace ha il proprio set di moduli attivi (Scadenzario on/off, Magazzino on/off, ecc.)
  • Tutti gli utenti che accedono a quel workspace vedono lo stesso menu
  • L'impostazione sostituisce quella per-utente precedente (migrazione automatica al primo accesso)

Scudo colorato per riservataSuper

Il bottone di accesso alla sezione riservata SuperAdmin (pulsante con icona scudo) è ora più evidente: colore ambra e bordo gold, per distinguerlo visivamente dai bottoni standard e ridurre errori di accesso.

?Domande Frequenti (FAQ)
Perché non posso vedere tutti gli utenti nella lista?
Se sei ADMIN, non vedi gli utenti con ruolo SUPERADMIN. Questa separazione protegge gli account privilegiati. Solo un SUPERADMIN può vedere e gestire tutti gli account, inclusi altri SUPERADMIN.
Posso cambiare lo username di un utente?
No. Lo username è bloccato dopo la creazione (evidenziato con bordo rosso e icona lucchetto). Questo perché lo username è l'identificativo univoco usato per il login e referenziato nei log di sistema. Per “rinominare” un utente, creare un nuovo account e disattivare il vecchio.
Un utente può avere ruoli diversi in workspace diversi?
No. Il ruolo è globale per l'utente e vale per tutti i workspace. Ciò che cambia per workspace sono i moduli abilitati: un utente può avere tutti i moduli attivi nel workspace di produzione e solo i moduli base nel workspace di test.
Come creo un ambiente di test senza toccare i dati di produzione?
Creare un nuovo workspace (dalla scheda utente → “+ Crea nuovo ambiente”). Caricare le Tabelle Normativa e i Dati Demo. Eventualmente nascondere il workspace (visibility_off) per non mostrarlo agli utenti non-SUPERADMIN.
Cosa succede ai documenti se elimino un utente?
I documenti, i soggetti e tutti i dati creati dall'utente non vengono eliminati. Solo l'account utente e le sue configurazioni (moduli, workspace) vengono rimossi. I dati restano nel database del workspace.
Come faccio a obbligare un utente a cambiare password?
Al momento il sistema non ha un flag “forza cambio password al login”. L'ADMIN può resettare la password dell'utente e comunicare quella provvisoria, chiedendo all'utente di cambiarla dal proprio Profilo.
Posso disattivare me stesso?
No. Il pulsante “Disattiva Utente” è disabilitato quando si sta modificando il proprio account. Questo previene il blocco accidentale dell'unico amministratore.
Perché non vedo il ruolo SUPERADMIN nel selettore?
L'opzione SUPERADMIN appare nel selettore ruolo solo se l'utente corrente è SUPERADMIN. Un ADMIN non può assegnare né vedere il ruolo SUPERADMIN.
Come funzionano le notifiche GDPR nella gestione utenti?
Il sistema implementa il principio del minimo privilegio (art. 25 GDPR): ogni utente vede solo i moduli e i dati a cui è autorizzato. L'ADMIN deve configurare i moduli abilitati in modo coerente con le mansioni dell'utente. La conformità GDPR richiede anche una revisione annuale dei profili di accesso (D.Lgs. 196/2003 All. B regola 14).
Perché il caricamento Tabelle Normativa è riservato al SUPERADMIN?
Le Tabelle Normativa (codici SDI, regimi fiscali, nature IVA) sono dati critici che alimentano tutta la fatturazione elettronica. Un caricamento errato potrebbe generare fatture con codici non conformi. Per questo è riservato al SUPERADMIN come misura di sicurezza.
Un utente standard può vedere le statistiche del database?
No. Le statistiche e le operazioni avanzate sui database sono riservate agli ADMIN e SUPERADMIN. Un utente USER o OPERATOR vede solo il proprio profilo e i moduli a lui abilitati.
Come configuro i moduli per un utente che lavora su più workspace?
La configurazione moduli è per utente per workspace. Nella sezione Moduli Abilitati, selezionare l'utente e il workspace desiderato. La configurazione viene salvata indipendentemente per ogni combinazione utente/workspace.
17Audit accessi (LOGIN_OK / LOGIN_FAIL)

Ogni tentativo di autenticazione è persistito nella tabella log_accessi_utente con IP, user-agent, workspace, timestamp.

Eventi tracciati

EventoQuandoDati raccolti
LOGIN_OKAutenticazione riuscitauserId, username, IP, user-agent, workspaceId
LOGIN_FAILPassword errata o utente non trovatousername (se presente), IP, user-agent, details
LOGOUTLogout esplicito (futuro)userId, ora
PWD_CHANGECambio password (futuro)userId, operatore
ROLE_CHANGECambio ruolo (futuro)userId, ruolo vecchio/nuovo, operatore
IP e user-agent sono troncati rispettivamente a 45 e 500 caratteri per evitare record patologici.
18Soft-delete utenti

La cancellazione di un utente non rimuove il record fisicamente: imposta isActive=false + cancellatoIl.

Motivazione

  • Preservare la storia accessi per audit e compliance
  • Mantenere traccia delle modifiche effettuate da quell'utente in passato
  • Evitare broken references su log modifiche di altre tabelle

Ripristino

Solo gli ADMIN possono ripristinare tramite POST /api/utenti/:id/ripristina. Viene riattivato con isActive=true.

Un SUPERADMIN può essere cancellato solo da altri SUPERADMIN. L'utente non può mai cancellare il proprio account.
19Monitoring accessi globale

Endpoint GET /api/utenti/_/accessi-recenti (ADMIN) consente il monitoring degli accessi recenti con filtri.

ParametroValoreEsempio d'uso
eventoLOGIN_OK, LOGIN_FAIL, LOGOUTindividuare tentativi falliti
limitNumero massimo righedefault 200

Integrabile in un cruscotto di sicurezza per rilevare pattern anomali (tentativi falliti consecutivi, IP sospetti, orari inusuali).

Il rate limiting automatico (lock dopo N fail) è pianificato per v 2.3.
20Audit modifiche profilo

Tabella log_modifiche_utente per tracciare cambi di ruolo, email, attivazione, password.

Endpoint: GET /api/utenti/:id/audit-log. Filtra le ultime 100 modifiche per utente specifico.

L'integrazione audit-write su PUT /utenti/:id è attualmente parziale (cattura soft-delete e alcune operazioni esplicite). Completamento programmato sprint di consolidamento.
21RBAC uniformato

Tre ruoli applicati uniformemente su tutti i moduli della piattaforma.

RuoloPrivilegi tipiciMiddleware
SUPERADMINTutto + gestione altri SUPERADMIN + workspacerequireAdmin + ulteriori check
ADMINOperazioni distruttive, bulk, definitivo, stornorequireAdmin
OPERATORELettura + mutazioni standardauthMiddleware

L'uniformità è verificata dalla regressione API: ogni endpoint distruttivo o bulk ritorna 403 se chiamato da utente non-admin.

Riferimento normativo: GDPR art. 32 (misure di sicurezza), OWASP Top 10 A07.
22Rate limiting login

Protezione contro attacchi brute-force: dopo 5 tentativi di login falliti consecutivi per lo stesso username, l'account è bloccato automaticamente per 15 minuti.

Meccanismo

  • Il controllo viene eseguito prima della validazione password sul tentativo di login
  • Si conteggiano i record LOGIN_FAIL consecutivi a partire dall'ultimo LOGIN_OK (o da qualsiasi evento negli ultimi 15 minuti)
  • Al raggiungimento della soglia, il server risponde HTTP 429 Too Many Requests con campo lockedUntil
  • Il blocco genera un evento LOGIN_BLOCKED nel log accessi (monitoraggio centralizzato)

Costanti configurabili

CostanteValore di defaultSignificato
LOGIN_FAIL_THRESHOLD5Tentativi falliti prima del blocco
LOGIN_LOCK_MINUTES15Durata del blocco (minuti)

Esempio risposta 429

{
  "error": "Account bloccato per 15 minuti dopo 5 tentativi falliti. Riprovare più tardi o contattare l'amministratore.",
  "lockedUntil": "2026-04-19T14:35:00.000Z"
}

Sblocco amministrativo

Un ADMIN può sbloccare manualmente un account inserendo un record LOGIN_OK manuale nel database oppure attendendo lo scadere della finestra temporale.

Riferimento: GDPR art. 32 (misure di sicurezza), OWASP Top 10 A07 (Identification and Authentication Failures).
Il rate limiting non sostituisce l'autenticazione a due fattori (2FA/MFA), che è disponibile dalla sezione successiva.
232FA / TOTP (RFC 6238)

Autenticazione a due fattori basata su TOTP time-based one-time password (RFC 6238), compatibile con Google Authenticator, Authy, 1Password, Microsoft Authenticator.

Setup

  1. L\'utente chiama POST /api/2fa/setup → il server genera un secret (base32) e restituisce l\'URI otpauth:// per QR code
  2. L\'utente scansiona il QR con l\'app authenticator
  3. L\'utente chiama POST /api/2fa/verify con il codice a 6 cifre visualizzato → attivazione effettiva
  4. Il server restituisce 10 backup codes (formato XXXX-XXXX) da salvare in luogo sicuro

Endpoint disponibili

MetodoPathDescrizione
POST/api/2fa/setupInizia setup (genera secret + QR URI)
POST/api/2fa/verifyVerifica codice TOTP + attiva + restituisce backup codes
POST/api/2fa/disableDisattiva (richiede codice TOTP O password)
GET/api/2fa/statusStato attuale (attivo + count backup codes restanti)
POST/api/2fa/rigenera-backup-codesRigenera i 10 codici di recupero

Parametri TOTP

  • Algoritmo: HMAC-SHA1 (standard RFC 6238)
  • Periodo: 30 secondi
  • Cifre: 6
  • Window: ±1 step (tolleranza ±30 secondi per drift clock)

Backup codes

  • 10 codici monouso formato XXXX-XXXX
  • Salvati in DB solo come SHA-256 (mai in chiaro)
  • Ogni codice è consumabile una sola volta (rimosso dopo l\'uso)
  • Rigenerazione con /api/2fa/rigenera-backup-codes invalida tutti i precedenti
Implementazione crypto senza dipendenze esterne: Base32 + HMAC-SHA1 + dynamic truncation sono implementati in twofa.routes.js usando solo il modulo crypto di Node.
L\'integrazione con il flusso di login (richiesta codice TOTP dopo password valida) è parziale: il backend espone verificaTotp() come helper ma la richiesta interattiva al login è pianificata v 2.3.
24Refresh token + gestione sessioni

Sistema di refresh token rotation per bilanciare sicurezza (access token brevi) e UX (sessioni lunghe senza richiedere login ripetuto).

Struttura

  • Access token (JWT): TTL 1 ora, contiene id/role/username
  • Refresh token: TTL 30 giorni, stringa random 96 caratteri (48 bytes hex)
  • Persistenza in tabella refresh_tokens: token, userId, issuedAt, expiresAt, revokedAt, replacedBy, IP, userAgent

Endpoint

MetodoPathDescrizione
POST/api/auth/refreshOttiene nuovo access + refresh token (rotation)
POST/api/auth/logoutRevoca il refresh token corrente
POST/api/auth/logout-allRevoca tutti i refresh token dell\'utente
GET/api/auth/sessionsLista sessioni attive (IP, user-agent, issuedAt)

Token rotation (sicurezza)

Quando il client chiama /refresh con il refresh token corrente:

  1. Il server verifica che non sia revocato e non sia scaduto
  2. Revoca il vecchio token con revokedReason='rotated' e replacedBy=<nuovo>
  3. Emette un nuovo refresh token + nuovo access token
  4. Logga evento TOKEN_REFRESH in log accessi

Questo schema permette di rilevare token compromessi: se un attaccante rubà un refresh token e lo usa, l\'utente legittimo al prossimo refresh troverà il suo token revocato.

Auto-disconnessione

Un ADMIN può forzare la disconnessione di un utente da tutti i dispositivi con /api/auth/logout-all: utile in caso di smarrimento credenziali o licenziamento.

Riferimento: OWASP ASVS v4.0 § 3.7 (session management) + GDPR art. 32 (sicurezza del trattamento).
L\'emissione del refresh token al login di /api/auth/login è pianificata v 2.3. Il backend espone emettiRefreshToken() come helper.
25Gerarchia Pacchetti + Profilo + Utente

La visibilità di un modulo viene decisa da tre livelli indipendenti in intersezione:

LivelloDominioChi configuraGranularità
1. Pacchetto (licenza)WorkspaceSUPERADMIN piattaforma7 pacchetti: BASE, FATTURAZIONE, MAGAZZINO, CONTABILITA, CORRISPETTIVI, VENDITE_B2B, SISTEMA_TS
2. Profilo AttivitàWorkspaceAdmin cliente (Dati Aziendali)12 profili: STUDIO_MEDICO, FARMACIA, COMMERCIALISTA, FERRAMENTA...
3. Permesso UtenteUtenteAdmin cliente (Modifica Utente)Toggle per singolo modulo

Regola di intersezione

Il modulo è visibile all'utente se e solo se:

modulo_visibile(utente, workspace, modulo) =
  pacchetto_attivo(workspace, pacchetto_di(modulo))   (livello 1)
  AND profilo_compatibile(workspace.profilo, modulo)  (livello 2)
  AND utente_abilitato(utente.menuConfig, modulo)     (livello 3)

Backend

  • Helper: services/modulo-access.service.js → moduliVisibili()
  • Middleware: richiedeModulo('<moduloKey>') ritorna 403 con messaggio esplicativo
  • API: GET /api/me/moduli-attivi per il frontend
  • API: GET /api/pacchetti/workspace/:wsId/moduli-leciti per Modifica Utente

UI impattate

  1. Admin/Pacchetti (/admin/pacchetti, solo SUPERADMIN): toggle sui 7 pacchetti per workspace. BASE sempre attivo.
  2. Parametri → Dati Aziendali → Profilo Attività: al cambio profilo, un box mostra moduli auto-attivati e moduli nascosti con motivazione.
  3. Modifica Utente → Moduli: i toggle dei moduli bloccati da pacchetto o profilo appaiono disabilitati, barrati, con badge BLOCCATO e tooltip esplicativo.
  4. Sidebar/Topbar: AuthService.isMenuEnabled() applica automaticamente i filtri 1+2 prima del 3.

Tabelle DB

  • pacchetti_workspace: pacchetti attivi per workspace (auditato con attivato_il/da, disattivato_il/da)
  • moduli_catalogo: 25 moduli mappati al pacchetto di appartenenza
  • profili_moduli_preset: per ciascun profilo, quali moduli sono rilevanti e con quale motivazione
Override SUPERADMIN: un SUPERADMIN ignora sia il filtro profilo sia il filtro menuConfig (vede tutto il catalogo). Il filtro pacchetto si applica comunque (se non c'è pacchetto, non c'è modulo).
La modifica del profilo attività NON scollega le impostazioni esistenti: i moduli nascosti spariranno al prossimo login. Modulo BASE (anagrafiche, parametri, utenti, backup, GDPR) resta sempre visibile.