Session hardening: / and /admin now respond with Cache-Control: no-store, and
both pages re-derive their auth state on pageshow (event.persisted) as a
safety net against bfcache showing a stale logged-in/out view across
back/forward navigation. The user page also syncs logout across tabs via the
storage event, since localStorage is shared but in-memory JS state isn't.
Password recovery: admin gets a "Reset" button per user (POST
/admin/users/{id}/reset-password) that generates and sets a new password,
shown once — passwords are Argon2-hashed and can never be recovered, only
replaced. Users get self-service password change (POST
/users/me/change-password, requires the current password) under a new
Profilo tab, alongside read-only account info (username, address, balance,
join date).
Round display robustness: the user dashboard now refreshes immediately on
tab visibility change (background tabs get their timers throttled hard),
shows an explicit "connessione persa" state after repeated failed polls
instead of silently freezing on stale data, and polls faster both right when
the countdown hits zero and through the gap where the round is past its
deadline but still waiting for in-flight bets to confirm before the server
actually closes it.
4.7 KiB
Guida utente
Come usare PLM Lottery dall'interfaccia web (https://<host>/ — vedi
running-the-server.md per come avviare il server).
Registrazione e accesso
Nella schermata iniziale trovi due tab: Registrati e Login.
- Registrati: scegli username e password. Al termine ti viene assegnato automaticamente un indirizzo di deposito personale (derivato server-side) — è per sempre tuo, e riceverai anche eventuali vincite su quello stesso indirizzo.
- Login: se hai già un account, accedi con username e password.
La sessione resta salvata nel browser (fino al logout): non serve rifare login ogni volta che riapri la pagina.
La dashboard
Dopo l'accesso vedi, in ordine:
- Barra di navigazione (fissa in alto) — il tuo username e il bottone "Esci" (logout) nella riga superiore, e i tab delle sezioni subito sotto
- Card del round corrente — sempre visibile, indipendentemente dalla
sezione che stai guardando:
- numero del round e stato (aperto, in chiusura, estrazione in corso, pagamento in corso)
- timer che conta alla rovescia il tempo rimanente prima della chiusura del round
- giocatori: quanti hanno già piazzato una bet in questo round
- jackpot: il totale in PLM che verrà distribuito (70% al vincitore, 30% in fee)
- Tab di navigazione con quattro sezioni:
Estrazione del vincitore
Quando il round chiude, le bet non sono più accettate e la card del round mostra un'animazione ("Estrazione del vincitore in corso…") al posto del timer — la stessa cosa compare nella dashboard di ogni giocatore, non solo la tua. L'animazione resta visibile per almeno un tempo minimo configurabile dall'admin (default 20s), ma può durare più a lungo: il vincitore viene scelto usando l'hash del primo blocco confermato dopo la chiusura, quindi il tempo reale dipende dalla rete (mediamente ~2 minuti, il block time di PLM).
Appena il vincitore è determinato, l'animazione lascia spazio a un messaggio:
- "🎉 Hai vinto! +N PLM" se sei tu il vincitore — l'importo ti verrà accreditato non appena la transazione di payout viene confermata (il round successivo non si apre finché questo non accade)
- "Non hai vinto questa volta." altrimenti
Il messaggio resta visibile fino all'apertura del round successivo.
Avviso di manutenzione
Se l'operatore ha messo in pausa la lotteria per manutenzione, in cima alla pagina (visibile anche prima del login) compare un avviso: il round eventualmente in corso viene comunque completato normalmente, vincitore incluso, ma non ne parte uno nuovo finché la manutenzione non termina. L'avviso sparisce da solo appena l'operatore riprende la lotteria.
Deposito
- Il tuo saldo interno (accreditato dopo 1 conferma di rete) con bottone "Aggiorna" per ricontrollarlo
- Il tuo indirizzo di deposito, con bottone per copiarlo negli appunti
- Il QR code dello stesso indirizzo, comodo per inviare PLM da un altro wallet scansionandolo invece di copiare l'indirizzo a mano
Per depositare, invia PLM (mainnet reale) a quell'indirizzo da un wallet esterno. Il saldo si aggiorna da solo dopo la prima conferma; premi "Aggiorna" per vederlo comparire.
Bet
Un bottone unico: piazza l'ingresso a costo fisso (mostrato in PLM) nel round corrente. Puoi avere al massimo una bet attiva alla volta. Il costo viene scalato dal tuo saldo interno.
Prelievo
Form con due campi:
- Indirizzo esterno: dove vuoi ricevere i PLM
- Importo (PLM): quanto prelevare
Il prelievo viene costruito e trasmesso sulla rete; la fee di rete viene scalata dall'importo richiesto (non si aggiunge separatamente).
Profilo
Due card:
- Profilo: le tue informazioni account — username, indirizzo di deposito, saldo interno e data di iscrizione. Sola lettura, nessuna modifica possibile qui.
- Impostazioni: form per cambiare la password. Serve la password attuale (per conferma) più la nuova password (minimo 8 caratteri, digitata due volte). Non richiede un nuovo login: la sessione attiva resta valida anche dopo il cambio.
Se hai dimenticato la password e non riesci più ad accedere, questa sezione non ti aiuta (serve la password attuale) — contatta l'operatore della piattaforma, che può reimpostartene una nuova dal pannello admin.
Notifiche
Ogni azione (registrazione, login, bet, prelievo, ecc.) mostra un breve
messaggio (toast) verde in caso di successo o rosso in caso di errore, in
basso nella pagina. Se qualcosa non va e il messaggio non basta a capire il
motivo, il dettaglio tecnico è nei log del server (logs/app.log o
data/logs/app.log con Docker) — non nell'interfaccia.