Sostituisco l'admin per nome con un login vero (account Strapi)

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>
This commit is contained in:
2026-08-28 16:17:05 +02:00
co-authored by Claude Sonnet 5
parent 142a7fbaa9
commit c2667b3bfe
10 changed files with 235 additions and 40 deletions
-7
View File
@@ -76,10 +76,3 @@ export function formatData(iso: string) {
const d = new Date(iso + "T00:00:00");
return d.toLocaleDateString("it-IT", { weekday: "short", day: "2-digit", month: "long" });
}
/** Referenti che possono gestire eventi e sollecitare le risposte. */
export const adminNomi = ["Ivan Cacciari", "Iacopo Ricci", "Cristina Titone"];
export function isAdmin(giocatore: Pick<Giocatore, "nome"> | null | undefined) {
return Boolean(giocatore && adminNomi.includes(giocatore.nome));
}