Vai al contenuto

Controllo Accessi (RBAC)

I Tre Ruoli

enum UserRole {
  GLOBAL_ADMIN = 'global_admin',
  TENANT_ADMIN = 'tenant_admin',
  USER         = 'user',
}

Global Admin

Il Global Admin gestisce l'infrastruttura della piattaforma.

Può:

  • Creare e gestire tenant, altri Global Admin, Tenant Admin
  • Gestire configurazioni globali: SMTP globale, storage globale
  • Inviare annunci broadcast a tutta la piattaforma
  • Gestire il sistema ticket/feedback globale
  • Impersonare utenti (solo con consenso esplicito)

Non può:

  • Vedere i dati privati degli utenti — solo metadati e aggregati
  • Impersonare senza il flag isImpersonationConsentGranted attivo sull'utente

Caratteristiche tecniche:

  • tenantId: null — non appartiene a nessun tenant
  • Non può essere creato nel contesto di un tenant

Tenant Admin

Il Tenant Admin amministra un singolo Tenant.

Può:

  • Creare, modificare, disabilitare utenti del proprio Tenant
  • Assegnare e revocare moduli agli utenti del proprio Tenant
  • Configurare SMTP e storage del Tenant
  • Vedere utenti e attività del proprio Tenant

Non può:

  • Vedere dati di altri Tenant
  • Vedere dati privati degli utenti del proprio Tenant (salvo impersonation con consenso)
  • Creare Global Admin

Caratteristiche tecniche:

  • MFA obbligatorio — impostato automaticamente alla creazione
  • requiresPasswordChange: true al primo accesso

User (Utente Base)

L'utente base accede agli strumenti assegnati.

Può:

  • Accedere solo ai moduli assegnati dal Tenant Admin
  • Vedere esclusivamente i propri dati (filtro ownerId: user.id obbligatorio)
  • Configurare SMTP personale e storage personale
  • Attivare il flag supportMode per richiedere assistenza remota
  • Inviare feedback e ticket

Guards (Guardie)

Guard Funzione
JwtAuthGuard Valida JWT e carica utente fresco dal DB
LocalAuthGuard Valida email/password via LocalStrategy
RolesGuard Verifica ruolo via decoratore @Roles()
@Public() Esclude un endpoint dalla verifica JWT

Assegnazione Moduli

I moduli operano su due livelli combinati:

  • Tenant.modules — moduli abilitati per il tenant (il "catalogo" disponibile)
  • User.modules — moduli assegnati al singolo utente

Un utente può accedere solo ai moduli presenti in entrambe le liste. Se il Tenant Admin disabilita un modulo dal tenant, nessun utente di quel tenant può accedervi, indipendentemente dall'assegnazione individuale.


Gerarchia Configurazione Storage/SMTP

Utente  ──→ priorità massima
Tenant
Globale ──→ fallback