Files
videoteca/docs/adr/0009-accesso-admin-e-utenti.md

30 lines
2.4 KiB
Markdown

# 0009 — Accesso: admin = superuser PocketBase, utenti con account
- **Stato**: Sostituito da 0013
- **Data**: 2026-10-11
## Contesto
Requisiti [F-11 e F-12](../01-vision-requisiti.md): per guardare serve un account; solo l'admin (uno solo) aggiunge, modifica ed elimina filmati e categorie. Decisioni dell'utente del 2026-10-11: account creati solo dall'admin, accesso già dall'MVP, admin = superuser.
## Decisione
- **Admin**: l'unico superuser di PocketBase. Non è un ruolo applicativo: l'interfaccia di gestione (upload, categorie, modifica, eliminazione) richiede il login da superuser.
- **Utenti**: record di una collection di autenticazione, creati solo dall'admin; nessuna registrazione libera (`createRule` bloccata).
- **API rules** su `categories` e `videos`: lettura solo con `@request.auth.id != ""`; creazione, modifica, eliminazione bloccate (`null`) ⇒ solo superuser. Su `progress`: ogni utente solo i propri record ([ADR 0008](0008-progresso-per-utente.md)).
- Il server resta su 127.0.0.1 ([02-architettura.md](../02-architettura.md)); l'accesso vale già in locale.
## Alternative considerate
- Ruolo `admin` su un utente normale: permette più admin, ma l'utente ne vuole uno solo; più superficie e più regole da testare.
- Lettura libera senza login: scartata dall'utente (F-12).
- Registrazione libera: scartata, gli account li crea l'admin.
## Conseguenze
- ✔ Nessun codice di ruoli: le rules con `null` sono il meccanismo nativo.
- ✔ Pochissime regole da testare.
- ✘ L'admin non può guardare "come utente" con lo stesso account: i superuser ignorano le rules e non sono utenti della collection; per testare la vista utente serve un account utente.
- ✘ Il frontend deve gestire due login distinti (utente e superuser), da verificare in M1.
- Da verificare in M0/M1: nome e comportamento della collection di autenticazione utenti e del superuser nella versione fissata (la pagina collections non lo specifica); durata del token; reset password creata dall'admin.
## Fonti
- https://pocketbase.io/docs/api-rules-and-filters/ (consultata 2026-10-11): le rules sono ignorate per i superuser; `null` = solo superuser (default); stringa vuota = chiunque; `@request.auth.id != ""` = utente autenticato.
- https://pocketbase.io/docs/collections/ (consultata 2026-10-11): `_superusers` citata solo per la gestione delle collection; esistenza di una collection `users` predefinita e registrazione libera **non** confermate.