Gestione Utenti
Elenco utenti, creazione, ruoli, permessi, moduli abilitati, workspace e sicurezza
Riferimenti normativi
- GDPR (Reg. UE 2016/679) art. 5 c.1 lett. f — Integrità e riservatezza: I dati personali devono essere trattati con misure tecniche e organizzative che garantiscano sicurezza adeguata, inclusa la protezione da accessi non autorizzati. Il sistema di ruoli e permessi implementa il principio del minimo privilegio.
- GDPR art. 25 — Protezione dei dati fin dalla progettazione: Il trattamento deve limitare per impostazione predefinita l'accesso ai soli dati necessari per la specifica finalità. I moduli abilitati per utente/workspace implementano questo principio.
- GDPR art. 29 — Trattamento sotto l'autorità del titolare: Chiunque abbia accesso ai dati personali può trattarli solo su istruzione del titolare. La configurazione dei ruoli (USER, OPERATOR, ADMIN) definisce le istruzioni operative per ciascun soggetto autorizzato.
- GDPR art. 32 — Sicurezza del trattamento: Obbligo di implementare misure adeguate tra cui: pseudonimizzazione, cifratura, capacità di assicurare riservatezza, integrità e disponibilità, capacità di ripristino. Il sistema di autenticazione e il controllo accessi per moduli soddisfano questi requisiti.
- D.Lgs. 196/2003 (Codice Privacy) art. 33-34 — Misure minime: Sistema di autenticazione informatica (credenziali individuali), sistema di autorizzazione (profili di accesso differenziati), aggiornamento periodico dei profili (almeno annuale).
- Provv. Garante Privacy 27/11/2008 — Amministratori di sistema: Obbligo di individuare nominativamente gli amministratori di sistema, verificarne l'operato almeno annualmente e registrare gli accessi logici. I ruoli ADMIN e SUPERADMIN corrispondono a questa figura.
- D.Lgs. 82/2005 (CAD) art. 64 — Identità digitale: I sistemi informatici pubblici e privati devono garantire l'identificazione certa degli utenti. Il sistema di login con username/password individuali soddisfa questo requisito.
- Art. 615-ter Codice Penale — Accesso abusivo a sistemi informatici: L'accesso non autorizzato a sistemi protetti è reato penale. Il sistema di ruoli e permessi documenta chi è autorizzato a fare cosa, tutelando sia l'azienda sia gli utenti.
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
La schermata principale mostra tutti gli utenti in una lista con le seguenti informazioni:
| Colonna | Contenuto |
|---|---|
| Avatar | Iniziali dell'utente con colore basato sul ruolo |
| Nome | Nome e cognome completi |
| Username | Formato @username. Accanto compare, in blu, l'amministratore che ha creato l'account, es. @Utente (@Giuseppe.Modugno) (agg. 2026-07) |
| Database | Badge con nome del workspace attivo (Principale o nome workspace) |
| Ruolo | Badge colorato con icona (security, shield, person, support_agent) |
| Stato | Pillola: Attivo (verde) o Inattivo (grigio) |
| Azioni | Pulsante elimina e freccia per accedere al dettaglio |
In alto: contatore utenti totali e utenti attivi. Pulsante + Nuovo per creare un nuovo utente.
- Dall'elenco utenti, premere + Nuovo Utente.
- Compilare il campo Username (obbligatorio, identificativo univoco per il login).
- Inserire la Password (obbligatoria, minimo 6 caratteri) e la Conferma password (deve corrispondere).
- Selezionare il Ruolo nella griglia con 4 opzioni:
- USER — Utente standard (default)
- OPERATOR — Operatore
- ADMIN — Amministratore
- SUPERADMIN — Super Amministratore (visibile solo ai SUPERADMIN)
- Premere Salva. L'utente viene creato e appare nell'elenco.
- Dopo la creazione, aprire l'utente per completare il profilo: nome, cognome, email, workspace, moduli abilitati.
| Ruolo | Icona | Accesso | Può gestire |
|---|---|---|---|
| USER | person | Solo consultazione base e moduli abilitati | Solo il proprio profilo |
| OPERATOR | support_agent | Operatività completa sui moduli abilitati | Solo il proprio profilo |
| ADMIN | shield | Tutti i moduli + gestione utenti, parametri, tabelle | Utenti USER e OPERATOR. Non può modificare altri ADMIN o SUPERADMIN. |
| SUPERADMIN | security | Accesso totale al sistema | Tutti gli utenti. Gestione workspace, database nascosti, backup, ripristino, eliminazione database. |
Differenze chiave ADMIN vs SUPERADMIN
| Operazione | ADMIN | SUPERADMIN |
|---|---|---|
| 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 | ✔ | ✔ |
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 | Quelle del catalogo del ruolo (32 ADMIN, 30 USER, 25 OPERATOR), ridotte ai pacchetti che l’azienda ha: l’elenco è in 4c |
| 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 |
| Di partenza | Tutti i privilegi a off (vanno assegnati esplicitamente) | Quelli di serie del ruolo, fissati quando nasce l’azienda (non tutti accesi: vedi 4c). Un permesso che in quell’azienda non è mai stato scritto vale spento |
| Bypass | SUPERADMIN e ADMIN bypassano sempre i controlli di privilegio | Solo SUPERADMIN bypassa: anche l’ADMIN passa solo dai permessi accesi per il suo ruolo |
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.
| Privilegio | Cosa abilita |
|---|---|
PRODUCTION_MANAGER |
Creare e modificare distinte; creare ordini di produzione a mano e correggere la testata di quelli ancora PIANIFICATI; avviare, completare, annullare ordini; dal piano MRP creare l’ordine a fornitore di una proposta; applicare ECO; ripristinare elementi dal cestino produzione. Per creare, correggere e completare gli ordini serve anche che il ruolo abbia acceso il permesso Completare ordini di produzione. Cancellare un ordine resta dell’amministratore. |
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 accendere o spegnere per l'intero workspace e l'intero ruolo le azioni del
catalogo. Esempio: nel workspace "Studio Bianchi" il SUPERADMIN decide che gli ADMIN non possano eseguire backup
manuali; basta togliere il segno di spunta a Lanciare backup manuali (backup.esegui): la modifica
vale per tutti gli ADMIN di quel workspace presenti e futuri. Allo stesso modo si accende a tutti gli
utenti standard, per esempio, Vedere costi e margini.
I permessi coprono documenti, anagrafiche e privacy, catalogo e listini, magazzino, corrispettivi, scadenze, banca e prima nota, persone, commesse, report, produzione, cestino, registro e backup: l’elenco completo è nella sezione 4c. Un’azienda nuova nasce con i permessi di serie di ogni ruolo, e non sono tutti accesi: quelli che riguardano costi, commesse, persone e privacy nascono spenti agli utenti standard e agli operatori, e così Completare ordini di produzione, Approvare/respingere ECO (e, per l’utente standard, le note e la stampa di bolle ed etichette dei lotti). Quando il SUPERADMIN adatta un’azienda a un pacchetto (per esempio la Produzione), questi permessi restano spenti a utenti e operatori come in un’azienda nuova: si accendono a mano dal pannello.
Come si combinano (regola pratica)
Esempio — completare un ordine di produzione:
- L'utente deve avere il privilegio individuale
PRODUCTION_MANAGER(o essere ADMIN/SUPERADMIN). - Il permesso del suo ruolo
produzione.ordini.completadeve essere abilitato in quel workspace. - Deve fornire la firma elettronica (password) richiesta dal flusso.
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.
Questi sono i permessi che si accendono e si spengono nella scheda Permessi di Aziende & Licenze, con il nome che si legge lì. Ogni ruolo ha il suo elenco: la colonna Ruoli dice in quali compare. Un permesso che non compare nell’elenco di un ruolo, per quel ruolo è spento (salvo i permessi che l’amministratore ha di serie senza vederli nell’elenco, come creare ed emettere documenti).
Nella scheda si vedono solo i permessi dei pacchetti che l’azienda ha: senza Prenotta, per esempio, quelli delle camere non compaiono.
| Permesso | Ruoli | Da sapere |
|---|---|---|
| Utenti, azienda e sicurezza | ||
Creare nuovi utenti utenti.crea | Amministratore | |
Disattivare/riattivare utenti utenti.disabilita | Amministratore | |
Spostare utenti nel cestino utenti.cestino | Amministratore | |
Modificare parametri azienda parametri.modifica | Amministratore | |
Ripristinare elementi dal cestino cestino.ripristina | Amministratore | |
Consultare i log di audit audit.consulta | Amministratore | |
Lanciare backup manuali backup.esegui | Amministratore | |
| Anagrafiche e privacy | ||
Consultare le anagrafiche (scheda, note, informativa privacy) soggetti.consulta | Amministratore, Utente, Operatore | Senza, l’elenco e la scheda delle anagrafiche non si aprono e la pagina dice perché; neanche le note attaccate alle anagrafiche si leggono. Di serie acceso ai tre ruoli. |
Creare e modificare anagrafiche soggetti.crea_modifica | Utente | |
Importare anagrafiche da file soggetti.modifica | Amministratore | |
Gestire la privacy: registrare, revocare ed esportare i consensi privacy.gestisci | Amministratore, Utente, Operatore | Nelle aziende nuove acceso solo all’amministratore. Registro dei trattamenti, richieste, data breach e registri della pagina GDPR restano comunque dell’amministratore. |
| Documenti e acquisti | ||
Creare documenti documenti.crea | Utente | |
Modificare documenti propri non emessi documenti.modifica | Utente | |
Emettere/confermare documenti documenti.emetti | Utente | |
Spostare documenti nel cestino documenti.cestino | Amministratore, Utente | |
Consultare documenti (read-only) documenti.consulta | Operatore | |
Stampare/esportare PDF documenti stampe.documenti | Utente | |
Consultare e scaricare gli allegati allegati.consulta | Amministratore, Utente | |
Vedere costi e margini (costo d’acquisto, ricarico, margine) costi.vedi | Amministratore, Utente, Operatore | Apre anche il ciclo acquisti: ordini a fornitore, richieste di offerta, fatture passive e import XML, e i loro documenti in Documenti. Senza, quelle voci non compaiono nel menu. Nelle aziende nuove spento a utenti e operatori. |
| Vendite, catalogo e commesse | ||
Gestire catalogo prodotti/servizi catalogo.modifica | Utente | |
Modificare listini e sconti, anche importandoli listini.modifica | Amministratore | |
Stampare i cartellini del prezzo (e provare la bilancia) etichette.stampa | Amministratore, Utente, Operatore | |
Commesse: creare, modificare, chiudere e attaccare documenti commesse.gestisci | Amministratore, Utente, Operatore | Leggere i rendiconti delle commesse chiede invece Vedere costi e margini. Nelle aziende nuove spento a utenti e operatori. |
| Report ed esportazioni | ||
Report di vendita: consultarli (Dashboard Analitica, Statistiche, Funnel, Cash-flow, Top-N) report.consulta | Amministratore, Utente, Operatore | Separato dall’esportazione: si può lasciar guardare i report senza lasciarli scaricare. Spento agli operatori. |
Esportare (CSV): report di vendita, anagrafiche, catalogo, listini, documenti; export al commercialista report.esporta | Amministratore, Utente, Operatore | Spento agli operatori. |
| Incassi, contabilità e persone | ||
Gestire scadenze e pagamenti scadenze.gestisci | Utente | |
Registrare corrispettivi giornalieri corrispettivi.registra | Utente | |
Banca e prima nota: conti correnti, estratti conto, note spese, budget contabilita.gestisci | Amministratore | |
Cancellare registrazioni contabili contabilita.cancella | Amministratore | |
Persone: anagrafica, ore e note spese; acquisire documenti persone.gestisci | Amministratore, Utente, Operatore | |
Persone: approvare le giornate (e togliere l’approvazione) persone.giornate.approva | Amministratore, Utente, Operatore | |
Persone: vedere giornate e note spese di tutti (senza approvarle) persone.tutte | Amministratore, Utente, Operatore | Per chi deve leggere giornate, note spese e riepilogo di tutti senza poterli approvare. Chi approva vede comunque quello che approva. Acceso agli amministratori, spento agli altri. |
| Magazzino e produzione | ||
Registrare movimenti magazzino magazzino.movimenti.crea | Utente, Operatore | |
Eseguire storni di magazzino magazzino.movimenti.storno | Amministratore | |
Gestire pick list / prelievi picking.gestisci | Utente, Operatore | |
Approvare/respingere ECO produzione.eco.approva | Amministratore, Utente, Operatore | Insieme al privilegio Responsabile qualità: a un responsabile qualità che non è amministratore si dà accendendolo al suo ruolo. Nelle aziende nuove spento a utenti e operatori. |
Completare ordini di produzione produzione.ordini.completa | Amministratore, Utente, Operatore | Insieme al privilegio Responsabile di produzione serve anche a creare ordini a mano e a correggere la testata dei PIANIFICATI. Per dare queste cose a un responsabile di produzione che non è amministratore si accende al suo ruolo. Spento a utenti e operatori in tutte le aziende, nuove ed esistenti. |
Consultare ordini (read-only) produzione.ordini.consulta | Utente, Operatore | |
Avviare/chiudere fasi propri ordini produzione.fasi.avvia_completa | Utente, Operatore | |
Registrare test qualità quality.test.registra | Utente, Operatore | |
Stampare bolle e etichette lotto stampe.bolle_etichette | Amministratore, Utente, Operatore | Spento all’utente standard: si accende dal pannello. |
Aggiungere note/commenti note.crea | Utente, Operatore | Di serie acceso all’operatore e spento all’utente standard, che vede le note ma non le scrive finché non lo si accende. |
| Moduli dedicati | ||
Field Service: gestire impianti, interventi e contratti interventi.gestisci | Utente | |
Field Service: eseguire e firmare interventi in campo interventi.esegui | Utente, Operatore | |
F-Gas: gestire comunicazioni Banca Dati e registro apparecchiature fgas.gestisci | Utente | |
Prenotta: consultare camere, planning e soggiorni; crearli e modificarli; check-in e check-out; tariffe; canali di vendita; Alloggiati Web e ISTAT camere.* | Amministratore, Utente, Operatore | Sei permessi distinti, uno per ciascuna di queste cose. |
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
| Campo | Icona | Note |
|---|---|---|
| Username | lock | Bloccato dopo la creazione (non modificabile). Bordo rosso per evidenziare. |
| Validazione formato email | ||
| Nome | face | Max 50 caratteri |
| Cognome | draw | Max 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)
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.
Cambiare la propria password
- Accedere al proprio Profilo dalla topbar.
- Nella sezione “Sicurezza”, inserire la password attuale (per verifica identità).
- Inserire la nuova password (minimo 6 caratteri).
- Inserire la conferma (deve corrispondere).
- Premere Salva Modifiche.
Reset password di un altro utente (solo ADMIN)
- Aprire la scheda dell'utente dall'elenco.
- Premere “Reset Password”.
- Si apre una modale: inserire la nuova password e la conferma.
- Non serve la password attuale dell'utente (l'ADMIN è autorizzato al reset).
- Premere Salva Password.
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:
- Nel selettore “Seleziona utente”, scegliere l'utente da configurare.
- Sotto, attivare le checkbox dei workspace a cui l'utente deve avere accesso.
- I workspace contrassegnati con lucchetto sono riservati al SUPERADMIN.
- I workspace con icona occhio barrato sono nascosti (visibili solo ai SUPERADMIN).
- Le modifiche vengono salvate automaticamente alla selezione.
Creare un nuovo workspace
Nel dropdown workspace, selezionare l'opzione “+ Crea nuovo ambiente”. Viene creato un database completo di tutte le tabelle, pronto per essere configurato.
Copia dati di configurazione
Nel dialog di creazione si scelgono le tabelle di configurazione da copiare dall'ambiente principale. Tutte le voci sono ora pienamente funzionanti:
- Sempre copiate (obbligatorie): Tipi Pagamento, Condizioni Pagamento, Tipi Documento, Utenti e Ruoli (con i loro permessi; il workspace primario di ogni utente resta invariato)
- Comuni Italiani: anagrafica completa (~9.900 voci con comuni soppressi, stati esteri e CAP) per autocomplete luogo di nascita e calcolo codice fiscale; se non selezionata viene comunque caricata da CSV
- Catalogo Prodotti: copia le voci di catalogo con le categorie (i fornitori, che sono anagrafica, non vengono copiati)
- Parametri Configurazione: copia i dati azienda/fiscali; le tabelle di appoggio da cui dipende (regimi, formati, casse, nature IVA...) vengono incluse automaticamente
- Le voci non più disponibili appaiono disabilitate con l'etichetta “(non disponibile)”
Il nuovo ambiente nasce inoltre con: menu completo (con la sua licenza interna: Base, Fatturazione e Contabilità, tutti i moduli accesi, riducibili poi da Aziende & Licenze), le 14 causali rettifica standard di magazzino, la configurazione MRP e le tabelle/colonne di tutti i moduli v2.2 — in passato alcuni moduli davano “Errore server” sui workspace appena creati.
La sezione “Moduli Abilitati” consente di personalizzare quali voci del menu laterale sono visibili per ciascun utente in ciascun workspace.
Come configurare
- Nella scheda utente, scorrere alla sezione “Moduli Abilitati”.
- Selezionare l'utente e il workspace di riferimento dai dropdown.
- I moduli sono raggruppati in 8 categorie (accordion espandibile).
- Per ogni categoria: toggle per nascondere l'intero gruppo dal menu, e pulsante per abilitare/disabilitare tutti i moduli del gruppo.
- Dentro ogni gruppo: toggle individuale per ogni modulo con nome, icona e descrizione.
- Le modifiche vengono salvate automaticamente.
Toggle bloccato o sbloccato — come capire perché
Ogni toggle può trovarsi in uno di questi stati:
| Stato | Significato | Esempio |
|---|---|---|
| 🔒 Bloccato | Il 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. |
| ✅ Libero | L'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. |
Categorie di moduli
| Gruppo | Moduli inclusi |
|---|---|
| Ciclo Attivo / Passivo | Soggetti, Catalogo, Documenti, Scadenzario, Agenti, Spedizioni, Lettere intento, Listini, Sconti, CRM, RDO, Valutazione fornitori (13 moduli) |
| Magazzino | Giacenze e movimenti |
| Contabilità | Piano dei Conti, Prima Nota, Registro IVA, Aliquote IVA (4 moduli) |
| Reporting | Dashboard analitica, Statistiche catalogo |
| Integrazioni | SDI, Corrispettivi (2 moduli) |
| Vendita al banco | Cassa, Resi, Documenti emessi, Chiusura giornaliera, Casse e registratori telematici (5 moduli) |
| Documentale | GDPR, Audit trail, Import/Export (3 moduli) |
| Impostazioni | Utenti, 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”: resta dai tempi in cui i moduli non pronti comparivano in grigio nel menu. Oggi quei moduli sono nascosti comunque, quindi l'opzione non cambia niente
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.
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.
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:
- Scegli archivio: Soggetti (anagrafe) o Catalogo (articoli)
- Scegli categoria: es. Clienti, Fornitori, Agenti, Farmaci, Articoli, Kit, ecc.
- 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-TD29)
- 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.
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 eliminare | Chi può eliminare | Conferma richiesta |
|---|---|---|
| USER / OPERATOR | Qualsiasi ADMIN | Conferma semplice |
| ADMIN | ADMIN o SUPERADMIN | Digitare il nome completo dell'utente per confermare |
| SUPERADMIN | Solo SUPERADMIN | Digitare il nome completo dell'utente per confermare |
La pagina /admin/sistema non c’è più. Raccoglieva funzioni che con il tempo
erano diventate doppioni o avevano trovato una casa migliore: è stata sciolta e ogni
riquadro è andato dove lo si usa. Chi aveva l’indirizzo salvato finisce su
Aziende & Licenze.
| Riquadro | Dove si trova adesso |
|---|---|
| Permessi per Ruolo | Aziende & Licenze » Permessi. L’azienda è quella scelta in cima alla pagina: qui si sceglie solo il ruolo. Il cambiamento finisce nel Registro modifiche, con i permessi di prima e quelli di dopo. |
| Svuota archivi ed elimina | Aziende & Licenze » Azienda, in fondo. Agiscono sull’azienda scelta in cima. L’eliminazione chiede due conferme e il server fa da sé una copia prima di procedere. |
| Invio email da amministratore | Parametri » Configurazione Email, sotto la prova della connessione: si chiama «Invia un’email adesso» e usa lo SMTP configurato lì sopra. |
| Audit Log | Registro modifiche (Aziende & Licenze). Era un secondo registro, vuoto in quasi tutte le aziende; lo storico è stato portato in quello vero. |
| Nuova Azienda | Aziende & Licenze » Associazione Aziende, in cima: lì dice anche quante aziende si possono ancora creare. |
| Backup & Ripristino | Barra laterale, sotto Amministrazione: era già lì. |
| Versione Applicazione | Non si scrive più: il numero in alto a destra è quello della build pubblicata, lo stesso dell’app desktop. |
| Cosa vede questo utente? e Pulizia Posizioni Note | Eliminati. Il primo dava risposte sbagliate (leggeva il sistema dei permessi di prima); la seconda la fa da sé il programma a ogni accesso. |
/utenti/modifica/:id) è organizzata in 4 schede:
- Profilo & Workspace — account/anagrafica + database di lavoro
- Privilegi Produzione — visibile solo se per quell'utente la Distinta Base è abilitata
- Permessi del Ruolo — griglia configurabile (mostra placeholder se ruolo è SUPERADMIN o workspace non selezionato)
- Moduli abilitati — accordion per categoria (immutato)
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.
Si preme sulla scritta «Nessun sync» per aprire l’elenco e si sceglie l’azienda di destinazione; per toglierlo si rimette su Nessun sync.
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.
In Associazione Aziende (menu utente), sotto «Ambienti accessibili dall’utente», ogni azienda occupa una riga sola. Sopra l’elenco ci sono i titoli delle colonne, così si capisce a colpo d’occhio che cosa fa ciascun comando.
| Colonna | A che serve |
|---|---|
| Assegna | La spunta: se è accesa, l’utente selezionato vede questa azienda nel cambio ambiente in alto. |
| Azienda | Il nome, e accanto il nome tecnico dell’archivio fra graffe. |
| Sincronizza | Il sync target: l’azienda su cui replicare quello che si genera qui. Si preme sulla scritta per sceglierla. |
| Protezioni | Due pulsanti, descritti qui sotto. Li vede solo un Super Amministratore. |
Le due protezioni
- Lo scudo — azienda riservata al SuperAdmin: gli Amministratori normali non possono lavorarci. Scudo pieno e arancione quando è attiva.
- La persona — azienda nascosta al Super Amministratore Limitato: non la vede negli elenchi e non può entrarci. Icona rossa con la persona sbarrata quando è attiva.
Ogni tentativo di autenticazione è persistito nella tabella log_accessi_utente con IP, user-agent, workspace, timestamp.
Eventi tracciati
| Evento | Quando | Dati raccolti |
|---|---|---|
| LOGIN_OK | Autenticazione riuscita | userId, username, IP, user-agent, workspaceId |
| LOGIN_FAIL | Password errata o utente non trovato | username (se presente), IP, user-agent, details |
| LOGOUT | Logout esplicito (futuro) | userId, ora |
| PWD_CHANGE | Cambio password (futuro) | userId, operatore |
| ROLE_CHANGE | Cambio ruolo (futuro) | userId, ruolo vecchio/nuovo, operatore |
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.
Endpoint GET /api/utenti/_/accessi-recenti (ADMIN) consente il monitoring degli accessi recenti con filtri.
| Parametro | Valore | Esempio d'uso |
|---|---|---|
| evento | LOGIN_OK, LOGIN_FAIL, LOGOUT | individuare tentativi falliti |
| limit | Numero massimo righe | default 200 |
Integrabile in un cruscotto di sicurezza per rilevare pattern anomali (tentativi falliti consecutivi, IP sospetti, orari inusuali).
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.
Tre ruoli applicati uniformemente su tutti i moduli della piattaforma.
| Ruolo | Privilegi tipici | Middleware |
|---|---|---|
| SUPERADMIN | Tutto + gestione altri SUPERADMIN + workspace | requireAdmin + ulteriori check |
| ADMIN | Operazioni distruttive, bulk, definitivo, storno | requireAdmin |
| OPERATORE | Lettura + mutazioni standard | authMiddleware |
L'uniformità è verificata dalla regressione API: ogni endpoint distruttivo o bulk ritorna 403 se chiamato da utente non-admin.
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_FAILconsecutivi a partire dall'ultimoLOGIN_OK(o da qualsiasi evento negli ultimi 15 minuti) - Al raggiungimento della soglia, il server risponde
HTTP 429 Too Many Requestscon campolockedUntil - Il blocco genera un evento
LOGIN_BLOCKEDnel log accessi (monitoraggio centralizzato)
Costanti configurabili
| Costante | Valore di default | Significato |
|---|---|---|
LOGIN_FAIL_THRESHOLD | 5 | Tentativi falliti prima del blocco |
LOGIN_LOCK_MINUTES | 15 | Durata 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.
Autenticazione a due fattori basata su TOTP time-based one-time password (RFC 6238), compatibile con Google Authenticator, Authy, 1Password, Microsoft Authenticator.
Setup
- L\'utente chiama
POST /api/2fa/setup→ il server genera un secret (base32) e restituisce l\'URIotpauth://per QR code - L\'utente scansiona il QR con l\'app authenticator
- L\'utente chiama
POST /api/2fa/verifycon il codice a 6 cifre visualizzato → attivazione effettiva - Il server restituisce 10 backup codes (formato
XXXX-XXXX) da salvare in luogo sicuro
Endpoint disponibili
| Metodo | Path | Descrizione |
|---|---|---|
| POST | /api/2fa/setup | Inizia setup (genera secret + QR URI) |
| POST | /api/2fa/verify | Verifica codice TOTP + attiva + restituisce backup codes |
| POST | /api/2fa/disable | Disattiva (richiede codice TOTP O password) |
| GET | /api/2fa/status | Stato attuale (attivo + count backup codes restanti) |
| POST | /api/2fa/rigenera-backup-codes | Rigenera 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-codesinvalida tutti i precedenti
twofa.routes.js usando solo il modulo crypto di Node.verificaTotp() come helper ma la richiesta interattiva al login è pianificata v 2.3.Un utente, un posto — e il telefono è a parte
Con lo stesso utente si lavora da un computer alla volta: chi entra chiude la sessione di chi c'era prima, e a quest'ultimo compare «Sei stato disconnesso: qualcuno è entrato con il tuo stesso utente da un altro computer». Le credenziali sono di una persona: due sessioni insieme vogliono dire che gira una password.
Il telefono ha un posto suo. Entrare dall'app sul telefono (per esempio Schedia per gli appuntamenti) non chiude il computer, e il computer non chiude il telefono: si può lavorare dal computer e segnare un appuntamento dal telefono con lo stesso utente. Fra due telefoni vale ancora «uno alla volta».
Fa eccezione il Super Amministratore: può stare collegato da più computer e più telefoni insieme, e un suo nuovo accesso non chiude gli altri. «Disconnetti tutti» e il cambio password chiudono comunque tutte le sue sessioni.
Fanno eccezione anche gli utenti delle demo pubbliche. Alla demo del gestionale si entra tutti con le stesse credenziali, scritte sul sito: con la regola normale il secondo visitatore avrebbe buttato fuori il primo, che si sarebbe ritrovato alla schermata di ingresso con scritto che qualcuno stava usando il suo utente. La regola serve a difendere una password che è di una persona sola; quella della demo è pubblica, quindi non c'è niente da difendere. Le sessioni demo ferme da più di dodici ore vengono chiuse da sé.
- Conta come telefono sia un'app installata sul telefono o sul tablet, sia il sito aperto dal browser di un telefono o tablet (iPhone, iPad, Android). Un iPad con Safari impostato su «sito desktop» si presenta come un Mac e conta come computer.
- In pratica, con lo stesso utente possono essere collegati insieme al massimo un computer e un telefono (o tablet). Dal telefono si può fare tutto quello che si fa dal computer.
- «Disconnetti da tutti i dispositivi» e il cambio password chiudono sia i computer sia i telefoni.
Vedere chi è collegato, e staccarne uno
C'è una pagina che elenca le sessioni vive: Aziende & Licenze » Chi è collegato (ci si arriva anche cliccando il gruppetto di iniziali in alto a destra). Per ciascuna si vede la persona, l'azienda, il posto da cui lavora, l'indirizzo di rete e da quanto tempo non dà segni di vita.
Di una sessione non basta sapere quando è nata: una aperta la mattina risulterebbe viva anche se la persona se n'è andata alle nove. Per questo ogni sessione lascia un segno di passaggio, al massimo una volta al minuto, e «collegato» vuol dire che si è mossa negli ultimi cinque minuti.
Da lì si può staccare una sessione sola — il computer sì, il telefono della stessa persona no — e lo stacco è immediato, non alla scadenza del gettone. È cosa diversa da «Disconnetti da tutti i dispositivi», che chiude tutto.
Il dettaglio sta nel manuale di quella pagina.
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
| Metodo | Path | Descrizione |
|---|---|---|
| POST | /api/auth/refresh | Ottiene nuovo access + refresh token (rotation) |
| POST | /api/auth/logout | Revoca il refresh token corrente |
| POST | /api/auth/logout-all | Revoca tutti i refresh token dell\'utente |
| GET | /api/auth/sessions | Lista sessioni attive dell'utente corrente (IP, user-agent, issuedAt) |
| GET | /api/collegati | Le sessioni vive di tutti quelli su cui si ha titolo, con l'ultimo segno di vita |
| POST | /api/collegati/:id/stacca | Chiude UNA sessione, subito |
Token rotation (sicurezza)
Quando il client chiama /refresh con il refresh token corrente:
- Il server verifica che non sia revocato e non sia scaduto
- Revoca il vecchio token con
revokedReason='rotated'ereplacedBy=<nuovo> - Emette un nuovo refresh token + nuovo access token
- Logga evento
TOKEN_REFRESHin 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.
Lo sgancio agisce su due fronti, perché il gettone con cui si lavora è il JWT e non il refresh token:
- tutti i refresh token dell\'utente vengono revocati;
- su
users.sessioni_valide_daviene scritto l\'istante dello sgancio, e ogni JWT emesso prima di quell\'istante viene rifiutato al primo passaggio.
Senza il secondo punto lo sgancio non avrebbe effetto su chi è già collegato: il suo gettone resterebbe buono fino a scadenza, cioè 8 ore — o 30 giorni se aveva scelto «resta connesso».
Lo stesso interruttore scatta al recupero password: cambiare la password ora scaccia davvero chi era dentro con il gettone vecchio.
/api/auth/login emette il refresh token a ogni accesso, ed è da quelli che /api/auth/sessions elenca le sessioni. La sonda di salute resta fuori: entra ogni cinque minuti e non è una sessione.Cosa vede e cosa può usare un utente lo decidono due cose sole:
| Livello | Dominio | Chi configura | Cosa decide |
|---|---|---|---|
| 1. Licenza | Azienda | SUPERADMIN | Quali pacchetti ha l’azienda (Base c’è sempre) |
| 2. Aziende & Licenze | Azienda e utente | SUPERADMIN (colonna dell’azienda); SUPERADMIN o ADMIN d’azienda (colonne degli utenti) | Quali moduli sono accesi, per tutta l’azienda e per ogni utente. Di partenza tutto acceso |
La regola
modulo_acceso(utente, azienda, modulo) =
pacchetto_in_licenza(azienda, pacchetto_di(modulo))
AND ( indispensabile(modulo)
OR ( acceso_per_azienda(modulo)
AND acceso_per_utente(utente, modulo)
AND modulo_da_cui_dipende_acceso ) )
Il profilo attività non blocca più niente: serve solo a proporre le impostazioni di partenza. Un modulo spento è bloccato: la pagina non si apre e le funzioni rispondono «spenta per te su questa azienda». Tutti i dettagli nel manuale Aziende & Licenze.