++ gruppi: il gruppo sciolto si elimina; il sorvegliante entra con un nome utente dal nome del gruppo
- Sciolto, il gruppo non resta nello storico: si elimina (via sciolto_at;
la migrazione elimina anche quelli gia' sciolti). I territori solo nel
pacchetto tornano in reparto; quelli gia' dati restano ai membri, e
l'assegnazione conserva il nome del gruppo (assegnazioni.gruppo_nome).
- Creando il gruppo non si chiede l'email: users.username dal nome del
gruppo ("Gruppo Zisa" -> gruppo.zisa), users.email facoltativa. Login con
"Email o nome utente". Nome del gruppo unico.
- Sciolto il gruppo il nome utente si libera (l'utenza disattivata prende
ex.sorvegliante.<id>). XML: nome utente e gruppo_nome.
- Profilo, testata, cambio password e Utenti mostrano il nome utente dove
manca l'email. Informativa privacy, README, HANDOFF e test aggiornati.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
46
HANDOFF.md
46
HANDOFF.md
@@ -148,19 +148,21 @@ e non vede nient'altro. Scelte dell'utente:
|
||||
- Il sorvegliante: assegna, manda il link (copia/condividi), registra i
|
||||
rientri, apre la piantina, rimanda in reparto i non dati. Gruppi, membri e
|
||||
pacchetti li gestisce **solo l'amministratore**.
|
||||
- Utenza: email e password temporanea da cambiare al primo accesso, **senza
|
||||
- Utenza: password temporanea da cambiare al primo accesso, **senza
|
||||
conferma dell'email** (`User::hasVerifiedEmail()` è vero per il
|
||||
sorvegliante; anche cambiandola dal profilo).
|
||||
sorvegliante). *Dal 20 ottobre: niente email, nome utente dal nome del
|
||||
gruppo — vedi sotto.*
|
||||
- **Togliere il ruolo = sciogliere il gruppo** (`GruppiServizio::sciogli`):
|
||||
non dati in reparto, membri liberi, utenza senza ruolo e disattivata
|
||||
(`users.disattivato_at`: login rifiutato, sessione aperta chiusa da
|
||||
`LimitaSorvegliante`), gruppo archiviato (`sciolto_at`) per lo storico. I
|
||||
territori già dati restano ai membri. Si riparte con un gruppo nuovo.
|
||||
`LimitaSorvegliante`). I territori già dati restano ai membri. Si riparte
|
||||
con un gruppo nuovo. *Dal 20 ottobre il gruppo sciolto si elimina — vedi
|
||||
sotto.*
|
||||
|
||||
Casi aggiunti di mio, da far confermare all'utente:
|
||||
- Un ex sorvegliante può guidare un gruppo nuovo: `crea()` **riattiva** la
|
||||
sua utenza disattivata (un proclamatore, un'utenza: `users.proclamatore_id`
|
||||
è unico), con email e password temporanea nuove.
|
||||
è unico), con nome utente e password temporanea nuovi.
|
||||
- `Proclamatore::anonimizza()` anonimizza anche l'utenza dell'ex sorvegliante
|
||||
(nome, email, password, ruoli).
|
||||
|
||||
@@ -177,10 +179,33 @@ Decisioni successive dell'utente (20 ottobre 2026):
|
||||
territori); nel cestino esce dal gruppo.
|
||||
- **Dettagli nel profilo**: la scheda del proclamatore (`ProclamatoreShow`)
|
||||
mostra il gruppo che guida con i numeri (`GruppoServizio::riepilogo()`),
|
||||
l'utenza (email solo all'amministratore, password temporanea o no, ultimo
|
||||
accesso dal registro), oppure il gruppo di cui è membro, e i gruppi sciolti
|
||||
che ha guidato. Il *Profilo* del sorvegliante mostra il suo gruppo con gli
|
||||
stessi numeri e "Torna al mio gruppo".
|
||||
l'utenza (nome utente solo all'amministratore, password temporanea o no,
|
||||
ultimo accesso dal registro), oppure il gruppo di cui è membro. Il
|
||||
*Profilo* del sorvegliante mostra il suo gruppo con gli stessi numeri e
|
||||
"Torna al mio gruppo".
|
||||
- **Il gruppo sciolto non resta nello storico**: `sciogli()` lo elimina
|
||||
(colonna `sciolto_at` tolta dalla migrazione `2026_10_20_000020`, che
|
||||
elimina anche i gruppi già sciolti). I territori solo nel pacchetto tornano
|
||||
in reparto (conferma esplicita dell'utente); quelli già dati restano ai
|
||||
membri come assegnazioni qualsiasi. Sulla traccia delle assegnazioni
|
||||
l'utente non si è espresso: ho tenuto la scelta che non perde dati, il
|
||||
nome del gruppo copiato sull'assegnazione (`assegnazioni.gruppo_nome`,
|
||||
"via gruppo …" in registro e scheda territorio). Toglierlo è un attimo, se
|
||||
lo chiede. Dopo lo scioglimento si torna all'elenco dei gruppi; nella
|
||||
scheda del proclamatore non c'è più "In passato sorvegliante di".
|
||||
- **Nome utente al posto dell'email**: creando il gruppo non si chiede
|
||||
l'email; `GruppiServizio::nomeUtente()` ricava `users.username` dal nome
|
||||
del gruppo (`Str::slug` con il punto: «Gruppo Zisa» → `gruppo.zisa`,
|
||||
numero in coda se già preso; mai una chiocciola). `users.email` è diventata
|
||||
facoltativa. Il login ha un solo campo, "Email o nome utente"
|
||||
(`LoginController`: con la chiocciola cerca l'email, senza il nome utente,
|
||||
in minuscolo). Dove si mostrava l'email dell'utente ora c'è
|
||||
`User::identificativo` (email, o nome utente). Il profilo del sorvegliante
|
||||
mostra il nome utente e non chiede l'email. Il nome del gruppo è unico.
|
||||
Sciolto il gruppo, il nome utente si libera e l'utenza disattivata prende
|
||||
`ex.sorvegliante.<id>` (l'anonimizzata `anonimo.<id>`): resta riconoscibile
|
||||
per l'import XML, che individua gli utenti per email o, senza, per nome
|
||||
utente. Un gruppo con `<sciolto_at>` in un XML vecchio non si importa.
|
||||
- **Anche i membri si segnalano**: `Proclamatore::gruppo_etichetta`
|
||||
("Gruppo Zisa" / "Sorvegliante del gruppo Zisa") come badge nell'elenco
|
||||
(più il filtro *In un gruppo di servizio*, `filtroStato=gruppo`) e in testa
|
||||
@@ -214,7 +239,8 @@ Dove sta:
|
||||
- La voce di menu "Il mio gruppo" guarda il **ruolo**, non `@can`:
|
||||
l'amministratore passa ogni `@can` (`Gate::before`).
|
||||
- XML: si esportano e reimportano gruppi, membri, pacchetto, provenienza delle
|
||||
assegnazioni e il legame utenza ↔ proclamatore.
|
||||
assegnazioni (id e nome del gruppo), nome utente e legame utenza ↔
|
||||
proclamatore.
|
||||
- Informativa privacy aggiornata (utenza del sorvegliante, gruppo tra i dati
|
||||
del proclamatore).
|
||||
- L'azzeramento dell'applicazione (*Zona pericolosa*) cancella anche i gruppi.
|
||||
|
||||
Reference in New Issue
Block a user