Vai al contenuto

Pannello di amministrazione

Il backend (backend/) è il pannello di amministrazione. Ha sessione e cookie separati dal frontend (advanced-backend, _identity-backend, _csrf-backend) e usa gli stessi fogli di stile tramite SharedUiAsset, con in più le classi admin-* di backend/web/css/admin.css.

Chi entra

Ogni sezione estende backend/controllers/AdminController, che ammette solo chi ha uno di ADMIN_ROLES: i ruoli admin e superAdmin o il permesso admin.panel, che si può concedere anche con un ruolo globale personalizzato. Le azioni che toccano le persone (ruoli, stato degli account, password) sono riservate al super amministratore (isSuperAdmin()).

Incoerenza nota

backend/controllers/SiteController (login e pagina iniziale) accetta solo admin e superAdmin. Chi ha soltanto admin.panel da un ruolo personalizzato supera AdminController, ma al login viene disconnesso.

Anche nel pannello un team è visibile solo ai suoi membri: teamScope(), boardScope() e taskScope() limitano le query ai team di TeamVisibility::teamIds() ed escludono sempre gli spazi personali. Il ruolo globale non basta a vedere un team altrui; serve essere fra i teamOverseers. I tre metodi delegano a common/services/AdminScope, lo stesso che usa l'API di amministrazione.

Il pannello anche dall'API

Quasi tutto il pannello ha un equivalente in /v1/admin/* (api/controllers/v1/AdminController), con le stesse regole: stesso accesso (ADMIN_ROLES), stesse operazioni riservate al super amministratore, stessi team visibili. Da lì passano i tool di amministrazione del connettore MCP. Per non duplicare la logica, ciò che stava nei controller e nei modelli del backend è in common:

Cosa Dove
Team, bacheche e task visibili common/services/AdminScope
Numeri della dashboard common/services/AdminStats
Stato e ruolo globale degli account common/services/UserAdministration
Ricerca utenti, creazione account, ricerca nel registro common/models/UserSearch, UserCreateForm, AuditLogSearch

Restano solo nel pannello token master, password temporanea, azzeramento della verifica in due passaggi, coda dei log e pagina di sistema. Per mettere nel cestino un team o una bacheca dall'API va ripetuto il nome, come nel modale del pannello.

Sezioni

Voce Controller Cosa si fa Chi
Dashboard DashboardController conteggi aggregati (AdminStats) pannello
Utenti UserController elenco e dettaglio; creazione da modale, stato, ruolo globale, password temporanea, azzeramento della verifica in due passaggi modifiche solo super amministratore
Team TeamController team, membri, creazione bacheche creare ed eliminare team: super amministratore
Ruoli globali RoleController ruoli custom:*, assegnazioni super amministratore
Bacheche BoardController bacheche di tutti i team visibili, archivio eliminare: super amministratore
Tag TagController etichette globali e di bacheca; l'eliminazione è definitiva pannello
Registro operazioni AuditController consultazione ed esportazione CSV super amministratore e overseer
Token master MasterTokenController token API master: creazione, operazioni abilitate, revoca account in masterTokenAdmins
Eliminati definitivamente TrashController elementi svuotati dal cestino, in sola lettura super amministratore
Sistema SystemController ambiente, integrazioni, migrazioni, coda dei log, svuota cache svuota cache: super amministratore

Le voci della barra laterale (backend/views/layouts/_aside.php) seguono le stesse condizioni, così nessuno vede una voce che poi gli risponde 403.

Regole sugli utenti

  • Il super amministratore crea un account dal modale «Nuovo utente» dell'elenco (UserCreateForm): nome utente, email e ruolo globale. La creazione passa da UserRegistration come la registrazione pubblica, quindi l'account nasce attivo, con lo spazio personale, e gli amministratori sono avvisati. La password è temporanea, di 12 caratteri, e si vede una sola volta nella scheda dell'utente creato; nessuna email di benvenuto.
  • Gli utenti non si eliminano: si disattivano.
  • Non si può cambiare il proprio stato né togliersi il ruolo di super amministratore. Queste regole, e quelle sugli account protetti, stanno in UserAdministration: valgono uguali dal pannello e dall'API.
  • Il cambio di ruolo revoca solo i ruoli predefiniti (superAdmin, admin, user): i ruoli di team e quelli personalizzati restano.
  • La password temporanea è di 12 caratteri, si vede una volta, rigenera auth_key (chiude le sessioni "ricordami"), finisce nel registro e avvisa l'utente e gli amministratori. Non si può generare per un account protetto.

Token master

La pagina Token master gestisce i token API non legati a un account (vedi API HTTP). Si crea un token con un nome e le operazioni abilitate, raggruppate per modulo; le operazioni sono lette da api/config/routes-v1.php, quindi una rotta nuova compare da sola. Il valore in chiaro si vede una sola volta. Le operazioni si possono cambiare in seguito; la revoca è definitiva.