Le azioni da referente (/scout, /eventi, sollecito presenze, export CSV
scout) non dipendono più da quale giocatore hai scelto di essere in
/benvenuto (chiunque poteva scegliere "Ivan Cacciari" senza password), ma
da un login reale contro l'account admin di Strapi (già usato per gestire
rosa/classifica/storico), verificato via /admin/login.
Nuovi src/lib/admin-auth.ts (loginAdmin/logoutAdmin/useAdminSession, sessione
locale di 8h) e src/components/crapp/AdminLogin.tsx (form riutilizzabile),
raggiungibile da /profilo e dalle schermate riservate. Rimossi adminNomi/
isAdmin da crapp-data.ts.
Resta un limite noto: questo protegge solo la UI dell'app, le tabelle
Supabase coinvolte hanno ancora RLS aperta e restano scrivibili in diretto
con la chiave anon — un fix più ampio (Supabase Auth + RLS reale) è
documentato ma non ancora fatto.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Nuovi moduli src/lib/strapi-client.ts + rosa-base.ts/classifica-csi.ts/
storico-match.ts (hook TanStack Query, cache lunga, nessun polling). L'id
stabile gN diventa il campo `codice` su Strapi, per non rompere le FK verso
pagelle/cacche/mvp/palloni/presenze/azioni scout già chiavate su quella
stringa. isAdmin ora prende il Giocatore invece di un id, così non dipende
più dal roster. Rifattorizzati di conseguenza tutti i punti che importavano
`giocatori`/`classifica`/`storicoMatch` come array sincroni (componenti,
hook, due route server) per usare gli hook o un parametro esplicito.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>